今天我們不討論其它優化,就就配置上,講講mysql的優化,看看怎麼處理更好。最好是固態硬碟。
注意:此處說明的my.cnf可能根據不同的配置位置顯示情況不一樣。
檢視當前最大連線數:
show variables like 『max_connections』;
檢視最大響應連線數:
show status like 『max_used_connections』;
設定建議:建議設定最大響應連線數是最大連線數的80%;
也就是說:max_used_connections /max_connections = 80%;
設定mysql最大連線數的方法:
1 通過命令列進行配置【缺點:重啟後消失】
set global max_connections=1000;
2 通過設定my.ini或者my.cnf裡面的
max_connections = 數字
注意:此處設定的最大連線數,有bug,如果在linux下預設被限制為214個。
在mysql的官方文件中這樣說過:
mysql 能夠支援的最大連線數量受限於作業系統,必要時可以增大 open-files-limit。
通過下面的引數ulimit -n 檢視linux預設下開啟的引數是 1024個。
可以通過如下方法檢視連線
當使用者連線數量超過 max_connections 數量時候,更多的請求就會被放置在堆疊中,設定這個數字,也就是說設定tcp/ip的偵測佇列。
建議設定在100個左右,無特殊設定。
設定方式:
通過my.cnf 新增 back_log = 數字 設定即可。
乙個互動連線在被伺服器在關閉前等待行動的秒數。乙個互動的客戶被定義為對mysql_real_connect()使用client_interactive 選項的客戶。
預設數值是28800,可調優為7200。
設定方式:
通過my.cnf 新增 interactive_timeout = 數字 設定即可。
key_buffer_size 指的是索引緩衝區大小,他決定索引處理的速度,尤其是索引讀的速度,通過檢測狀態值 key_read_requests 跟 key_reads,可以知道key_buffer_size設定是否合理,這裡比例比如 key_reads/key_read_requests 應該盡可能低,至少是1:100,或者1:1000.可以通過如下語句獲取到
檢測讀取請求:
show global status like 『key_read%』;
顯示索引快取大小的設定:
show variables like 『key_buffer_size』;
注意:上面的資料需要多執行後,進行調優設定。
設定方式:
通過my.cnf 新增 key_buffer_size = 數字 設定即可。
使用查詢緩衝區,mysql將查詢的結果存放在緩衝區中,如果後面有相同的sql查詢,就會直接在緩衝區內讀取。
檢視是否合理:
執行:show status like 『qcache%』;
獲取結果:
+-------------------------+----------+
| variable_name | value|
+-------------------------+----------+
| qcache_free_blocks | 1|
| qcache_free_memory | 16760152 |
| qcache_hits | 0|
| qcache_inserts | 0|
| qcache_lowmem_prunes| 0|
| qcache_not_cached | 0|
| qcache_queries_in_cache | 0|
| qcache_total_blocks | 1|
+-------------------------+----------+
引數說明:
如果qcache_lowmem_prunes的值非常大,則表明經常出現緩衝不夠的情況,
如果qcache_hits的值也非常大,則表明查詢緩衝使用非常頻繁,此時需要增加緩衝大小;
如果qcache_hits的值不大,則表明你的查詢重複率很低,這種情況下使用查詢緩衝反而會影響效率,那麼可以考慮不用查詢緩衝。
此外,在select語句中加入sql_no_cache可以明確表示不使用查詢緩衝。
與查詢緩衝有關的引數還有query_cache_type、query_cache_limit、query_cache_min_res_unit。
query_cache_type指定是否使用查詢緩衝,可以設定為0、1、2,該變數是session級的變數。
query_cache_limit指定單個查詢能夠使用的緩衝區大小,預設為1m。
query_cache_min_res_unit是在4.1版本以後引入的,它指定分配緩衝區空間的最小單位,預設為4k。檢查狀態值qcache_free_blocks,如果該值非常大,則表明緩衝區中碎片很多,這就表明查詢結果都比較小,此時需要減小query_cache_min_res_unit。
可以使用下面查詢:
show variables like 『query_cache%』;
+------------------------------+----------+
| variable_name| value|
+------------------------------+----------+
| query_cache_limit| 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | off |
| query_cache_wlock_invalidate | off |
+------------------------------+----------+
查詢快取碎片率= qcache_free_blocks / qcache_total_blocks * 100%
如果查詢快取碎片率超過20%,可以用flush query cache整理快取碎片,或者試試減小query_cache_min_res_unit,如果你的查詢都是小資料量的話。
查詢快取利用率= (query_cache_size – qcache_free_memory) / query_cache_size * 100%
查詢快取利用率在25%以下的話說明query_cache_size設定的過大,可適當減小;查詢快取利用率在80%以上而且qcache_lowmem_prunes > 50的話說明query_cache_size可能有點小,要不就是碎片太多。
查詢快取命中率= (qcache_hits – qcache_inserts) / qcache_hits * 100%
示例伺服器查詢快取碎片率=20.46%,查詢快取利用率=62.26%,查詢快取命中率=1.94%,命中率很差,可能寫操作比較頻繁吧,而且可能有些碎片。
這個值越大越好,這能保證你在大多數的讀取操作時使用的是記憶體而不是硬碟。典型的值是5-6gb(8gb記憶體),20-25gb(32gb記憶體),100-120gb(128gb記憶體)。
李景山php XSS攻擊
xss css cross site scripting,跨站指令碼。跨 主要是因為遠端或者是第三方域上的指令碼資源。例子 eval location.hash substr 1 net test xss.html alert no 型別 反射型,儲存型,dom xss 反射型 echo get x...
李景山php Linux課程 vim
基本介紹 vim是vi的擴充套件,被譽為終端編輯器之神 軟體安裝 yum install y vim 工作模式 1 正常模式 0 使用格式說明 vim filename 若檔案已存在,則直接開啟 若檔案不存在,則會新建,若不修改則不會建立空檔案 1 主要用來瀏覽或修改文字內容 2 使用vim開啟檔案...
李景山php php安裝redis擴充套件
1.使用phpinfo 函式檢視php的版本資訊,這會決定擴充套件檔案版本 2.根據php版本號,編譯器版本號和cpu架構,3.解壓縮後,將php redis.dll和php igbinary.dll拷貝至php的ext目錄下 4.修改php.ini,在該檔案中加入 php redis extens...