李景山php mysql 配置優化

2021-07-31 11:48:13 字數 3663 閱讀 2867

今天我們不討論其它優化,就就配置上,講講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...