¿Qué buenos recursos existen para comprender el ajuste de la base de datos en los principales motores y avanzar en su conocimiento en esa área?
La idea de esta pregunta es recolectar la cantidad de recursos que invariablemente existen, de modo que las personas puedan tener una tienda de conocimientos “integral” de los recursos aprobados por pares.
General SQL
PostgreSQL ( wiki ) ( PGsearch )
MySQL
Oráculo
Servidor MS SQL
Sybase SQL Anywhere
JDBC
El propio Tom Kyte de Oracle tiene un depósito fantástico en cada tipo de problema de rendimiento imaginable en http://asktom.oracle.com . Por lo general, se toma el tiempo para recrear problemas específicos y brinda explicaciones muy detalladas.
La respuesta de este tipo a una pregunta no idéntica probablemente sea un buen comienzo.
Características ocultas de MySQL
Y algo para PostgreSQL: “Optimización del rendimiento” en la wiki oficial.
Si está utilizando una base de datos Oracle, esta guía también puede ayudar. http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/toc.htm
Para MySQL, el ajuste de rendimiento ‘biblia’ es High Performance MySQL
Quick PostgreSQL Optimization (optimización de consultas)
Lectura breve, explica muchas cosas bien y ‘funciona’, un ejemplo real que es agradable para aquellos de nosotros que aprendemos mejor de esa manera.
Después de ver el enlace de la wiki a PostgreSQL, pensé que editaría esta publicación con enlaces para documentos de mysql / oracle , en realidad no es una guía de optimización específica, pero ambos son buenos recursos, especialmente el de MySQL. Para la optimización y cualquier otra característica de ajuste.
SO tiene una buena aquí: ¿Cómo interpretas el plan de explicación de una consulta?
Se pueden encontrar muchos buenos consejos específicos de MySQL en http://www.mysqlperformanceblog.com/
Añadiría que además de tener su base de datos teóricamente sintonizada, debe perfilar su aplicación utilizando un generador de perfiles que rastrea las llamadas SQL.
A pesar de sus mejores intenciones, algunas llamadas malas se infiltrarán en su aplicación y, a menudo, causarán el 90% de sus problemas relacionados con el rendimiento.
Si busca referencias de ajuste de rendimiento específicas de SQL Server, hay una gran cantidad de recursos de calidad disponibles en línea, desde documentos técnicos sobre la implementación de tecnologías específicas como particiones, hasta excelentes blogs que detallan instrucciones paso a paso sobre cómo ajustar el rendimiento. plataforma de servidor sql.
El complemento desvergonzado es el siguiente: puede comenzar su investigación revisando el área de ajuste de rendimiento de mi blog personal, o para cualquier requisito / problema específico de SQL Server, no dude en enviarme un correo electrónico.
Recursos de SQL Server
Sitio decente de rendimiento de SQL Server para información específica de MSSQL.
Cómo identificar consultas de ejecución lenta con SQL Profiler es un buen tutorial sobre cómo identificar consultas de ejecución lenta. Esto permitirá que uno centre su atención donde más se necesita.
El capítulo entero Consejos de rendimiento en los documentos de PostgreSQL vale la pena leerlo.
“SQL Performance Tuning” http://books.google.com/books?id=3H9CC54qYeEC&dq=sql+performance+tuning&printsec=frontcover&source=bn&hl=en&ei=1dDoSYmjMOrlnQfX-bSYBw&sa=X&oi=book_result&ct=result&resnum=4 cubre la mayoría de los principales DBMS – cómo escribir consultas SQL multiplataforma de alto rendimiento, etc.
http://www.javaperformancetuning.com/tips/jdbc.shtml
http://www.google.com/search?q=database+tformance+tuning
Aquí hay otro libro de gran prestigio que es neutral en la plataforma:
Sintonización SQL de Dan Tow : generación de planes de ejecución óptimos
Contiene algunos ejemplos específicos para Oracle, MS SQL e IBM DB2, pero las técnicas involucradas también deberían aplicarse a otras plataformas.
Para SQL Server, principalmente uso:
Página de adaptación Perf de Brent Ozar
Página de ajuste de Perf SqlServerPedia
Xaprb es un blog imprescindible para los administradores de bases de datos de MySQL. El autor ha escrito un libro sobre MySQL de alto rendimiento
Para los pocos que trabajan con Sybase SQL Anywhere, solo puedo recomendar el blog de Breck Carter y su SQL Anywhere Studio 9 Guía del desarrollador
Estuve muy feliz cuando vi esta forma de ver rápidamente lo que sucedió con una statement de SQL que estás ajustando bajo Oracle. Cambie la primera instrucción SQL a continuación a su instrucción SELECT y mantenga esa sugerencia allí.
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DUAL; SELECT * FROM TABLE(dbms_xplan.display_cursor( NULL, NULL, 'RUNSTATS_LAST')) ; PLAN_TABLE_OUTPUT ----------------------------------------------------- SQL_ID 5z36y0tq909a8, child number 0 ------------------------------------- SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DUAL Plan hash value: 272002086 --------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | --------------------------------------------------------------------------------------------- | 1 | TABLE ACCESS FULL| DUAL | 1 | 1 | 1 |00:00:00.02 | 3 | 2 | --------------------------------------------------------------------------------------------- 12 rows selected.
Dónde:
Cuando el plan estimado varía de la ejecución real en órdenes de magnitud, usted sabe que tiene problemas.
Para las personas que trabajan con Oracle, recomiendo este enlace ………….
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm
A partir de mis experiencias con el desarrollo de bases de datos Oracle, descubrí que desarrollar un conocimiento sobre cómo usar SQL, cómo funciona y saber qué está disponible (funciones provistas, cláusulas que no sabía existían o mejoraban a partir de la última versión) significa Paso mucho menos tiempo teniendo que ajustar sql.
Comenzaría por comprender cómo funciona la base de datos en un nivel fundamental. Cómo se almacenan los datos en el disco, qué hace la creación de un índice, cómo funciona la optimización del plan de consulta, cómo se almacenan en caché los planes, cuándo caducan los planes en caché.
Si puede confiar todo eso a la memoria, la mayoría de los consejos sobre la sintonización parece obvio.
Aquí hay un gran libro para MSSQL
SQL Server Internals
Para Oracle, Oracle basado en costos: Fundamentals de Jonathan Lewis .
A veces necesita saber cómo solucionar el problema una vez que se identifica. Esto mostrará formas de reemplazar un cursor de mal rendimiento con una operación basada en conjuntos: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them
Era específico de SQL Server, pero muchas de las técnicas también podrían transladarse a otros dbs.
Para Microsoft SQL, recomendaría los libros de Kalen Delaney (y otros) llamados “Inside SQL Server”. Ofrecen una buena visión de las partes internas de SQL Server, lo que permite a los lectores informarse sobre por qué determinadas declaraciones pueden ser más rápidas que otras.
Dentro de SQL Server 7.0
Dentro de SQL Server 2000
Dentro de Microsoft SQL Server 2005
Microsoft SQL Server 2008 Internals
También hay un libro dedicado a la optimización del rendimiento de las consultas de SQL Server 2008: SQL Server Performance Tuning Distilled
También me gustan los blogs de Paul Randal y Kimberly Tripp en SQLSkills.com. Están llenos de consejos SQL sólidos:
El blog de Paul
El blog de Kimberly
Para el ajuste del rendimiento de SQL Server, Itzik Ben-Gan es una leyenda.
Puede encontrar sus muchos libros detallados aquí, todos con su estilo habitual de medición empírica para probar su caso: http://tsql.solidq.com/books/index.htm
Si está buscando la solución más rápida para un problema de t-sql, agregue la palabra ‘itzik’ a su término de búsqueda de Google.
Itzik Ben-Gan ha sido mencionado más de 600 veces aquí en stackoverflow , pero no podía creer que no encontrara ni una sola mención de él aquí en esta pregunta de ajuste de rendimiento.
Como recurso adicional, también puedes encontrar algunos videos de Itzik hablando de cosas relacionadas con el rendimiento aquí en youtube .
Sitios de Oracle
Libros de Oracle