What resources exist for Database performance-tuning?
有哪些好的资源可用于理解主要引擎上的数据库调优并提升您在该领域的知识?
这个问题的想法是收集总是存在的大量资源,以便人们可以拥有良好的,同行认可的资源的"一站式"知识商店。
一般SQL
- 书:SQL性能调优
- 书:SQL调优
- 书:SQL的艺术
- 书:重构SQL应用程序
- 书:数据库调优:原理,实验和故障排除技术
- 使用指数,卢克! - 开发人员数据库性能指南
PostgreSQL(维基)(PGsearch)
- 性能优化
- 快速PostgreSQL优化
- 解释分析口译员
- PostgreSQL性能提示
- 书:PostgreSQL 9.0高性能
MySQL的
- MySQL的隐藏功能
- 书:高性能MySQL /博客:高性能MySQL
- 博客:Xaprb(适用于MySQL DBA)
神谕
- 如何在StackOverflow上询问Oracle调优问题
- 你如何解释查询的解释计划?
- Oracle Advanced Tuning Scripts
- Oracle数据库性能调整指南
- 问汤姆
- Oracle数据库SQL参考
- 书:了解Oracle性能
- 书:优化Oracle性能
- 书:Oracle性能故障排除
- 书:基于成本的Oracle基础知识
MS SQL Server
- SQL Server性能
- 电子书:高性能SQL Server
- 问题:什么是最好的SQL Server性能优化技术?
- Brent Ozar的Perf Tuning页面
- SqlServerPedia的Perf Tuning页面
- 书:Sql Server 2008 Internals
- 如何使用SQL事件探查器识别慢速运行的查询
Sybase SQL Anywhere
- 博客:SQL Anywhere
- 书:SQL Anywhere Studio 9开发人员指南
JDBC
- JDBC性能提示
Oracle自己的Tom Kyte在http://asktom.oracle.com上可以想到的每种类型的性能问题都有一个很棒的存储库。他通常会花时间重新创建具体问题并给出非常详细的解释。
这个家伙对一个不太相同的询问的答案可能是一个好的开始。
MySQL的隐藏功能
PostgreSQL的一些东西:官方维基上的"性能优化"。
如果您使用的是Oracle数据库,本指南也可能有所帮助。
http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/toc.htm
对于MySQL,性能调优"圣经"是高性能MySQL
快速PostgreSQL优化(查询优化)
简短的阅读,很好地解释了很多事情并且"工作"是一个真实的例子,这对我们这些学习得更好的人来说很好。
在看到PostgreSQL的wiki链接之后,我想我会用mysql / oracle文档的链接编辑这篇文章,而不是真正的优化指南,但两者都是很好的资源,尤其是mysql。用于优化和任何其他调整功能。
SO在这里有一个好的:你如何解释查询的解释计划?
我想补充说,除了理论上调整数据库之外,您还应该使用跟踪SQL调用的分析器来分析您的应用程序。
尽管你有最好的意图,但是一些不好的电话会潜入你的应用程序,并且经常会导致90%与性能相关的问题。
在http://www.mysqlperformanceblog.com/上可以找到很多很好的MySQL特定技巧。
如何使用SQL事件探查器识别慢速运行查询是一个很好的教程,如何识别慢速运行的查询。这样可以将注意力集中在最需要的地方。
如果您正在寻找SQL Server特定的性能调优参考,那么在线可以获得绝对的质量资源,包括实施分区等特定技术的白皮书,以及详细介绍如何进行性能调整的优秀博客。 sql server平台。
无耻插件如下:您可以通过查看我的个人博客的性能调整区域来开始您的研究,或者对于任何特定的SQL Server要求/问题随时向我发送电子邮件。
SQL Server资源
http://explain.depesz.com/
- 帮助您解释PostgreSQL的EXPLAIN ANALYZE输出。
PostgreSQL文档中的整个性能提示章节值得一读。
- 书:Oracle性能故障排除(Antognini Christian)
SQL Server性能
MSSQL特定信息的体面网站。
"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查询等。
Xaprb是MySQL DBA必读的博客。作者写了一本关于高性能MySQL的书
对于使用Sybase SQL Anywhere的少数人来说,我只能推荐Breck Carter的博客和他的SQL Anywhere Studio 9开发人员指南
对于SQL Server,我主要使用:
-
Brent Ozar的Perf Tuning页面
-
SqlServerPedia的Perf Tuning页面
这是另一本备受推崇的平台中立的书:
Dan Tow的SQL调优:生成最佳执行计划
包含Oracle,MS SQL和IBM DB2的一些特定示例,但所涉及的技术也应适用于其他平台。
当我看到这种方式快速查看您在Oracle下调整的SQL语句时,我感到非常高兴。将下面的第一个SQL语句更改为SELECT语句,并将该提示保留在那里。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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-Row是估计的行数。
- A-Row是实际的行。
- A-Time是实际时间。
- 缓冲区是实际的缓冲区。
如果估计的计划与实际执行的数量级不同,那么您就知道自己遇到了问题。
http://www.javaperformancetuning.com/tips/jdbc.shtml
http://www.google.com/search?q=database+performance+tuning
对于Oracle,基于成本的Oracle:Jonathan Lewis的基础知识。
有时您需要知道如何在识别问题后解决问题。这将显示使用基于集合的操作替换性能不佳的游标的方法:
http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them
它特定于SQL Server,但许多技术也可能转换为其他dbs。
Oracle站点
Oracle书籍
对于Microsoft SQL,我推荐Kalen Delaney(等人)的书籍"Inside SQL Server"。它们提供了对SQL Server内部的深入了解,从而允许读者自己了解为什么特定语句可能比其他语句更快。
在SQL Server 7.0内部
在SQL Server 2000内部
Microsoft SQL Server 2005内部
Microsoft SQL Server 2008 Internals
还有一本专门用于SQL Server 2008查询性能调优的书:
SQL Server性能调优蒸馏
我也喜欢Paul Randal和Kimberly Tripp在SQLSkills.com上发表的博客。他们充满了扎实的SQL建议:
保罗的博客
金伯利的博客
对于使用Oracle的人,我推荐此链接.............
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm
根据我在Oracle数据库开发方面的经验,我发现了解如何使用SQL,如何使用SQL以及知道可用的内容(提供的函数,您不知道的条款或从上一版本增强的内容)意味着我花了很少的时间来调整sql。
我首先要了解数据库在基础层面的工作原理。如何将数据存储在磁盘上,创建索引的内容如何,??查询计划优化如何工作,缓存计划的方式,缓存计划何时到期。
如果你可以将所有这些都提交给内存,那么关于调优的大多数建议似乎都很明显。
这是一本很棒的MSSQL书
SQL Server内部
对于SQL Server性能调优,Itzik Ben-Gan是一个传奇。
你可以在这里找到他的许多详细书籍,所有这些都是用他通常的经验测量方式来证明他的情况:http://tsql.solidq.com/books/index.htm
如果您正在寻找解决t-sql问题的最快解决方案,请在Google搜索字词中添加"itzik"一词。
Itzik Ben-Gan在stackoverflow上已被提及超过600次,但我无法相信在这个性能调优问题上没有找到他。
作为一个额外的资源,您还可以在youtube上找到Itzik的一些视频,讨论与性能相关的内容。