標籤:
很多時候,在一些的情況下,由於網站資料的越來越多,從而導致有時候,我們的網站訪問速度變得很慢,很多的人們通常都以為是網站程式出了問題,或者是中毒啊,被攻擊所造成,其實,很多的時候,只是因為我們沒有能夠很好的最佳化我們的vps主機上的mysql資料庫導致的。本文詳細講解如何配置適合自己vps主機的mysql設定檔
最佳化vps主機上的mysql資料庫的目的就是,使之更合適vps主機這樣的環境
query_cache_size=268435456
query_cache_type=1
query_cache_limit=1048576
查看mysql-server靜態參數值命令
mysql>showvariables;
或者mysqladmin-urootvariables
mysql伺服器的參數很多,如果需要瞭解某個參數的詳細定義,可以使用mysqld–verbose–help|more
查看mysql-server動態狀態資訊命令
mysql>showstatus;
或者mysqladmin-urootstatus
其中showstatus分為show[session|global]status;可以根據需要加上參數“session”或者”global”來顯示session級(當前統計)的統計結果和global級(自資料庫上次啟動至今)的統計結果,如果不寫,預設為”session”
1、查看和修改預設的儲存引擎,關閉不需要的儲存引擎
在我們使用vps主機過程中,很多使用者只使用MyISAM一個引擎,關閉那麼沒有使用的InnoDBMEMORY等其他引擎
查看當前系統有哪些引擎
mysql>SHOWENGINES\G
或者第二種方法
mysql>SHOWVARIABLESLIKE‘have%‘;
查看預設引擎
mysql>showvariableslike‘table_type‘;
+---------------+--------+
|Variable_name|Value|
+---------------+--------+
|table_type|MyISAM|
+---------------+--------+
1rowinset(0.00sec)
或者
mysql>showvariableslike‘storage_engine‘;
+----------------+--------+
|Variable_name|Value|
+----------------+--------+
|storage_engine|MyISAM|
+----------------+--------+
1rowinset(0.00sec)
mysql預設的儲存引擎是MyISAM,修改預設的儲存引擎可以修改/etc/my.cnf參數檔案,在[mysqld]欄位裡面增加default-storage-engine=innodb,這裡假設設定預設為innodb,根據自己的需要進行設定,關閉不需要的儲存引擎,可以修改/etc/my.cnf參數檔案,在[mysqld]欄位裡面增加–skip-innodb。
2、調節key_buffer_size大小
mysql>showvariableslike‘key_buffer_size‘;
+-----------------+-----------+
|Variable_name|Value|
+-----------------+-----------+
|key_buffer_size|402653184|
+-----------------+-----------+
1rowinset(0.00sec)
mysql>
從上面可以看到,key_buffer_size為:384M,可以修改/etc/my.cnf參數檔案,在[mysqld]欄位裡面增加key_buffer_size=384M,當然也可以使用mysql>setgrobalkey_buffer_size=512M修改。
此參數是用來<strong>設定索引塊</strong>(IndexBlocks)緩衝的大小,它被所有的線程共用,只適合MyISAM儲存引擎。
3、調節table_cache設定
這個參數表示資料庫使用者開啟表的緩衝數量,每個串連進來,都會至少開啟一個表緩衝,如此,table_cache與max_connections有關,
查看當前的table_cache值
mysql>showvariableslike‘table_cache‘;
+---------------+-------+
|Variable_name|Value|
+---------------+-------+
|table_cache|4096|
+---------------+-------+
1rowinset(0.00sec)
從上面可以看到,table_cache為:4096,可以修改/etc/my.cnf參數檔案,在[mysqld]欄位裡面增加table_cachee=4096
4、調節query_cache設定
QueryCache在提高資料庫效能方面具有非常重要的作用,其設定也非常簡單,僅需要在設定檔寫入兩行:query_cache_type和query_cache_size,而且MySQL的querycache非常快!而且一旦命中,就直接發送給用戶端,節約大量的CPU時間。
當然,非SELECT語句對緩衝是有影響的,它們可能使緩衝中的資料到期。一個UPDATE語句引起的部分表修改,將導致對該表所有的緩衝資料失效,這是MySQL為了平衡效能而沒有採取的措施。http://vps.zzidc.com/ 因為,如果每次UPDATE需要檢查修改的資料,然後撤出部分緩衝將導致代碼的複雜度增加。
query_cache_type:0代表不使用緩衝,1代表使用緩衝,2代表根據需要使用。
設定1代表緩衝永遠有效,如果不需要緩衝,就需要使用如下語句:
SELECTSQL_NO_CACHE*FROMmy_tableWHERE…
如果設定為2,需要開啟緩衝,可以用如下語句:
SELECTSQL_CACHE*FROMmy_tableWHERE…
用SHOWSTATUS可以查看緩衝的情況:
mysql>showstatuslike‘Qca%‘;
+-------------------------+----------+
|Variable_name|Value|
+-------------------------+----------+
|Qcache_queries_in_cache|8|
|Qcache_inserts|545875|
|Qcache_hits|83951|
|Qcache_lowmem_prunes|0|
|Qcache_not_cached|2343256|
|Qcache_free_memory|33508248|
|Qcache_free_blocks|1|
|Qcache_total_blocks|18|
+-------------------------+----------+
8rowsinset(0.00sec)
如果需要計算命中率,需要知道伺服器執行了多少SELECT語句:
mysql>showstatuslike‘Com_sel%‘;
+---------------+---------+
|Variable_name|Value|
+---------------+---------+
|Com_select|2889628|
+---------------+---------+
1rowinset(0.01sec)
在本例中,MySQL命中了2,889,628條查詢中的83,951條,而且INSERT語句只有545,875條。因此,它們兩者的和和280萬的總查詢相比有很大差距,因此,我們知道本例使用的緩衝類型是2。
而在類型是1的例子中,Qcache_hits的數值會遠遠大於Com_select。Qcache_not_cached是可以記錄DML語句的數量的。
想瞭解更為詳盡的vps主機,mysql該如何更為準確的去進行配置等相關方法,可以閱讀相關文章:VPS主機上配置IIS+PHP+MySQL+Zend教程全解
如何進行vps主機mysql最佳化