高并發大流量專題---10、MySQL數據庫層的優化
一、總結
一句話總結:
mysql先考慮做分布式緩存,過了緩存后就做mysql數據庫層面的優化
?
1、mysql數據庫層的優化的前面一層是什么?
數據庫緩存:突破了數據庫緩存就需要做mysql數據庫層的優化
?
2、mysql優化方向?
數據表數據類型優化;索引優化;SQL語句的優化
存儲引擎的優化
數據表結構設計的優化
數據庫服務器架構的優化
?
3、mysql數據表的數據類型優化考慮?
合適:字段使用什么樣的數據類型更合適
更快:字段使用什么樣的數據類型性能更快
?
4、使用char還是varchar需要考慮什么?
存儲字符串長度是否固定
?
5、使用tinyint、smallint、bigint需要考慮什么?
空間:考慮空間的問題
范圍:考慮范圍的問題
?
6、IP地址的如何存儲?
可以使用整型存儲IP地址:php應該有將ip轉成整型的方法
?
7、mysql索引如何優化?
建立合適的索引
思考索引在什么場景下效率最高
?
8、mysql索引的創建原則?
索引不是越多越好,在合適的字段上創建合適的索引
復合索引的前綴原則
?
9、mysql索引的注意事項?
1、復合索引的前綴原則
2、like查詢%的問題
3、or條件索引使用情況
4、字符串類型索引失效的問題:如果里面是整形,不要引號索引失效
復合索引的前綴原則
like查詢%的問題
全表掃描優化
or條件索引使用情況
字符串類型索引失效的問題:如果里面是整形,不要引號索引失效
?
10、SQL語句如何優化?
優化查詢過程中的數據訪問
優化長難句的查詢語句
優化特定類型的查詢語句
?
11、優化查詢過程中的數據訪問 需要注意什么?
使用Limit
返回列不用*
?
12、如何優化長難句的查詢語句?
變復雜為簡單
切分查詢
分解關聯查詢:有利于做數據層面的緩存
?
13、如何優化特定類型的查詢語句?
優化count()
優化關聯查詢;優化子查詢
優化Group by和distinct;優化limit和union
?
14、mysql數據庫存儲引擎如何優化?
盡量使用InnoDB存儲引擎:是行鎖不是表鎖
?
15、數據表結構設計如何優化?
分區操作:通過特定的策略對數據表進行物理拆分:比如地域
分庫分表:比如經常在線的和經常不在線的分開
?
16、分區操作的特點?
通過特定的策略對數據表進行物理拆分:比如地域
對用戶透明
partition by
?
17、分庫分表的方式有哪些?
水平拆分:拆行:比如經常在線的和經常不在線的分開
垂直拆分:拆列
?
18、數據庫服務器架構如何優化?
主從復制
讀寫分離
雙主熱備
負載均衡
?
?
19、mysql數據庫中的主從復制、讀寫分離、雙主熱備 如何實現?
使用mysql的vlog日志、中心日志,通過主庫和從庫的vlog來回的交換,事件來回的傳送,即可實現
?
?
20、MySQL的負載均衡 如何實現?
通過LVS的三種基本模式實現負載均衡
MyCat數據庫中間件實現負載均衡
?
?
?
二、內容在總結中
?
?
?