Foros del Web » Programando para Internet » PHP »

mi base de datos satura mi servidor

Estas en el tema de mi base de datos satura mi servidor en el foro de PHP en Foros del Web. hola buendia queria pedirles que me ayuden tengo una tabla en miservidor con 5millones de resgistros como puedo hacer mas ligera las consultas por que ...
  #1 (permalink)  
Antiguo 11/03/2012, 21:44
 
Fecha de Ingreso: agosto-2010
Ubicación: peru
Mensajes: 115
Antigüedad: 13 años, 7 meses
Puntos: 0
mi base de datos satura mi servidor

hola buendia
queria pedirles que me ayuden
tengo una tabla en miservidor con 5millones de resgistros
como puedo hacer mas ligera las consultas
por que el problema que mi sever load llega 15%
y cuando entro por la consola para ver el estatus del servidor
con el comando top me parece esto: MYSQL USO de CPU 140.00%

Código PHP:
$titleSEO=$_GET[tit];
$id=$_GET[id];
$consulta=mysql_query("SELECT * FROM videos WHERE titulo = '".$titleSEO."' AND idvideo = '".$id."'");
if(
mysql_num_rows($consulta)!=0)
{
        
$re=mysql_fetch_array($consulta);
        
$titulosvid=limpia($re[titulo]);
        
$idevid=$re[id];
        
header("Location: /video/".$idevid."/".$titulosvid."-".$idevid.".html");
        
}
else
{
$sql="INSERT INTO videos (id,titulo,idvideo,hits) VALUES (NULL,'".$titleSEO."','".$id."','0')";
mysql_query($sql);
$head=mysql_query("SELECT * FROM videos WHERE titulo = '".$titleSEO."' AND idvideo = '".$id."'");
         
$re=mysql_fetch_array($head);
        
$titulosvid=limpia($re[titulo]);
        
$idevid=$re[id];
        
header("Location: /video/".$idevid."/".$titulosvid."-".$idevid.".html");
        

  #2 (permalink)  
Antiguo 11/03/2012, 21:57
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: mi base de datos satura mi servidor

Deberías comenzar por solo llamar a los campos que vas a usar, para que llamas a todos los campos en la primera sentencia SQL si solo usas id y titulo....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 11/03/2012, 23:45
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 15 años, 11 meses
Puntos: 9
Respuesta: mi base de datos satura mi servidor

5 millones de registros para una tabla MySQL es un montón.

Asegurate de estar indexando bien la tabla.
Para empezar crearía un index "titulo, idvideo" o si el campo idvideo es más corto, mejor que el index sea: idvideo, titulo y en el WHERE primero ponés idvideo y después titulo.

Igual, vuelvo a repetir, 5 millones es muy groso para MySQL.

Edito:

Además el segundo SELECT lo podés obviar y tomar el id con mysql_insert_id;
sería así:

Código PHP:
Ver original
  1. $idevid=mysql_insert_id();

Exactamente después del INSERT
__________________
Saludos.

Gustavo

Última edición por Gustavo72; 11/03/2012 a las 23:54
  #4 (permalink)  
Antiguo 12/03/2012, 01:51
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: mi base de datos satura mi servidor

5 millones de registros no es tanto como puede parecer, si creas y administras bien los indices MySQL no debe tener problemas en manejar esa cantidad de datos (incluso muchísimo mas), pero obvio ninguna herramienta hace milagros, todo depende como estén creadas las tablas,los indices y las relaciones, claramente también deben estar bien optimizado las sentencias SQL, si haces como tienes en los ejemplos anteriores, recogiendo todos los campos solo para usar 1 o dos de ellos mal vamos...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: ligero, mysqlquery, pesado
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:09.