mysql8 優化 MySQL 8 0 優化

2021-10-17 12:34:40 字數 2192 閱讀 3481

優化效果(從大到小):

硬體裝置 -> mysql資料庫 -> linux作業系統 -> 表設計

硬體裝置優化

提公升硬體裝置,例如使用ssd高速磁碟,cpu等。

mysql資料庫配置優化

# 物理記憶體的50%~80%,這裡為

innodb_buffer_pool_size=2000000000

# 雙1模式

# 按事物刷盤,刷日誌

innodb_flush_log_at_trx_commit=1

# 提交1次事物刷1次,可以為n

sync_binlog=1

# 髒頁佔innodb_buffer_pool_size的比例時,觸發刷髒頁到磁碟

# 25%~50%

innodb_max_dirty_pages_pct=30

# 後台程序最大io效能指標

# 預設200,如果ssd,調整為5000~20000

innodb_io_capacity=200

# 預設10m。防止高併發下,資料庫受影響

innodb_data_file_path=ibdata1:1024m:autoextend

# 預設2,單位s。慢查詢時間。建議0.1~0.5

long_qurey_time=0.3

# 8.0預設row。記錄格式,讓資料安全可靠

binlog_format=row

# 預設8小時。互動等待時間和非互動等待時間

# 建議300~500s,兩引數值必須一致,且同時修改

interactive_timeout=500

wait_timeout=500

# 過大,容易oom(記憶體溢位)

# 調高該引數應降低interactive_timeout、wait_timeout的值

# 預設151

max_connections=200

# 過大,例項恢復時間長;過小,造成日誌切換頻繁

# 預設50331648,50mb

innodb_log_file_size=50331648

# 全量日誌建議關閉

# 預設關閉

general_log=0

linux作業系統層面優化

cat /sys/block/sda/queue/scheduler

noop deadline [cfq]

修改為deadline或noop,cfq,嚴重影響資料庫效能

檔案系統採用xfs,其次是ext4,不用ext3

還有vm.dirty_background_ratio:預設10,建議不超過10

vm.dirty_ratio:預設20,建議不超過20

表設計及其他優化

1.庫名、表名、欄位名小寫,用「_」分隔。

2.使用自增列int或bigint作為主鍵

3.ipv4使用int儲存,inet_aton、inet_ntoa

4.***、status使用tinyint

5.業務表切忌出現大型別字段,sql避免or子句

6.只需獲取必要欄位時,避免使用select *,還可能用到覆蓋索引

7.建立索引在選擇性高的字段上,不要在***、status上建

8.單錶索參數量不要超過4~5個

9.欄位預設加上not null,避免出現null,count()統計不會計null

10.需要儲存表情需要utf8mb4

11.使用搜尋引擎sphinx替代模糊搜尋

12.explain執行計畫中的extra項中有using filesort或using temporary時,考慮建立排序索引和分組索引

13.pt-query-digest捕獲慢查詢語句

5(附加)

優化一條sql語句:

1.表的資料型別是否設計得合理,資料型別越簡單越小原則

2.表中碎片整理,alter table comment_infos engine = innodb;

3.檢視表的統計資訊,select * from information_schema.tables where table_name=」comment_infos」\g;

4.explain檢視執行計畫

5.建索引前檢視該字段的選擇性,越接近1越高,主鍵索引和唯一索引的選擇性是1

6.在檢視explain,對比索引效果。在合理的字段建立索引:經常出現在where後;經常order by或group by;經常表連線。

mysql8簡單密碼 MySQL8 0設定簡單密碼

一 問題描述 1 在安裝mysql8.0時,修改臨時密碼,因密碼過於簡單 如 123456 不符合mysql密碼規範,會觸發乙個報錯資訊 error 1819 hy000 your password does not satisfy the current policy requirements。二...

mysql8穩定嗎 mysql8 0新特性

1 隱藏索引 隱藏索引的特性對於效能除錯非常有用。在 8.0 中,索引可以被 隱藏 和 顯示 當乙個索引隱藏時,它不會被查詢優化器所使用。也就是說,我們可以隱藏乙個索引,然後觀察對資料庫的影響。如果資料庫效能有所下降,就說明這個索引是有用的,於是將其 恢復顯示 即可 如果資料庫效能看不出變化,說明這...

mysql8簡單密碼 MySQL8 0設定簡單密碼

一 問題描述 1 在安裝mysql8.0時,修改臨時密碼,因密碼過於簡單 如 123456 不符合mysql密碼規範,會觸發乙個報錯資訊 error 1819 hy000 your password does not satisfy the current policy requirements。二...