(第2版)》(唐漢明 翟振興 關(guān)寶軍 王洪權(quán) 黃瀟)【摘要
本文關(guān)鍵詞:深入淺出MySQL:數(shù)據(jù)庫開發(fā)、優(yōu)化與管理維護(hù),由筆耕文化傳播整理發(fā)布。
編輯推薦
大家知道ANSI/ISO SQL是公認(rèn)的關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)。從SQL標(biāo)準(zhǔn)的符合性來說,MySQL不僅無法跟成熟的商業(yè)數(shù)據(jù)庫相比,,在開源數(shù)據(jù)庫中也遠(yuǎn)不是最好的,比如PostgreSQL就是業(yè)界公認(rèn)的ANSI/ISO SQL標(biāo)準(zhǔn)符合性最好的開源數(shù)據(jù)庫,MySQL直到5.0版本才支持的一些特性,PostgreSQL早都實(shí)現(xiàn)了。既然如此,為什么MySQL卻在開源數(shù)據(jù)庫中獨(dú)占鰲頭呢?根本的原因就是性能!
從開發(fā)、管理和管理維護(hù)3個(gè)角度逐步深入,全面介紹MySQL數(shù)據(jù)庫技術(shù),融合了資深專家多年工作實(shí)踐的積累和經(jīng)驗(yàn),不但總結(jié)了應(yīng)用MySQL數(shù)據(jù)庫時(shí)遇到的各種問題及其解決辦法,還強(qiáng)調(diào)了開發(fā)人員和數(shù)據(jù)庫管理人員必備的知識、技能。
MySQL的海豚標(biāo)志的名字叫“sakila”,代表速度、力量、精確,它是從用戶在“海豚命名”的競賽中建議的眾多名字中選出來的。獲勝的名字是由來自非洲斯威士蘭的開源軟件開發(fā)者Ambrose Twebaze提供的。根據(jù)Ambrose所說,Sakila來自一種叫SiSwati的斯威士蘭方言,也是在Ambrose的家鄉(xiāng)烏干達(dá)附近的坦桑尼亞的阿魯沙的一個(gè)小鎮(zhèn)的名字。
內(nèi)容簡介
《深入淺出MySQL:數(shù)據(jù)庫開發(fā)、優(yōu)化與管理維護(hù)(第2版)》從數(shù)據(jù)庫的基礎(chǔ)、開發(fā)、優(yōu)化、管理維護(hù)和架構(gòu)5個(gè)方面對MySQL進(jìn)行了詳細(xì)的介紹,每一部分都獨(dú)立成篇;A(chǔ)篇主要適合于MySQL的初學(xué)者閱讀,包括MySQL的安裝與配置、SQL基礎(chǔ)、MySQL支持的數(shù)據(jù)類型、MySQL中的運(yùn)算符、常用函數(shù)、圖形化工具的使用等內(nèi)容。開發(fā)篇主要適合于MySQL的設(shè)計(jì)和開發(fā)人員閱讀,內(nèi)容包括表類型(存儲引擎)的選擇、選擇合適的數(shù)據(jù)類型、字符集、索引的設(shè)計(jì)和使用、視圖、存儲過程和函數(shù)、觸發(fā)器、事務(wù)控制和鎖定語句、SQL中的安全問題、SQL Mode及相關(guān)問題、分區(qū)等。優(yōu)化篇主要適合于開發(fā)人員和數(shù)據(jù)庫管理員閱讀,內(nèi)容包括SQL優(yōu)化、優(yōu)化數(shù)據(jù)庫對象、鎖問題、優(yōu)化MySQL Server、磁盤I/O問題、應(yīng)用優(yōu)化等。管理維護(hù)篇主要適合于數(shù)據(jù)庫管理員閱讀,內(nèi)容包括MySQL高級安裝和升級、MySQL中的常用工具、MySQL日志、備份與恢復(fù)、MySQL權(quán)限與安全、MySQL監(jiān)控、MySQL常見問題和應(yīng)用技巧等。架構(gòu)篇主要適合高級數(shù)據(jù)庫管理人員和數(shù)據(jù)庫架構(gòu)設(shè)計(jì)師閱讀,包括MySQL復(fù)制、MySQL Cluster、高可用架構(gòu)等內(nèi)容。
《深入淺出MySQL:數(shù)據(jù)庫開發(fā)、優(yōu)化與管
目錄
第一部分 基礎(chǔ)篇
第1章 MySQL的安裝與配置
1.1 MySQL的下載
1.1.1 在Windows平臺下下載MySQL
1.1.2 在Linux平臺下下載MySQL
1.2 MySQL的安裝
1.2.1 在Windows平臺下安裝MySQL
1.2.2 在Linux平臺下安裝MySQL
1.3 MySQL的配置
1.3.1 Windows平臺下配置MySQL
1.3.2 Linux平臺下配置MySQL
1.4 啟動和關(guān)閉MySQL服務(wù)
1.4.1 在Windows平臺下啟動和關(guān)閉MySQL服務(wù)
1.4.2 在Linux平臺下啟動和關(guān)閉MySQL服務(wù)
1.5 小結(jié)
第2章 SQL基礎(chǔ)
2.1 SQL簡介
2.2 (My)SQL使用入門
2.2.1 SQL分類
2.2.2 DDL語句
2.2.3 DML語句
2.2.4 DCL語句
2.3 幫助的使用
2.3.1 按照層次看幫助
2.3.2 快速查閱幫助
2.3.3 常用的網(wǎng)絡(luò)資源
2.4 查詢元數(shù)據(jù)信息
2.5 小結(jié)
第3章 MySQL支持的數(shù)據(jù)類型
3.1 數(shù)值類型
3.2 日期時(shí)間類型
3.3 字符串類型
3.3.1 CHAR和VARCHAR類
3.3.2 BINARY和VARBINARY類型
3.3.3 ENUM類型
3.3.4 SET類型
3.4 小結(jié)
第4章 MySQL中的運(yùn)算符
4.1 算術(shù)運(yùn)算符
4.2 比較運(yùn)算符
4.3 邏輯運(yùn)算符
4.4 位運(yùn)算符
4.5 運(yùn)算符的優(yōu)先級
4.6 小結(jié)
第5章 常用函數(shù)
5.1 字符串函數(shù)
5.2 數(shù)值函數(shù)
5.3 日期和時(shí)間函數(shù)
5.4 流程函數(shù)
5.5 其他常用函數(shù)
5.6 小結(jié)
第6章 圖形化工具的使用
6.1 MySQL Workbench
6.1.1 SQL開發(fā)
6.1.2 數(shù)據(jù)建!
6.1.3 服務(wù)器管理
6.1.4 MySQL Utilities
6.2 phpMyAdmin
6.2.1 數(shù)據(jù)庫管理
6.2.2 數(shù)據(jù)庫對象管理
6.2.3 權(quán)限管理
6.2.4 導(dǎo)入導(dǎo)出數(shù)據(jù)
6.3 小結(jié)
第二部分 開發(fā)篇
第7章 表類型(存儲引擎)的選擇
7.1 MySQL存儲引擎概述
7.2 各種存儲引擎的特性
7.2.1 MyISAM
7.2.2 InnoDB
7.2.3 MEMORY
7.2.4 MERGE
7.2.5 TokuDB
7.3 如何選擇合適的存儲引擎
7.4 小結(jié)
第8章 選擇合適的數(shù)據(jù)類型
8.1 CHAR與VARCHAR
8.2 TEXT與BLOB
8.3 浮點(diǎn)數(shù)與定點(diǎn)數(shù)
8.4 日期類型選擇
8.5 小結(jié)
第9章 字符集
9.1 字符集概述
9.2 Unicode簡述
9.3 漢字及一些常見字符集
9.4 怎樣選擇合適的字符集
9.5 MySQL支持的字符集簡介
9.6 MySQL字符集的設(shè)置
9.6.1 服務(wù)器字符集和校對規(guī)則
9.6.2 數(shù)據(jù)庫字符集和校對規(guī)則
9.6.3 表字符集和校對規(guī)則
9.6.4 列字符集和校對規(guī)則
9.6.5 連接字符集和校對規(guī)則
9.7 字符集的修改步驟
9.8 小結(jié)
第10章 索引的設(shè)計(jì)和使用
10.1 索引概述
10.2 設(shè)計(jì)索引的原則
10.3 BTREE索引與HASH索引
10.4 小結(jié)
第11章 視圖
11.1 什么是視圖
11.2 視圖操作
11.2.1 創(chuàng)建或者修改視圖
11.2.2 刪除視圖
11.2.3 查看視圖
11.3 小結(jié)
第12章 存儲過程和函數(shù)
12.1 什么是存儲過程和函數(shù)
12.2 存儲過程和函數(shù)的相關(guān)操作
12.2.1 創(chuàng)建、修改存儲過程或者函數(shù)
12.2.2 刪除存儲過程或者函數(shù)
12.2.3 查看存儲過程或者函數(shù)
12.2.4 變量的使用
12.2.5 定義條件和處理
12.2.6 光標(biāo)的使用
12.2.7 流程控制
12.2.8 事件調(diào)度器
12.3 小結(jié)
第13章 觸發(fā)器
13.1 創(chuàng)建觸發(fā)器
13.2 刪除觸發(fā)器
13.3 查看觸發(fā)器
13.4 觸發(fā)器的使用
13.5 小結(jié)
第14章 事務(wù)控制和鎖定語句
14.1 LOCK TABLE和UNLOCK TABLE
14.2 事務(wù)控制
14.3 分布式事務(wù)的使用
14.3.1 分布式事務(wù)的原理
14.3.2 分布式事務(wù)的語法
14.3.3 存在的問題
14.4 小結(jié)
第15章 SQL中的安全問題
15.1 SQL注入簡介
15.2 應(yīng)用開發(fā)中可以采取的應(yīng)對措施
15.2.1 PrepareStatement+Bind-Variable
15.2.2 使用應(yīng)用程序提供的轉(zhuǎn)換函數(shù)
15.2.3 自己定義函數(shù)進(jìn)行校驗(yàn)
15.3 小結(jié)
第16章 SQL Mode及相關(guān)問題
16.1 MySQL SQL Mode簡介
16.2 SQL Mode的常見功能
16.3 常用的SQL Mode
16.4 SQL Mode在遷移中如何使用
16.5 小結(jié)
第17章 MySQL分區(qū)
17.1 分區(qū)概述
17.2 分區(qū)類型
17.2.1 Range分區(qū)
17.2.2 List分區(qū)
17.2.3 Columns分區(qū)
17.2.4 Hash分區(qū)
17.2.5 Key分區(qū)
17.2.6 子分區(qū)
17.2.7 MySQL分區(qū)處理NULL值的方式
17.3 分區(qū)管理
17.3.1 RANGE&LIST分區(qū)管理
17.3.2 HASH&KEY分區(qū)管理
17.4 小結(jié)
第三部分 優(yōu)化篇
第18章 SQL優(yōu)化
18.1 優(yōu)化SQL語句的一般步驟
18.1.1 通過show status命令了解各種SQL的執(zhí)行頻率
18.1.2 定位執(zhí)行效率較低的SQL語句
18.1.3 通過EXPLAIN分析低效SQL的執(zhí)行計(jì)劃
18.1.4 通過show profile分析SQL
18.1.5 通過trace分析優(yōu)化器如何選擇執(zhí)行計(jì)劃
18.1.6 確定問題并采取相應(yīng)的優(yōu)化措施
18.2 索引問題
18.2.1 索引的存儲分類
18.2.2 MySQL如何使用索引
18.2.3 查看索引使用情況
18.3 兩個(gè)簡單實(shí)用的優(yōu)化方法
18.3.1 定期分析表和檢查表
18.3.2 定期優(yōu)化表
18.4 常用SQL的優(yōu)化
18.4.1 大批量插入數(shù)據(jù)
18.4.2 優(yōu)化INSERT語句
18.4.3 優(yōu)化ORDER BY語句
18.4.4 優(yōu)化GROUP BY語句
18.4.5 優(yōu)化嵌套查詢
18.4.6 MySQL如何優(yōu)化OR條件
18.4.7 優(yōu)化分頁查詢
18.4.8 使用SQL提示
18.5 常用SQL技巧
18.5.1 正則表達(dá)式的使用
18.5.2 巧用RAND()提取隨機(jī)行
18.5.3 利用GROUP BY的WITH ROLLUP子句
18.5.4 用BIT GROUP FUNCT IONS做統(tǒng)計(jì)
18.5.5 數(shù)據(jù)庫名、表名大小寫問題
18.5.6 使用外鍵需要注意的問題
18.6 小結(jié)
第19章 優(yōu)化數(shù)據(jù)庫對象
19.1 優(yōu)化表的數(shù)據(jù)類型
19.2 通過拆分提高表的訪問效率
19.3 逆規(guī)范化
19.4 使用中間表提高統(tǒng)計(jì)查詢速度
19.5 小結(jié)
第20章 鎖問題
20.1 MySQL鎖概述
20.2 MyISAM表鎖
20.2.1 查詢表級鎖爭用情況
20.2.2 MySQL表級鎖的鎖模式
20.2.3 如何加表鎖
20.2.4 并發(fā)插入(Concurrent Inserts)
20.2.5 MyISAM的鎖調(diào)度
20.3 InnoDB鎖問題
20.3.1 背景知識
20.3.2 獲取InnoDB行鎖爭用情況
20.3.3 InnoDB的行鎖模式及加鎖方法
20.3.4 InnoDB行鎖實(shí)現(xiàn)方式
20.3.5 Next-Key鎖
20.3.6 恢復(fù)和復(fù)制的需要,對InnoDB鎖機(jī)制的影響
20.3.7 InnoDB在不同隔離級別下的一致性讀及鎖的差異
20.3.8 什么時(shí)候使用表鎖
20.3.9 關(guān)于死鎖
20.4 小結(jié)
第21章 優(yōu)化MySQL Server
21.1 MySQL體系結(jié)構(gòu)概覽
21.2 MySQL內(nèi)存管理及優(yōu)化
21.2.1 內(nèi)存優(yōu)化原則
21.2.2 MyISAM內(nèi)存優(yōu)化
21.2.3 InnoDB內(nèi)存優(yōu)化
21.2.4 調(diào)整用戶服務(wù)線程排序緩存區(qū)
21.2 InnoDB log機(jī)制及優(yōu)化
21.3.1 InnoDB重做日志
21.3.2 innodb_flush_log_at_trx_commit的設(shè)置
21.3.3 設(shè)置log file size,控制檢查點(diǎn)
21.3.4 調(diào)整innodb_log_buffer_size
21.2 調(diào)整MySQL并發(fā)相關(guān)的參數(shù)
21.4.1 調(diào)整max_connections,提高并發(fā)連接
21.4.2 調(diào)整back_log
21.4.3 調(diào)整table_open_cache
21.4.4 調(diào)整thread_cache_size
21.4.5 innodb_lock_wait_timeout的設(shè)置
21.5 小結(jié)
第22章 磁盤I/O問題
22.1 使用磁盤陣列
22.1.1 常見RAID級別及其特性
22.1.2 如何選擇RAID級別
22.2 虛擬文件卷或軟RAID
22.3 使用Symbolic Links分布I/O
22.4 禁止操作系統(tǒng)更新文件的atime屬性
22.5 用裸設(shè)備(Raw Device)存放InnoDB的共享表空間
22.6 調(diào)整I/O調(diào)度算法
22.7 RAID卡電池充放電問題
22.7.1 什么是RAID卡電池充放電
22.7.2 RAID卡緩存策略
22.7.3 如何應(yīng)對RAID卡電池充放電帶來的I/O性能波動
22.8 NUMA架構(gòu)優(yōu)化
22.9 小結(jié)
第23章 應(yīng)用優(yōu)化
23.1 使用連接池
23.2 減少對MySQL的訪問
23.2.1 避免對同一數(shù)據(jù)做重復(fù)檢索
23.2.2 使用查詢緩存
23.2.3 增加CACHE層
23.3 負(fù)載均衡
23.3.1 利用MySQL復(fù)制分流查詢操作
23.3.2 采用分布式數(shù)據(jù)庫架構(gòu)
23.4 其他優(yōu)化措施
23.5 小結(jié)
第四部分 管理維護(hù)篇
第24章 MySQL高級安裝和升級
24.1 Linux/UNIX平臺下的安裝
24.1.1 安裝包比較
24.1.2 安裝RPM包
24.1.3 安裝二進(jìn)制包
24.1.4 安裝源碼包
24.1.5 參數(shù)設(shè)置方法
24.2 源碼包安裝的性能考慮
24.2.1 去掉不需要的模塊
24.2.2 只選擇要使用的字符集
24.2.3 使用靜態(tài)編譯以提高性能
24.3 升級MySQL
24.4 MySQL降級
24.5 小結(jié)
第25章 MySQL中的常用工具
25.1 mysql(客戶端連接工具)
25.1.1 連接選項(xiàng)
25.1.2 客戶端字符集選項(xiàng)
25.1.3 執(zhí)行選項(xiàng)
25.1.4 格式化選項(xiàng)
25.1.5 錯誤處理選項(xiàng)
25.2 myisampack(MyISAM表壓縮工具)
25.3 mysqladmin(MySQL管理工具)
25.4 mysqlbinlog(日志管理工具)
25.5 mysqlcheck(MyISAM表維護(hù)工具)
25.6 mysqldump(數(shù)據(jù)導(dǎo)出工具)
25.6.1 連接選項(xiàng)
25.6.2 輸出內(nèi)容選項(xiàng)
25.6.3 輸出格式選項(xiàng)
25.6.4 字符集選項(xiàng)
25.6.5 其他常用選項(xiàng)
25.7 mysqlhotcopy(MyISAM表熱備份工具)
25.8 mysqlimport(數(shù)據(jù)導(dǎo)入工具)
25.9 mysqlshow(數(shù)據(jù)庫對象查看工具)
25.10 perror(錯誤代碼查看工具)
25.11 replace(文本替換工具)
25.12 小結(jié)
第26章 MySQL日志
26.1 錯誤日志
26.2 二進(jìn)制日志
26.2.1 日志的位置和格式
26.2.2 日志的讀取
26.2.3 日志的刪除
26.2.4 其他選項(xiàng)
26.3 查詢?nèi)罩尽?br>26.3.1 日志的位置和格式
26.3.2 日志的讀取
26.4 慢查詢?nèi)罩尽?br>26.4.1 文件位置和格式
26.4.2 日志的讀取
26.5 mysqlsla簡介
26.6 小結(jié)
第27章 備份與恢復(fù)
27.1 備份/恢復(fù)策略
27.2 邏輯備份和恢復(fù)
27.2.1 備份
27.2.2 完全恢復(fù)
27.2.3 基于時(shí)間點(diǎn)恢復(fù)
27.2.4 基于位置恢復(fù)
27.3 物理備份和恢復(fù)
27.3.1 冷備份
27.3.2 熱備份
27.4 表的導(dǎo)入導(dǎo)出
27.4.1 導(dǎo)出
27.4.2 導(dǎo)入
27.5 小結(jié)
第28章 MySQL權(quán)限與安全
28.1 MySQL權(quán)限管理
28.1.1 權(quán)限系統(tǒng)的工作原理
28.1.2 權(quán)限表的存取
28.1.3 賬號管理
28.2 MySQL安全問題
28.2.1 操作系統(tǒng)相關(guān)的安全問題
28.2.2 數(shù)據(jù)庫相關(guān)的安全問題
28.3 其他安全設(shè)置選項(xiàng)
28.3.1 old-passwords
28.3.2 safe-user-create
28.3.3 secure-auth
28.3.4 skip-grant-tables
28.3.5 skip-network
28.3.6 skip-show-database
28.4 小結(jié)
第29章 MySQL監(jiān)控
29.1 如何選擇一個(gè)監(jiān)控方案
29.1.1 選擇何種監(jiān)控方式
29.1.2 如何選擇適合自己的監(jiān)控工具
29.2 常用網(wǎng)絡(luò)監(jiān)控工具
29.2.1 Cacti簡介
29.2.2 Nagios簡介
29.2.3 Zabbix簡介
29.2.4 幾種常見開源軟件比較
29.3 Zabbix 部署
29.3.1 Zabbix Server軟件安裝
29.3.2 Zabbix Server配置與啟動
29.3.3 配置Zabbix Web服務(wù)端
29.3.4 Zabbix Agent安裝和配置
29.3.5 MPM插件介紹和部署
29.3.6 Zabbix Web端操作
29.4 小結(jié)
第30章 MySQL常見問題和應(yīng)用技巧
30.1 忘記MySQL的root密碼
30.2 如何處理MyISAM存儲引擎的表損壞
30.2.1 方法一:使用myisamchk工具
30.2.2 方法二:使用SQL命令
30.3 MyISAM表超過4GB無法訪問的問題
30.4 數(shù)據(jù)目錄磁盤空間不足的問題
30.4.1 對于MyISAM存儲引擎的表
30.4.2 對于InnoDB存儲引擎的表
30.5 DNS反向解析的問題
30.6 mysql.sock丟失后如何連接數(shù)據(jù)庫
30.7 同一臺服務(wù)器運(yùn)行多個(gè)MySQL數(shù)據(jù)庫
30.8 客戶端怎么訪問內(nèi)網(wǎng)數(shù)據(jù)庫
30.8.1 方法一:使用SecureCRT客戶端工具
30.8.2 方法二:使用MySQL Proxy工具
30.9 小結(jié)
第五部分 架構(gòu)篇
第31章 MySQL復(fù)制
31.1 復(fù)制概述
31.1.1 復(fù)制中的各類文件
31.1.2 三種復(fù)制方式
31.1.3 復(fù)制的3種常見架構(gòu)
31.2 復(fù)制搭建過程
31.2.1 異步復(fù)制
31.2.2 半同步復(fù)制(Semi-synchronous Replication)
31.3 主要復(fù)制啟動選項(xiàng)
31.3.1 log-slave-updates
31.3.2 master-connect-retry
31.3.3 read-only
31.3.4 指定復(fù)制的數(shù)據(jù)庫或者表
31.3.5 slave-skip-errors
31.4 日常管理維護(hù)
31.4.1 查看從庫狀態(tài)
31.4.2 主從庫同步維護(hù)
31.4.3 從庫復(fù)制出錯的處理
31.4.4 log event entry exceeded max_allowed_packet的處理
31.4.5 多主復(fù)制時(shí)的自增長變量沖突問題
31.4.6 查看從庫的復(fù)制進(jìn)度
31.4.7 如何提高復(fù)制的性能
31.5 切換主從庫
31.6 小結(jié)
第32章 MySQL Cluster
32.1 MySQL Cluster架構(gòu)
32.2 MySQL Cluster的配置
32.2.1 MySQL Cluster的版本支持
32.2.2 管理節(jié)點(diǎn)配置步驟
32.2.3 SQL節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)的配置
32.3 開始使用Cluster
32.3.1 Cluster的啟動
32.3.2 Cluster的測試
32.3.3 Cluster的關(guān)閉
32.4 維護(hù)Cluster
32.4.1 數(shù)據(jù)備份
32.4.2 數(shù)據(jù)恢復(fù)
32.4.3 日志管理
32.5 小結(jié)
第33章 高可用架構(gòu)
33.1 MMM架構(gòu)
33.2 MHA架構(gòu)
33.3 安裝部署MHA
33.3.1 安裝MHA node(在所有的MySQL服務(wù)器上安裝)
33.3.2 安裝MHA Manager
33.3.3 配置SSH登錄無密碼驗(yàn)證
33.3.4 搭建主從復(fù)制環(huán)境
33.3.5 配置MHA
33.3.6 檢查SSH的配置
33.3.7 檢查整個(gè)復(fù)制環(huán)境狀況
33.3.8 檢查MHA Manager的狀態(tài)
33.3.9 開啟MHA Manager監(jiān)控
33.3.10 查看啟動日志
33.3.11 關(guān)閉MHA Manager監(jiān)控
33.3.12 VIP配置
33.3.13 自動Failover
33.3.14 網(wǎng)絡(luò)問題觸發(fā)的Failover操作
33.3.15 手動Failover
33.3.16 在線進(jìn)行切換
33.3.17 修復(fù)宕機(jī)的Master
33.4 小結(jié)
本文關(guān)鍵詞:深入淺出MySQL:數(shù)據(jù)庫開發(fā)、優(yōu)化與管理維護(hù),由筆耕文化傳播整理發(fā)布。
本文編號:174680
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/174680.html