a、cpu 一台機器最好在8-16核,中小企業2-4核最少
b、mem 96g-128g,可以跑3-4個例項,32-64g可以跑2個例項
c、硬碟 disk 數量越多越好。效能:ssd(高併發)>sas(普通業務線上)>sata(線下)
raid 4塊盤:raid0>raid10>raid5>raid1
d、網絡卡 多塊網絡卡bond,以及buffer,tcp優化
作業系統:x86_64系統
軟體:mysql 編譯優化
優化的幅度很小,大部分是架構與sql語句的優化
重要引數
#一般設定物理記憶體的30%到50%較為合理,不要50%超過
#他的作用是吧資料庫的資料快取到buffer_pool裡面
innodb_buffer_pool_size=2048m
#提交後立即重新整理log
innodb_flush_log_at_trx_commit=2
#檔案控制代碼,這個要調大
open_files_limit=65535
#mysql的快取,mysql快取不優秀,不要設定過大,利用redis等做快取就行
query_cache_size=64m
query_cache_limit=4m
query_cache_min_res_unit=2k
#臨時表,不要給特別大,會占用磁碟空間
tmp_table_size=256m
max_heap_table_size=256m
#設定binlog過期天數,自動清理,binglog最好不要手動清理,容易出問題
expire_logs_days=10
#索引的快取大小,如果是myisam引擎就要給的夠大,比如2048m
key_buffer_size=32m
#禁用dns解析,不加的話可能會出現login登入問題
skip_name_resolve
思想:
監控:上面的引數是一般情況下的引數,具體看業務
命令監控:show global status\g
調優的監控工具:mysqlreport
a、索引的優化
1、最好在專案開發期讓dba參與設計表,通過slow-log抓出慢sql
2、慢查詢日誌分析工具—mysqlsla
3、比較好的方式每天晚上0點定時分析慢查詢,發到核心開發,dba,運維,cto郵箱。
然後由dba給出建議,開發確認,上線實施,
b、大的複雜的sql語句拆分成多個小的sql語句
c、資料庫是儲存資料的地方,但是不是計算資料的地方。
d、搜尋功能,一般不要用mysql資料庫
1、業務拆分:搜尋功能,like 『%chao%』,一般不要用mysql資料庫
某些業務應用使用nosql持久化儲存,例如:redis等,比如粉絲關注,好友關係等等
2、資料庫前端必須要加cache,例如:redis,比如:使用者登入,商品查詢
3、動態的資料靜態化。整個檔案靜態化,頁面片段靜態化
4、資料庫集群與讀寫分離。一主多從,通過程式或者dbproxy進行集群讀寫分離
5、單錶超過2000的時候,就需要拆庫拆表 ,人工拆表拆庫(登入、商品、訂單)
任何一次認為資料庫記錄的更新,都要走乙個流程
a、人的流程:開發->核心開發->運維或dba
b、測試流程:內網測試->idc測試->線上執行
c、客戶端控制,比如只能走內網,只能走vpn,
MySQL 資料庫設計與優化
mysql 作為一款輕量級資料庫被越來越多的企業使用,特別是 mysql 的 innodb 的儲存引擎和 8.0 版本發布以來更是有了較大的提公升。本文將主要介紹 mysql 的主要設計原則和從不同層面對 mysql 資料庫進行優化,在符合業務需求的前提下提公升資料庫執行效率。本 chart 內容如...
mysql資料庫優化索引 mysql資料庫索引調優
一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...
mysql資料庫優先 MySQL資料庫優化
1.新增索引 mysql資料庫的四類索引 index 普通索引,資料可以重複,沒有任何限制。unique 唯一索引,要求索引列的值必須唯一,但允許有空值 如果是組合索引,那麼列值的組合必須唯一。primary key 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表...