如何進行vps主機mysql最佳化

來源:互聯網
上載者:User

標籤:

很多時候,在一些的情況下,由於網站資料的越來越多,從而導致有時候,我們的網站訪問速度變得很慢,很多的人們通常都以為是網站程式出了問題,或者是中毒啊,被攻擊所造成,其實,很多的時候,只是因為我們沒有能夠很好的最佳化我們的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最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.