1. 程式人生 > 實用技巧 >MySQL效能優化方案

MySQL效能優化方案

前言

先引用一張圖片

目錄圖

一、SQL語句優化

  • 開啟慢查詢功能
vim /etc/my.cnf
[mysqld]
slow-query-log = on # 開啟慢查詢功能
slow_query_log_file = /data/slow-query.log # 慢查詢日誌存放路徑與名稱
long_query_time = 5 # 查詢時間超過5s的查詢語句
log-queries-not-using-indexes = on # 列出沒有使用索引的查詢語句

1)檢視所有日誌狀態: show variables like '%quer%';

2)檢視慢查詢狀態:show variables like 'show%'

  • 分析SQL語句

MySql內部函式explain(查詢sql的執行計劃),explain返回各列的含義

table:顯示這一行的資料是關於哪張表的
type:這是重要的列,顯示連線使用了何種型別。
從最好到最差的連線型別為const、eq_reg、ref、range、index 和ALL
possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。
key:實際使用的索引。如果為NULL,則沒有使用索引。
keyjen:使用的索引的長度。在不損失精確性的情況下,長度越短越好
ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數
rows: MYSQL認為必須檢查的用來返回請求資料的行數
  • 子查詢優化

子查詢儘量不用或改成join

  • group by 優化

group by 儘量使用索引欄位

  • limit 優化

給查詢語句增加limit

二、索引優化

  • 重複索引
  • 冗餘索引
  • 檢查重複及冗餘索引的工具
  • 刪除不用的索引

三、資料庫結構優化

  • 選擇合適的資料型別
  • 表的正規化化
  • 表的反正規化化的使用
  • 表的垂直拆分
  • 表的水行拆分

四、配置優化

  • 作業系統配置

1)快取池大小

2)開啟檔案限制

  • MySQL配置

1)innodb緩衝池記憶體佔用大小

2)innodb_buffer_pool_instances 緩衝池個數

3)innodb_log_buffer_size 緩衝的大小

4)innodb IO配置

五、伺服器硬體優化

  • CPU 多核
  • 硬碟 raid0 raid1 raid5增加硬碟IO速度
參考文章列表:
MySql資料庫優化可以從哪幾個方面進行? - 青春陽光 - 部落格園​www.cnblogs.com


p.s.收錄一些mysql第三方客戶端工具

  • MySQL官網推薦 MySQL Workbench
  • Navicat
  • phpMyAdmin
五種常用的MySQL圖形化管理工具_劉鵬博的部落格-CSDN部落格​blog.csdn.net