2010-01-29 41 views
6

Estaba buscando un CMS para usar y encontré una revisión en vBulletin 4.0; utilizando alrededor de 200 consultas en una página de carga.¿Cuánta consulta SQL es demasiada consulta SQL?

Estaba entonces preocupado.

más investigación me llevó a otros sitios para ver la cantidad de consultas que están utilizando y me encontré que algunos programas foro como Invision Power Board y PHPBB están utilizando consultas precio tan bajo como 6 u 8.

Actualmente, mi el sitio usa alrededor de 25 a 40 consultas.

¿Debería preocuparme?

Respuesta

11

¡No se preocupe acerca número de consultas.

ser de unos preocupados:

  1. carga de las páginas con demasiada lentitud
  2. El SQL es demasiado complicado de mantener.

Aclaración:

SQL ser demasiado complicada puede provenir tanto de demasiadas consultas o unas pocas consultas que son muy complicados (un montón de combinaciones y sub consultas, etc.).

+2

correcta. Reducir el número de consultas puede ser un buen objetivo, pero si la página funciona bien, no permita que el recuento de consultas le impida trabajar en cosas más importantes. –

+1

Estoy de acuerdo, solo preocúpate por esto cuando se trate de un problema (y espero que los veas). "La optimización prematura es la raíz de todos los males" - Knuth –

+0

1 Nunca había oído que [Knuth] cotización antes. ¡Lo amo! –

9

Si apunta a algo, apunte a 3 lecturas y 1 escrituras por hit HTTP.

Si bien estos son los números arbitrarios (de alguna manera, en realidad están tomados del Advanced PHP Programming), que hacen hincapié en las ideas:

  • el número de SQL ida y vuelta debe ser baja, por debajo del 10 por cierto, por llamada HTTP
  • hay una diferencia entre las lecturas y las escrituras, y la proporción debe favorecer las lecturas. escribe, crea contención

también recordar que no todas las lecturas son iguales: el 3 lecturas deben ser altamente optimizado lee, no escaneos completos de tabla con 4-5 combinaciones externas ...

0

Depende. Cuanto más tocas el db, más carga tienes. Solo algunas cosas para buscar. Si necesita mostrar valores de varias tablas diferentes, probablemente necesite ejecutar varias consultas. Si solo tiene un par de usuarios y sabe que no va a tener muchos datos, probablemente no importe.

Algunas cosas a considerar:

  • ¿Está ejecutando la misma consulta varias veces por carga de la página? Si puedes reutilizar el resultado, hazlo.
  • ¿Está ejecutando una consulta por resultado de otra consulta? Si es así, quizás permita que el DB haga la unión y solo haga una extracción.

Si su página demora demasiado en dar demasiado al DB, consulte memcached.

0

Puede intentar volver a factorizar su código a lo largo del tiempo para disminuir el número de viajes redondos a SQL Server. Una forma de hacer esto podría ser utilizar el almacenamiento en caché.Por ejemplo, los datos que necesita con frecuencia se pueden cargar cuando se inicia la aplicación, y luego se toman de la memoria caché cuando se necesita.

Otro enfoque podría ser de de-normalizar sus datos en tablas que están diseñados específicamente para darle los datos de su sitio necesita en un menor número de consultas.

0

Ten en cuenta también si algunas de esas consultas (aquellos que se utiliza para rellenar valores de búsqueda, por ejemplo) pueden almacenar en caché. De esta forma, si se invoca la misma consulta en varias páginas o cada vez que se pasa de un grupo de registros a otro, la base de datos no se vuelve a ejecutar para ejecutar exactamente la misma consulta. Me acuerdo una vez que estábamos tratando de determinar por qué el sitio era tan lento cuando el procedimiento almacenado que se estaba ejecutando era muy rápido y se encontró utilizando perfiles que se estaba enviando una y otra y otra vez cuando no tiene por qué ser.

0

puede almacenar en caché todas aquellas consultas con vbulletin. Si observa pbnation.com, tiene más de un millón de visitantes por día y solo alrededor de 3-4 consultas por carga de página. Todo lo demás está en caché en memcached.