Foros del Web » Programando para Internet » PHP »

Sobrecarga CPU y concurrencia...

Estas en el tema de Sobrecarga CPU y concurrencia... en el foro de PHP en Foros del Web. Hola gente: Mi pregunta es exclusivamente tecnica. Como sobrecarga menos el CPU y produce menos concurrencia una consulta en una tabla MySQL: Por ejemplo, tengo ...
  #1 (permalink)  
Antiguo 27/12/2004, 10:19
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Sobrecarga CPU y concurrencia...

Hola gente:

Mi pregunta es exclusivamente tecnica.

Como sobrecarga menos el CPU y produce menos concurrencia una consulta en una tabla MySQL:

Por ejemplo, tengo un foro, quiero que al ingresar al subforo "X", haga un while buscando todos los topicos para dicho subforo que me conviene:

ejemplo 1:
Código PHP:
<?
$sql 
mysql_query("SELECT * FROM foro_temas WHERE foro = '$_GET[foro]' ORDER BY fechaultimo DESC"); 
while(
$row=mysql_fetch_array($sql)){
echo 
'aqui el echo con todos los topicos';
}
?>
ejemplo 2:
Código PHP:
<?
$sql 
mysql_query("SELECT * FROM foro_temas ORDER BY fechaultimo DESC"); 
while(
$row=mysql_fetch_array($sql)){
if (
$row[foro] == "$_GET[foro]") {
echo 
'aqui el echo con todos los topicos';
}
}
?>
He probado ambos ejemplos y he notado que el ejemplo 1 es "mas rapido", pero, como lo estoy probando directamente en el hosting, no se como afectan al mismo...

Hay alguna forma de mejorarlo mas aun?
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 27/12/2004, 10:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En general .. todo lo que resuelvas con SQL será más optimo que usar PHP por médio.

Fijate que tu consulta SQL (el ejemplo1) ya ha filtrado un montón de posibles resultados (he de ahí el por qué existe el lenguaje estructurado de consultas SQL). Así que PHP sólo va a trabajar con lo que resulte.

El ejemplo 2 estás dejando a PHP la mayor parte del proceso .. taréas que ya están más optimizadas para realizar a nivel lógico en SQL por parte del motor de BD que uses.

Un saludo,
  #3 (permalink)  
Antiguo 27/12/2004, 11:24
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
cluester, tienes razón, con el segundo ejemplo estoy haciendo trabajar 2 "lenguajes" cuando podría hacerlo todo con SQL.

Otra consulta, puedo optimizar aun más el ejemplo 1?

He leído que si el campo al cual haces el WHERE es un indice (INDEX), el proceso sera mas rápido y consumirá menos recursos, el cierto esto?, de ser asi, debo cambiar el index que tengo para el campo "id" y ponérselo al campo "foro" de mi tabla?

Estoy leyendo bastante sobre el tema de optimización de recursos (por ende, mejora la velocidad) en lenguaje SQL (más precisamente, MySQL) y sobre el tema de los INDEX, dice que todo "depende" de la cantidad de consultas que hagas, ya que un INDEX es rápido para consultar, pero por ejemplo, más lento para actualizar, el tema es que, como ya dije, lo que estoy haciendo yo es un foro por lo que las consultas a la DB son constantes...
__________________
I Love Programming...
  #4 (permalink)  
Antiguo 27/12/2004, 12:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes un buen tutorial sobre optimización de Mysql en (tal vez ya lo has leido):

http://www.mysql-hispano.org/page.php?id=29

Ahí veras como crear indices optimos para acelerar tus consultas SQL.

Un saludo,
  #5 (permalink)  
Antiguo 27/12/2004, 13:51
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Ese tutorial es el que estoy leyendo actualmente, y por el me entraron las dudas y, tambien por el, optimice un poco el rendimiento de mi foro (ahora es un poco más rápido).

Pues ahora puse el campo "foro" como index, no me queda otra que probarlo unos días y ver cual me resulta mejor (digo "unos dias" porque no se si en este momento el servidor esta recién receteado, o no, más vale estar seguro...)

Bueno, saludos y gracias por todo.
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 27/12/2004, 13:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. no todas las optimizaciones son a base de crear indices .. también debes revisar tus consultas SQL que realizas .. (expon el tema en el foro de Base de datos)

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:03.