商品簡介
《EffectiveMySQL之SQL語句最優化》主要內容:
●找出收集和診斷問題必備的分析命令;
●創建MySQL索引來改進查詢性能;
●掌握MySQL的查詢執行計劃;
●找出影響查詢執行和性能的關鍵配置變量;
●用SQL語句優化的生命週期來識別、確認、分析然後優化SQL語句,並檢查優化的結果;
●學習使用不為常人所知的一些性能技巧來改進索引效率並簡化SQL語句。
作者簡介
布拉德福(RonaldBradford),OracleACEDirector,是一位在關係型數據庫領域有著20多年豐富經驗的專家。他擁有深厚的專業背景以及10年以上Ingres和Oracle系統的工作背景,他在過去12年中致力於MySQL的發展。他曾在2009年被提名為MySQL社區成員並于2010年被提名為OracleACEDirector,他的諮詢領域的專家背景以及多次在國際會議上的發言也為他帶來了廣泛的國際認知度。他是清華大學出版社引進並出版的《PHP+MySQL專家編程》一書的作者之一。
名人推薦
《Effective MySQL之SQL語句最優化》提供了很多可以用于改進數據庫和應用程序性能的最佳實踐技巧,并對這些技巧做了詳細的解釋,希望能夠通過一步步詳細介紹SQL優化的方法,幫助讀者分析和調優有問題的SQL語句。
目次
第1章DBA五分鐘速成
1.1識別性能問題
1.1.1尋找運行緩慢的SQL語句
1.1.2確認低效查詢
1.2優化查詢
1.2.1不應該做的事情
1.2.2確認優化
1.2.3正確的方式
1.2.4備選的解決方案
1.2本章小結
第2章基本的分析命令
2.1EXPLAIN命令
2.1.1EXPLAINPARTITIONS命令
2.1.2EXPLAINEXTENDED命令
2.2SHOWCREATETABLE命令
2.3SHOWINDEXES命令
2.4SHOWTABLESTATUS命令
2.5SHOWSTATUS命令
2.6SHOWVARIABLES命令
2.7rNFORMATIONSCHEMA
2.8本章小結
第3章深入理解MySQL的索引
3.1示例表
3.2MySQL索引用法
3.2.1數據完整性
3.2.2優化數據訪問
3.2.3表連接
3.2.4結果排序
3.2.5聚合操作
3.3關於存儲引擎
3.4索引專業術語
3.5MySQL索引類型
3.5.1索引數據結構理論
3.5.2MySQL實現
3.6MySQL分區
3.7本章小結
第4章創建MySQL索引
第5章創建更好的MySQL索引
第6章MySQL配置選項
第7章SQL的生命週期
第8章性能優化之隱藏秘籍
第9章MySQLEXPLAIN命令詳解
書摘/試閱
4.5.2 DDL影響
隨著表大小的不斷增長,對性能的影響也不斷加大。例如,在主表上添加索引平均需要20~30秒。
mysql>ALTER TABLE album ADD INDEX ml(album_type_id,country_id);Query OK,553875 rows affected(21.05 sec)
在以往版本中,ALTER語句的開銷是阻塞其他語句,就像創建一個新版本的表那樣。在這期間可以SELECT數據,但根據標準的升級法則,任何DML操作都會導致所有語句被阻塞。當表的大小有1G或者100G,這個阻塞時間可能會非常長。但比較近期的版本在包括MySQL產品方面和創新的解決方案方面都有了很多改進。
添加索引帶來的影響并不總是一樣,也會有些例外情況。InnoDB提供了快速創建索引的特性,從MySQL 5.1版本開始就可以在InnoDB的插件中使用了,并且在MySQL 5.5或更高版本中已經成為默認設置了。
其他搜索引擎也可以以不同方式來實現執行鎖定的快速索引的創建,Tokutek就是其中的一個。
對磁盤空間的影響也是一個重要的考慮因素,尤其是當你在InnoDB中使用默認的公共表空間配置的時候。MySQL會為你的表創建一份副本。如果表的大小有200GB,那么在執行ALTERTABLE時你需要至少200GB額外的磁盤空間。使用InnoDB時,在執行期間這些額外的磁盤空間會被添加到公共表空間中。這部分磁盤空間在命令完成后不會被文件系統回收,而是當InnoDB需要額外磁盤空間時在內部被重復利用。盡管你可以調整策略讓每個表用單獨的表空間,但對于寫操作密集的系統,這也是有影響的。
技巧
有一些技巧可以讓阻塞操作減少到最低限度。你可以選擇使用一個高可用性的容錯度高的主表復制技術來支持在線變更表結構。比如近期Shlomi Noach介紹的oak-online-alter-table工具。
4.5.3磁盤空間影響
使用第2章介紹的INFORMATION SCHEMA.TABLES查詢可以查看本章使用的album表的大小。