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

VPS主機上MySQL數據庫的優化

編輯:MySQL綜合教程

VPS主機上MySQL數據庫的優化


概述:在linux vps主機上配置mysql數據庫,由於默認使用yum安裝的數據庫啟動了InnoDB引擎,同時其/etc/my.cnf配置都我們的vps主機不是很適合,本文詳細講解如何配置適合自己vps主機的mysql配置文件

目的:優化vps主機上的mysql數據庫,使之更合適vps主機這樣的環境

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

查看mysql-server靜態參數值命令
mysql>show variables;
或者mysqladmin -uroot variables
mysql服務器的參數很多,如果需要了解某個參數的詳細定義,可以使用mysqld –verbose –help | more
查看mysql-server動態狀態信息命令

mysql>show status;

或者mysqladmin -uroot status
其中show status分為show [session|global]status;可以根據需要加上參數“session”或者”global”來顯示session級(當前統計)的統計結果和global級(自數據庫上次啟動至今)的統計結果,如果不寫,默認為”session”

1、查看和修改默認的存儲引擎,關閉不需要的存儲引擎
在我們使用vps主機過程中,很多用戶只使用MyISAM一個引擎,關閉那麼沒有使用的InnoDB MEMORY等其他引擎
查看當前系統有哪些引擎

mysql>SHOW ENGINES \G
或者第二種方法
mysql>SHOW VARIABLES LIKE 'have%';

查看默認引擎

mysql> show variables like 'table_type';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| table_type    | MyISAM |
+---------------+--------+
1 row in set (0.00 sec)
或者
mysql> show variables like 'storage_engine';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | MyISAM |
+----------------+--------+
1 row in set (0.00 sec)

mysql默認的存儲引擎是MyISAM,修改默認的存儲引擎可以修改/etc/my.cnf參數文件,在[mysqld]字段裡面增加default-storage-engine=innodb,這裡假設設置默認為innodb,根據自己的需要進行設置,關閉不需要的存儲引擎,可以修改/etc/my.cnf參數文件,在[mysqld]字段裡面增加–skip-innodb。
2、調節key_buffer_size大小

mysql> show variables like 'key_buffer_size';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| key_buffer_size | 402653184 |
+-----------------+-----------+
1 row in set (0.00 sec)
 
mysql>
從上面可以看到,key_buffer_size為:384M,可以修改/etc/my.cnf參數文件,在[mysqld]字段裡面增加key_buffer_size = 384M,當然也可以使用mysql>set grobal key_buffer_size=512M修改。
此參數是用來<strong>設置索引塊</strong>(Index Blocks)緩存的大小,它被所有的線程共享,只適合MyISAM存儲引擎。

3、調節table_cache設置
這個參數表示數據庫用戶打開表的緩存數量,每個連接進來,都會至少打開一個表緩存,如此,table_cache與max_connections有關,
查看當前的table_cache值

mysql> show variables like 'table_cache';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| table_cache   | 4096  |
+---------------+-------+
1 row in set (0.00 sec)

從上面可以看到,table_cache為:4096,可以修改/etc/my.cnf參數文件,在[mysqld]字段裡面增加table_cachee = 4096

4、調節query_cache設置

Query Cache 在提高數據庫性能方面具有非常重要的作用,其設定也非常簡單,僅需要在配置文件寫入兩行: query_cache_type 和 query_cache _size,而且 MySQL 的 query cache 非常快!而且一旦命中,就直接發送給客戶端,節約大量的 CPU 時間。

當然,非 SELECT 語句對緩沖是有影響的,它們可能使緩沖中的數據過期。一個 UPDATE 語句引起的部分表修改,將導致對該表所有的緩沖數據失效,這是 MySQL 為了平衡性能而沒有采取的措施。因為,如果每次 UPDATE 需要檢查修改的數據,然後撤出部分緩沖將導致代碼的復雜度增加。

query_cache_type :0 代表不使用緩沖, 1 代表使用緩沖,2 代表根據需要使用。

設置 1 代表緩沖永遠有效,如果不需要緩沖,就需要使用如下語句:

SELECT SQL_NO_CACHE * FROM my_table WHERE …

如果設置為 2 ,需要開啟緩沖,可以用如下語句:

SELECT SQL_CACHE * FROM my_table WHERE …

用 SHOW STATUS 可以查看緩沖的情況:

mysql> show status like '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 |
+-------------------------+----------+
8 rows in set (0.00 sec)

如果需要計算命中率,需要知道服務器執行了多少 SELECT 語句:

mysql> show status like 'Com_sel%';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Com_select | 2889628 |
+---------------+---------+
1 row in set (0.01 sec)

在本例中, MySQL 命中了 2,889,628 條查詢中的 83,951 條,而且 INSERT 語句只有 545,875 條。因此,它們兩者的和和280萬的總查詢相比有很大差距,因此,我們知道本例使用的緩沖類型是 2 。

而在類型是 1 的例子中, Qcache_hits 的數值會遠遠大於 Com_select 。 Qcache_not_cached是可以記錄DML語句的數量的

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