有什么好的资源可以帮助您理解主要引擎上的数据库调优并提高您在该领域的知识?

这个问题的想法是收集始终存在的资源,这样人们就可以有一个“一站式”的好知识商店,同行认可的资源。


通用SQL

本书:SQL性能调优 书籍:SQL调优 书:SQL的艺术 书:重构SQL应用程序 书籍:数据库调优:原理、实验和故障排除技术 使用索引,卢克!—面向开发人员的数据库性能指南

PostgreSQL (wiki)

性能优化 快速PostgreSQL优化 解释分析解释器 PostgreSQL性能提示 本书:PostgreSQL 9.0高性能

MySQL

MySQL的隐藏特性 书籍:高性能MySQL /博客:高性能MySQL 博客:Xaprb (MySQL dba)

甲骨文

如何在StackOverflow上询问Oracle调优问题 如何解释查询的解释计划? Oracle高级调优脚本 Oracle数据库性能调优指南 问汤姆 Oracle数据库SQL参考 书籍:了解Oracle性能 书籍:优化Oracle性能 书籍:解决Oracle性能问题 本书:基于成本的Oracle基础知识

MS SQL Server

SQL Server性能 电子书:高性能SQL Server SO问题:最好的SQL Server性能优化技术是什么? 布伦特欧扎尔的性能调优页 SqlServerPedia的性能调优页面 书:Sql Server 2008内部 如何识别运行缓慢的查询与SQL分析器

Sybase SQL Anywhere

博客:SQL Anywhere 书:SQL Anywhere Studio 9开发人员指南

JDBC

JDBC性能技巧


SO在这里有一个很好的例子:如何解释查询的解释计划?


这家伙对一个不一样的问题的回答可能是一个好的开始。

MySQL的隐藏特性


如果你正在寻找SQL Server特定的性能调优参考,网上绝对有大量高质量的资源,从实现特定技术(如分区)的白皮书,到详细介绍如何一步步调优SQL Server平台的优秀博客。

你可以通过查看我个人博客的性能调优领域来开始你的研究,或者对于任何特定的SQL Server需求/问题,请随时给我发电子邮件。

SQL Server资源


对于MySQL,性能调优的“圣经”是高性能MySQL


“SQL性能调优”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涵盖了大多数主要的DBMS——如何编写高性能的跨平台SQL查询等。


关于PostgreSQL的一些东西:官方维基上的“性能优化”。


SQL Server性能 像样的网站MSSQL具体信息。


在http://www.mysqlperformanceblog.com/上可以找到很多关于MySQL的技巧


Xaprb是MySQL dba的必读博客。作者写了一本关于高性能MySQL的书

对于使用Sybase SQL Anywhere的少数人来说,我只能推荐Breck Carter的博客和他的SQL Anywhere Studio 9开发者指南


PostgreSQL快速优化(查询优化)

简短的阅读,很好地解释了很多事情,并且“工作”是一个真实的例子,这对我们这些学习更好的人来说是很好的。

在看到PostgreSQL的wiki链接后,我想我应该用mysql/oracle文档的链接来编辑这篇文章,这并不是一个真正的优化指南,但这两个都是很好的资源,尤其是mysql的那个。用于优化和任何其他调优功能。


http://www.javaperformancetuning.com/tips/jdbc.shtml http://www.google.com/search?q=database+performance+tuning


下面是另一本备受推崇的、与平台无关的书:

Dan Tow的SQL调优:生成最佳执行计划

包含Oracle、MS SQL和IBM DB2的一些具体示例,但所涉及的技术也应该适用于其他平台。


如果您正在使用Oracle数据库,本指南也可能有所帮助。 http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/toc.htm


对于SQL Server,我主要使用:

布伦特欧扎尔的性能调优页 SqlServerPedia的性能调优页面


Oracle自己的Tom Kyte在http://asktom.oracle.com上有一个很棒的存储库,可以解决各种类型的性能问题。他通常会花时间重现具体问题,并给出非常详细的解释。


我还要补充一点,除了理论上对数据库进行调优外,还应该使用跟踪SQL调用的分析器对应用程序进行分析。

尽管您的初衷是好的,但还是会有一些不好的调用潜入您的应用程序,通常会导致90%的性能相关问题。


书籍:Oracle性能故障诊断(Antognini Christian)


对于使用Oracle的人,我推荐这个链接.............

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm

从我的Oracle数据库开发经验中,我发现,了解如何使用SQL,它是如何工作的,了解哪些是可用的(提供的函数,你不知道存在的子句或从上一个版本增强的子句)意味着我花更少的时间来调优SQL。


http://explain.depesz.com/

帮助你解释PostgreSQL的EXPLAIN ANALYZE输出。

PostgreSQL文档中的整个性能技巧章节都值得一读。


首先,我要了解数据库在基本层面上是如何工作的。数据如何存储在磁盘上,创建索引做什么,查询计划优化如何工作,计划如何缓存,缓存的计划何时过期。

如果您能记住所有这些内容,那么关于调优的大多数建议似乎都是显而易见的。

这是一本关于MSSQL的好书

SQL Server内部结构


当我看到这种快速了解在Oracle下调优的SQL语句发生了什么时,我非常高兴。将下面的第一个SQL语句更改为SELECT语句,并保留该提示。

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.

地点:

E-Rows是估计行数。 A-Rows是实际的行。 A-Time是实际时间。 缓冲区是实际的缓冲区。

如果估计的计划与实际执行存在数量级上的差异,那么您就知道有问题了。


如何用SQL Profiler识别运行缓慢的查询是关于如何识别运行缓慢的查询的一个很好的教程。这将允许一个人将注意力集中在最需要的地方。


对于甲骨文,Jonathan Lewis的《基于成本的甲骨文:基础》。


有时候,一旦发现问题,你需要知道如何解决问题。这将展示如何用基于集合的操作替换表现不佳的游标: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

它是特定于SQL Server的,但许多技术也可以转换到其他dbs。


对于Microsoft SQL,我推荐Kalen Delaney等人写的《SQL Server内部》。他们很好地洞察了SQL Server的内部结构,从而让读者了解为什么特定语句可能比其他语句更快。

SQL Server 7.0内部 SQL Server 2000内情 Microsoft SQL Server 2005内部 Microsoft SQL Server 2008内部代码

还有一本书专门介绍SQL Server 2008查询的性能调优: SQL Server性能调优摘录

我也喜欢Paul Randal和Kimberly Tripp在SQLSkills.com上的博客。它们充满了可靠的SQL建议:

保罗的博客 金伯利的博客


对于SQL Server性能调优,Itzik Ben-Gan是一个传奇。

你可以在这里找到他的许多详细书籍,都是他惯用的实证测量风格来证明他的观点:http://tsql.solidq.com/books/index.htm

如果您正在寻找t-sql问题的最快解决方案,请将“itzik”添加到您的谷歌搜索词中。

Itzik Ben-Gan在stackoverflow上被提到了600多次,但我不敢相信在这个性能调优问题上没有一次提到他。

作为额外的资源,你还可以在youtube上找到一些Itzik谈论性能相关内容的视频。


Oracle网站

2天性能调优指南http://docs.oracle.com/cd/E11882_01/server.112/e10822/toc.htm 性能调优指南http://docs.oracle.com/cd/E36909_01/server.1111/e16638/toc.htm

甲骨文书

Jonathan Lewis的《Oracle核心:dba和开发人员的基本内部知识》 专家Oracle数据库架构:Oracle数据库9i、10g和11g编程技术和解决方案,作者Thomas Kyte Dan Tow的SQL调优 Oracle Database 11g Release 2性能调优技巧和技术(Oracle Press) Richard Niemiec著