深入淺出MySQL 第3版

深入淺出MySQL 第3版

《深入淺出MySQL 第3版》是人民郵電出版社出版的圖書,作者是翟振興,張恆岩,崔春華,黃榮,董騏銘

基本介紹

  • 中文名:深入淺出MySQL 第3版
  • 作者:翟振興、張恆岩、崔春華、黃榮、董騏銘
  • 出版時間:2019年9月
  • 出版社人民郵電出版社
  • 頁數:682 頁
  • ISBN:9787115515391
  • 定價:138 元
  • 裝幀:平裝
內容簡介,作者簡介,圖書目錄,

內容簡介

《深入淺出MySQL:資料庫開發、最佳化與管理維護(第3版)》源自網易公司多位資料庫專家數年的經驗總結和MySQL資料庫的使用心得,在之前版本的基礎之上,基於MySQL 5.7版本進行了內容升級,同時也對MySQL 8.0的重要功能進行了介紹。除了對原有內容的更新之外,本書還新增了作者在高可用架構、資料庫自動化運維,以及資料庫中間件方面的實踐和積累。《深入淺出MySQL:資料庫開發、最佳化與管理維護(第3版)》分為“基礎篇”“開發篇”“最佳化篇”“管理維護篇”和“架構篇”5個部分,共32章。基礎篇面向MySQL的初學者,介紹了MySQL的安裝與配置、SQL基礎、MySQL支持的數據類型、MySQL中的運算符、常用函式等內容。開發篇面向的是MySQL設計和開發人員,內容涵蓋了表類型(存儲引擎)的選擇、選擇合適的數據類型、字元集、索引的設計和使用、開發常用資料庫對象、事務控制和鎖定語句、SQL中的安等

作者簡介

翟振興,網易技術專家,畢業於清華大學軟體學院,2005年入職網易,經歷了網易多個核心繫統的資料庫設計和運維工作,對高並發下的資料庫架構變遷有著深刻的理解,目前主要對自動化運維、大數據、NewSQL等新技術有著較多的興趣和研究。
張恆岩,網易技術經理,2010年畢業於北京科技大學,在網易DBA組工作9年,負責過網易內部多個核心資料庫的運維以及資料庫自動化運維系統的設計和開發。在資料庫架構設計、性能最佳化、故障診斷以及自動化運維等方面有豐富的經驗。
崔春華,網易DBA,有10多年的資料庫技術領域從業經驗,深刻理解資料庫原理並具有豐富的實戰經驗,擁有Oracle 9i OCP證等

圖書目錄

部分 基礎篇
章 MySQL的安裝與配置2
1.1MySQL的下載2
1.1.1在Windows平台下下載MySQL3
1.1.2在Linux平台下下載MySQL3
1.2MySQL的安裝5
1.2.1在Windows平台下安裝MySQL5
1.2.2在Linux平台下安裝MySQL8
1.3MySQL的配置12
1.3.1Windows平台下配置MySQL12
1.3.2Linux平台下配置MySQL13
1.4啟動和關閉MySQL服務13
1.4.1在Windows平台下啟動和關閉MySQL服務13
1.4.2在Linux平台下啟動和關閉MySQL服務13
1.5小結14
第2章 SQL基礎15
2.1SQL簡介15
2.2(My)SQL使用入門15
2.2.1SQL分類15
2.2.2DDL語句16
2.2.3DML語句23
2.2.4DCL語句33
2.3幫助的使用34
2.3.1按照層次看幫助34
2.3.2快速查閱幫助35
2.4查詢元數據信息36
2.5小結37
第3章MySQL支持的數據類型38
3.1數值類型38
3.2日期時間類型43
3.3字元串類型49
3.3.1CHAR和VARCHAR類型50
3.3.2BINARY和VARBINARY類型51
3.3.3ENUM類型51
3.3.4SET類型52
3.4JSON類型52
3.5小結54
第4章MySQL中的運算符55
4.1算術運算符55
4.2比較運算符56
4.3邏輯運算符59
4.4位運算符60
4.5運算符的優先權61
4.6小結62
第5章常用函式63
5.1字元串函式63
5.2數值函式66
5.3日期和時間函式68
5.4流程函式71
5.5JSON函式73
5.5.1創建JSON函式74
5.5.2查詢JSON函式75
5.5.3修改JSON的函式79
5.5.4查詢JSON元數據函式81
5.5.5JSON工具函式83
5.6視窗函式86
5.6.1ROW_NUMBER()87
5.6.2RANK()/DENSE_RANK()89
5.6.3PERCENT_RANK()/CUME_DIST()89
5.6.4NFILE(N)90
5.6.5NTH_VALUE(expr,N)91
5.6.6LAG(expr,N)/LEAD(expr,N)91
5.6.7FIRST_VALUE(expr)/LAST_VALUE(expr)92
5.6.8聚合函式作為視窗函式93
5.7其他常用函式93
5.8小結95
第二部分開發篇
第6章表類型(存儲引擎)的選擇98
6.1MySQL存儲引擎概述98
6.2各種存儲引擎的特性100
6.2.1MyISAM101
6.2.2InnoDB102
6.2.3MEMORY108
6.2.4MERGE109
6.2.5TokuDB111
6.3如何選擇合適的存儲引擎112
6.4小結113
第7章選擇合適的數據類型114
7.1CHAR與VARCHAR114
7.2TEXT與BLOB115
7.3浮點數與定點數118
7.4日期類型選擇120
7.5小結120
第8章字元集121
8.1字元集概述121
8.2Unicode簡述121
8.3漢字及一些常見字元集123
8.4怎樣選擇合適的字元集124
8.5MySQL支持的字元集簡介125
8.6MySQL字元集的設定126
8.6.1伺服器字元集和排序規則126
8.6.2資料庫字元集和排序規則127
8.6.3表字元集和排序規則127
8.6.4列字元集和排序規則128
8.6.5連線字元集和排序規則128
8.7字元集的修改步驟129
8.8小結129
第9章索引的設計和使用130
9.1索引概述130
9.2設計索引的原則131
9.3索引設計的誤區132
9.4索引設計的一般步驟132
9.5BTREE索引與HASH索引133
9.6索引在MySQL 8.0中的改進134
9.6.1不可見索引134
9.6.2倒序索引135
9.7小結136
0章 開發常用資料庫對象137
10.1視圖137
10.1.1什麼是視圖137
10.1.2視圖操作137
10.1.3創建或者修改視圖137
10.1.4刪除視圖139
10.1.5查看視圖139
10.2存儲過程和函式140
10.2.1什麼是存儲過程和函式141
10.2.2存儲過程和函式的相關操作141
10.2.3創建、修改存儲過程或者函式141
10.2.4刪除存儲過程或者函式144
10.2.5查看存儲過程或者函式144
10.2.6變數的使用146
10.2.7定義條件和處理146
10.2.8游標的使用148
10.2.9流程控制149
10.2.10事件調度器152
10.3觸發器155
10.3.1創建觸發器155
10.3.2刪除觸發器157
10.3.3查看觸發器157
10.3.4觸發器的使用158
10.4小結159
1章 事務控制和鎖定語句160
11.1LOCK TABLES和UNLOCK TABLES160
11.2事務控制161
11.3分散式事務的使用166
11.3.1分散式事務的原理166
11.3.2分散式事務的語法166
11.3.3存在的問題168
11.4小結171
2章 SQL中的安全問題172
12.1SQL注入簡介172
12.2套用開發中可以採取的應對措施173
12.2.1PrepareStatement+Bind-Variable173
12.2.2使用應用程式提供的轉換函式174
12.2.3自己定義函式進行校驗174
12.3小結175
3章 SQL Mode及相關問題176
13.1MySQL SQL Mode簡介176
13.2SQL Mode的常見功能178
13.3常用的SQL Mode180
13.4SQL Mode在遷移中如何使用182
13.5小結183
4章 MySQL分區184
14.1分區概述184
14.2分區類型185
14.2.1RANGE分區187
14.2.2LIST 分區188
14.2.3COLUMNS 分區189
14.2.4HASH分區192
14.2.5KEY分區195
14.2.6子分區196
14.2.7MySQL分區處理NULL值的方式197
14.3分區管理199
14.3.1RANGE與LIST分區管理199
14.3.2HASH與KEY分區管理205
14.3.3交換分區206
14.4小結208
第三部分最佳化篇
5章 SQL最佳化210
15.1最佳化SQL語句的一般步驟210
15.1.1通過show status命令了解各種SQL的執行頻率210
15.1.2定位執行效率較低的SQL語句211
15.1.3通過EXPLAIN分析低效SQL的執行計畫211
15.1.4通過show profile分析SQL216
15.1.5通過trace分析最佳化器如何選擇執行計畫219
15.1.6確定問題並採取相應的最佳化措施220
15.2索引問題220
15.2.1索引的存儲分類220
15.2.2MySQL如何使用索引222
15.2.3查看索引使用情況231
15.3簡單實用的最佳化方法231
15.3.1定期分析表和檢查表232
15.3.2定期最佳化表233
15.4常用SQL的最佳化233
15.4.1大批量插入數據234
15.4.2最佳化INSERT語句235
15.4.3最佳化ORDER BY語句235
15.4.4最佳化GROUP BY語句239
15.4.5最佳化JOIN操作239
15.4.6最佳化嵌套查詢243
15.4.7MySQL如何最佳化OR條件245
15.4.8最佳化分頁查詢246
15.4.9使用SQL提示248
15.5直方圖250
15.5.1什麼是直方圖250
15.5.2直方圖的分類251
15.5.3直方圖實例套用252
15.5.4直方圖小結256
15.6使用查詢重寫256
15.7常用SQL技巧259
15.7.1正則表達式的使用259
15.7.2巧用RAND()提取隨機行261
15.7.3利用GROUP BY的WITH ROLLUP子句262
15.7.4用BIT GROUP FUNCTIONS做統計263
15.7.5資料庫名、表名大小寫問題265
15.7.6使用外鍵需要注意的問題265
15.8小結266
6章 鎖問題267
16.1MySQL鎖概述267
16.2MyISAM表鎖268
16.2.1查詢表級鎖爭用情況268
16.2.2MySQL表級鎖的鎖模式268
16.2.3如何加表鎖269
16.2.4並發插入(Concurrent Inserts)271
16.2.5MyISAM的鎖調度272
16.3InnoDB鎖問題273
16.3.1背景知識273
16.3.2獲取InnoDB行鎖爭用情況275
16.3.3InnoDB的行鎖模式及加鎖方法276
16.3.4InnoDB行鎖實現方式279
16.3.5Next-Key鎖283
16.3.6恢復和複製的需要,對InnoDB鎖機制的影響284
16.3.7InnoDB在不同隔離級別下的一致性讀及鎖的差異287
16.3.8什麼時候使用表鎖288
16.3.9關於死鎖289
16.4小結294
7章 最佳化MySQL Server296
17.1MySQL體系結構概覽296
17.2MySQL記憶體管理及最佳化298
17.2.1記憶體最佳化原則298
17.2.2MyISAM記憶體最佳化298
17.2.3InnoDB記憶體最佳化301
17.2.4調整用戶服務執行緒排序快取區305
17.3InnoDB log機制及最佳化305
17.3.1InnoDB重做日誌305
17.3.2innodb_flush_log_at_trx_commit的設定306
17.3.3設定log file size,控制檢查點307
17.3.4調整innodb_log_buffer_size308
17.4調整MySQL並發相關的參數308
17.4.1調整max_connections,提高並發連線308
17.4.2調整back_log309
17.4.3調整table_open_cache309
17.4.4調整thread_cache_size309
17.4.5innodb_lock_wait_timeout的設定309
17.5持久化全局變數309
17.6使用資源組310
17.7小結312
8章 磁碟I/O問題313
18.1使用固態硬碟313
18.2使用磁碟陣列314
18.2.1常見RAID級別及其特性314
18.2.2如何選擇RAID級別315
18.3虛擬檔案卷或軟RAID315
18.4使用Symbolic Links分布I/O315
18.5禁止作業系統更新檔案的atime屬性316
18.6調整I/O調度算法316
18.7RAID卡電池充放電問題318
18.7.1什麼是RAID卡電池充放電318
18.7.2RAID卡快取策略319
18.7.3如何應對RAID卡電池充放電帶來的I/O性能波動321
18.8NUMA架構最佳化322
18.9小結325
9章 套用最佳化326
19.1最佳化數據表的設計326
19.1.1最佳化表的數據類型326
19.1.2通過拆分提高表的訪問效率328
19.1.3逆規範化329
19.2資料庫套用最佳化330
19.2.1使用連線池330
19.2.2減少對MySQL的訪問330
19.2.3負載均衡331
19.3小結331
第20章 PS/SYS資料庫332
20.1Performance Schema庫332
20.1.1如何開啟PS庫332
20.1.2PS庫的表333
20.2SYS 庫335
20.2.1SYS庫的對象335
20.2.2SYS對象的實際套用336
20.3小結340
第21章 故障診斷341
21.1故障診斷和處理的原則341
21.2故障處理一般流程343
21.2.1故障發現343
21.2.2故障定位345
21.2.3故障解決346
21.3典型故障案例349
21.3.1案例1349
21.3.2案例2353
21.4小結356
第四部分管理維護篇
第22章 MySQL不錯安裝和升級358
22.1Linux/UNIX平台下的安裝358
22.1.1安裝包比較358
22.1.2安裝二進制包359
22.1.3安裝源碼包359
22.1.4參數設定方法360
22.2升級MySQL361
22.3小結363
第23章 MySQL中的常用工具364
23.1MySQL官方工具364
23.1.1mysql(客戶端連線工具)364
23.1.2mysqladmin(MySQL管理工具)371
23.1.3mysqlbinlog(日誌管理工具)371
23.1.4mysqlcheck(表維護工具)378
23.1.5mysqldump(數據導出工具)380
23.1.6mysqlpump(並行的數據導出工具)384
23.1.7mysqlimport(數據導入工具)385
23.1.8mysqlshow(資料庫對象查看工具)385
23.1.9perror(錯誤代碼查看工具)387
23.1.10MySQL Shell387
23.2Percona工具包390
23.2.1pt-archiver(數據歸檔工具)391
23.2.2pt-config-diff(參數對比工具)393
23.2.3pt-duplicate-key-checker(檢查冗餘索引工具)394
23.2.4pt-find(查找工具)395
23.2.5pt-heartbeat(監控主從延遲工具)395
23.2.6pt-kill(殺死會話工具)397
23.2.7pt-online-schema-change(線上修改表結構工具)397
23.2.8pt-query-digest(SQL分析工具)399
23.2.9pt-table-checksum(數據檢驗工具)401
23.2.10pt-table-sync(數據同步工具)402
23.3小結403
第24章 MySQL日誌404
24.1錯誤日誌404
24.2二進制日誌405
24.2.1日誌的位置和格式405
24.2.2日誌的讀取406
24.2.3日誌的刪除407
24.2.4日誌的事件411
24.2.5日誌閃回412
24.3查詢日誌415
24.3.1日誌的位置和格式415
24.3.2日誌的讀取416
24.4慢查詢日誌416
24.4.1檔案位置和格式416
24.4.2日誌的讀取417
24.4.3Anemometer簡介419
24.5小結421
第25章 備份與恢復422
25.1備份/恢復策略422
25.2邏輯備份和恢復422
25.2.1備份423
25.2.2完全恢復425
25.2.3基於時間點恢復427
25.2.4基於位置恢復427
25.2.5並行恢復427
25.3物理備份和恢復428
25.3.1冷備份和熱備份428
25.3.2MyISAM存儲引擎的熱備份429
25.3.3InnoDB存儲引擎的熱備份429
25.4表的導入和導出438
25.4.1導出438
25.4.2導入442
25.5小結445
第26章 MySQL許可權與安全446
26.1MySQL許可權管理446
26.1.1許可權系統的工作原理446
26.1.2許可權表的存取446
26.1.3賬號管理449
26.2MySQL安全問題461
26.2.1作業系統相關的安全問題461
26.2.2資料庫相關的安全問題463
26.3其他安全設定選項471
26.3.1密碼外掛程式471
26.3.2safe-user-create472
26.3.3表空間加密473
26.3.4skip-grant-tables474
26.3.5skip-networking474
26.3.6skip-show-database475
26.4小結475
第27章 MySQL監控476
27.1如何選擇一個監控方案476
27.1.1選擇何種監控方式476
27.1.2如何選擇適合自己的監控工具477
27.2常用的網路監控工具477
27.2.1Open-Falcon簡介477
27.2.2Nagios簡介479
27.2.3Zabbix簡介480
27.2.4幾種常見開源軟體比較481
27.3Zabbix 部署481
27.3.1Zabbix Server482
27.3.2Zabbix Server配置與啟動482
27.3.3配置Zabbix Web服務端483
27.3.4Zabbix Agent安裝和配置485
27.3.5PMP外掛程式介紹和部署486
27.3.6Zabbix Web端操作489
27.4性能醫生orzdba491
27.4.1orzdba安裝491
27.4.2orzdba使用492
27.5小結492
第28章 MySQL常見問題和套用技巧493
28.1忘記MySQL的root密碼493
28.2數據目錄磁碟空間不足的問題494
28.3mysql.sock丟失後如何連線資料庫495
28.4從mysqldump檔案抽取需要恢復的表496
28.5使用innobackupex備份恢復單表497
28.6分析BINLOG,找出寫的熱點表498
28.7線上DDL499
28.8小結502
第29章 自動化運維系統的開發503
29.1MySQL自動化運維背景503
29.2CMDB系統搭建504
29.2.1CMDB資料庫504
29.2.2批量管理系統505
29.2.3後台API511
29.3任務調度系統515
29.3.1Celery安裝515
29.3.2Celery任務部署516
29.3.3Flower監控518
29.4客戶端搭建519
29.4.1Vue.js簡介519
29.4.2Vue項目搭建520
29.5自動化運維平台實戰525
29.5.1搭建CMDB525
29.5.2搭建任務調度平台528
29.5.3搭建客戶端529
29.5.4項目演示532
29.6小結532
第五部分架構篇
第30章MySQL複製534
30.1複製概述534
30.1.1複製中的各類檔案536
30.1.23種複製方式537
30.1.3複製的4種常見架構540
30.2複製搭建543
30.2.1異步複製543
30.2.2多執行緒複製547
30.2.3增強半同步複製553
30.3GTID(Global Transaction Identifier)558
30.3.1格式與存儲558
30.3.2gtid_purged561
30.3.3複製搭建565
30.3.4主從切換571
30.3.5常見問題572
30.4主要複製啟動選項576
30.4.1log-slave-updates576
30.4.2read-only/super_read_only576
30.4.3指定複製的資料庫或者表577
30.4.4slave-skip-errors579
30.5日常管理維護579
30.5.1查看從庫複製狀態和進度579
30.5.2主從複製問題集錦580
30.5.3多主複製時的自增長變數衝突問題582
30.5.4如何提高複製的性能584
30.6小結588
第31章高可用架構589
31.1MHA架構589
31.1.1安裝部署MHA591
31.1.2套用連線配置598
31.1.3自動failover605
31.1.4網路問題觸發的failover操作614
31.1.5手動failover614
31.1.6線上進行切換615
31.1.7修復宕掉的Master617
31.2MGR架構617
31.2.1安裝部署MGR618
31.2.2監控625
31.2.3primary成員切換626
31.2.4重要特性628
31.2.5常見問題629
31.3InnoDB Cluster636
31.3.1安裝部署637
31.3.2初始化MySQL Router642
31.3.3集群Metadata643
31.3.4集群成員角色切換644
31.3.5集群刪除/增加節點646
31.3.6重新加入節點648
31.4小結649
第32章MySQL中間件650
32.1MySQL Router650
32.1.1MySQL Router的安裝651
32.1.2MySQL Router的初始化653
32.1.3MySQL Router策略驗證656
32.2Cetus架構658
32.2.1Cetus的安裝配置659
32.2.2Cetus的使用670
32.2.3Cetus日誌檔案674
32.2.4Cetus的後端管理675
32.2.5Cetus的路由策略678
32.2.6常見問題681
32.3小結682

相關詞條

熱門詞條

聯絡我們