mysql資料庫多種優化方案
1、硬體優化(物理機)
a、cpu 8~16顆cpu ,2~4顆
b、mem 96g~128g,3~4個例項。 32~64g記憶體,2個例項
c、disk 數量越多越好,效能上:ssd (高併發)> sas(普通) > sata (線下)
4塊盤為例:raid0 > raid10 > raid5> raid1
d、網絡卡,多塊網絡卡bond,buffer等等。核心調優可以處理
2、軟體優化
作業系統:x64,
軟體:mysql ,編譯安裝,編譯優化。
3、my.cf引數優化(優化的幅度比較小,大部分是架構及sql語句優化)
參考:思想:監控:生產引數是一般情況下的引數
命令監控:show global status\g 然後可以看到每個引數用了多少,每個快取用了多大。通過監控慢慢調整。
調優工具:mysqlreport,還有其他的工具
3、sql語句的優化
a、索引的優化
1、抓出慢sql。讓dba盡量早的參與的開發裡面和開發共同討論。白名單機制
long_query_time= #
log-slow-queries= /vra/lib/mysql/slow-log
2、慢查詢日誌分析工具 -- mysqlsla ,
pt-query-digest.,mysqldumpslows,
3、每天晚上0:00定時分析慢查詢,發到核心開發,dba分析,及高階運維,cto郵箱。
dba分析給出優化建議--> 核心開發確認更改--->dba上線操作。
b、大的複雜的sql語句的拆分為多個小的sql語句
子查詢,join連表查詢。一張表資料太大,怎麼拆分都有問題。需要拆表,拆庫
c、資料庫是儲存資料的地方,但是不是計算資料的地方。
計算,應用類處理,都要拿到前端應用解決,禁止在資料庫上處理。
d、搜尋功能,like "%51cto%" ,一般不要使用mysql資料庫。
4、架構上的優化
a)業務拆分: 搜尋功能,like"%51cto%" ,一般不要使用mysql資料庫。
b)業務拆分:某些業務應用使用nosql持久化分出,例如:memcachedb.redis,ttserver.
例如:粉絲關注,好友關係等等。
c)資料庫前端必須要加cache,例如:memcached,使用者登入,商品查詢等等。
d)動態的資料靜態化,整個檔案靜態化,頁面片段靜態化
e)資料庫集群與讀寫分離,一主多從,通過程式或者dbproxy進行集群讀寫分離。
f)單錶查過2000萬了,拆庫拆表,不同的請求分到不同的機器上面,前面hash取模。
5、流程,制度,安全優化。
任何一次認為資料庫記錄的更新都要走乙個流程:
人的流程:開發 --> 核心開發確認 --> 運維或dba
測試的流程:開發人員內網測試 --> idc測試 --> 線上執行。
客戶端的管理,客戶端phpmyadmin。客戶端訪問控制。防患於未然
mysql 調優 Mysql調優
表設計 1 禁止使用外來鍵 2 多表中的相同列,必須保證列定義一致 3 國內表預設使用innodb,表字符集預設使用gbk,國際預設使用utf8的表 4 表必須包含gmt create和gmt modified欄位,即表必須包含記錄建立時間和修改時間的字段 5 單錶一到兩年內資料量超過500w或資料...
mysql效能調優 會話數 MySQL效能調優
mysql效能調優 提高mysql系統的效能 影響速度 替換硬體 cpu 磁碟 記憶體等 服務程式的執行引數調整 對sql查詢進行優化 併發及連線控制 連線數 連線超時 max connections 允許的最大併發連線數 connect timeout 等待建立連線的超時秒數,預設10秒,只在登入...
mysql調優書籍 mysql調優從書寫sql開始
理論知識 mysql 的執行機制 mysql 的sql關鍵字執行順序 1 mysql 的優化方案有哪些?1 mysql 資料庫常見的優化手段分為三個層面 sql 和索引優化 資料庫結構優化 系統硬體優化等 前兩個可以通過日常的書寫sql來實現,養成好的習慣可以事半功倍。2 sql 和索引優化習慣準則...