程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql優化,mysql優化方案

mysql優化,mysql優化方案

編輯:MySQL綜合教程

mysql優化,mysql優化方案


1.啟用InnoDB的每張表一個數據文件設置

InnoDB可以把每個數據庫的信息保存在一個.idb數據文件中,每個.ibd文件代表自己的表空間,通過這樣的方式可以更快地完成類

似“TRUNCATE”的數據庫操作,當刪除或截斷一個數據庫表時你也可以回收未使用的空間,這樣配置的另一個好處是你可以將某些數據

 庫表存放在一個單獨的存儲設備,這大大提升你磁盤的I/O負載

MySQL5.6及以上的版本默認啟用了innodb_file_per_table=1

 

2.將MySQL數據分儲到獨立分區上,注意此設置在MariaDB上無效

建議使用單獨的磁盤(最好是SSD)用於MySQL服務,創建新分區,格式化新分區,並掛載新分區這裡略過,假設/ssd是我們新分區掛載的

目錄,MySQL數據目錄是/var/lib/mysql, 接下來復制整個數據目錄到新分區中 cp -Rp /var/lib/mysql /ssd/  復制完成後重命名原來的數據目

錄 mv /var/lib/mysql /var/lib/mysql-backup 接下來創建一個符號鏈接 ln -sv /ssd/mysql /var/lib/mysql

 

3.優化使用InnoDB的緩沖池,InnoDB引擎在內存中有一個緩沖池用於緩存數據和索引,這有助於你更快地執行MySQL/MariaDB查詢語

句,在一個專用的機器上,你可能會把60%~70%的內存分配給innodb_buffer_pool_size,如果機器還運行了其它的服務應該重新考慮這個值

得設置

 

4.在MySQL中避免使用swappiness,‘交換’是一個當系統移動部分內存到一個稱為‘交換空間’的特殊磁盤空間時的過程,當系統用完

物理內存後就會出現這種情況,系統將信息寫入磁盤而不是釋放一些內存,磁盤要比內存慢得多因此 sysctl -w vm.swappiness=0 關閉

swappiness

 

5.設置MySQL的最大連接數,只有當執行MySQL請求的時候才會建立連接,執行完成後會關閉連接並被新的連接取代,記住,太多的連

接會導致內存的使用量過高並且會鎖住你的MySQL服務器,一般小網站100~200,較大可能需要500~800甚至更多,可以動態地改變

max_connections的值而無需重啟MySQL服務器 set global max_connections = 500;

 

6.配置MySQL的線程緩存數量,當客戶端斷開連接時,如果當前線程數小於thread_cache_size,它的線程將被放入緩存中,下一個請求通

過使用緩存池中的線程來完成,要提高服務器的性能,你可以將此值設置相對高一些,查看線程緩存命中率 show status like

‘threads_created’; show status like 'connections'; 使用以下公式來計算線程池的命中率 100 - ((threads_created / connections) *

100) 如果得到一個較低的數字,意味著大多數mysql連接使用新的線程,而不是從緩存中加載,這時需要增加thread_cache_size值,這裡有

一個好處是可以動態地改變thread_cache_size,而無需重啟MySQL服務,通過以下方法實現 mysql > set global thread_cache_size = 16;

 

7.禁用MySQL的DNS反向查詢,在配置文件中添加以下選項 skip_name_resolve

 

 

8.配置MySQL的查詢緩存容量,如果你有很多重復的查詢並且數據不經常改變---請使用緩存查詢,query_cache_size 設置為GB級會降低服

務器的性能,原因是更新過程中線程需要鎖定緩存,通常設置為200~300MB應該足夠了,網站比較小可以先給64M並在以後及時去增

加,在配置文件中添加如下配置 query_cache_type = 1 query_cache_size = 64M  query_cache_limit = 256K  query_cache_min_res_unit = 2k

 

 

9.配置臨時表容量和內存表最大容量,tmp_table_size 和 max_heap_table_size 這兩個變量的大小應該相同,它們可以讓你避免磁盤寫

入,tmp_table_size 是內置內存表的最大空間,如果表的大小超出限值將會被轉換為磁盤上的MyISAM表,這會影響數據庫的性能,建議

在服務器上設置這兩個值為沒GB內存給64M, tmp_table_size= 64M  max_heap_table_size= 64M

 

10.啟用MySQL慢查詢日志

 

11.檢查MySQL的空閒連接,空閒連接會消耗資源,空閒連接是出於‘sleep’狀態並且保持了很長一段時間的連接,使用 mysqladmin

processlist -uroot -p | grep “sleep” 查看空閒連接 set global wait_timeout= 60 要重啟也有效則需修改配置文件,默認的值為28800秒

 

12.有時候MySQL/MariaDB 數據庫中的表很容易崩潰,尤其是服務器意外關機,文件系統突然崩潰或復制過程中仍然訪問數據庫,有一

個稱為‘mysqlcheck’的免費開源工具,它會自動檢查,修復和優化linux中數據庫的所有表  mysqlcheck --auto-repair --check --optimize -

-all-databases

mysqlcheck --auto-repair --check --optimize databasename

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved