mysql學習記錄(二十二)–mysql的應用優化

一、理論:
1.使用連接池
a.把連接當做對象或設備,統一放在‘連接池’裡。凡是需要訪問資料庫的地方都從連接池裡取連接
2.減少對mysql的訪問:
a.避免對同一數據做重復檢索
b.使用查詢緩存
1)have_query_cache:表明伺服器在安裝時是否已經配置瞭高速緩存
2)query_cache_size:表明緩存區大小
3)query_cache_type:0/off = 緩存關閉,1/on = 緩存打開(使用sql_no_cache的select除外),2/demand(隻有帶sql_cache的select語句提供高速緩存
3.使用show status命令,監視查詢緩存使用:
a.qcache_queries_in_cache:在緩存中已註冊的查詢數目
b.qcache_inserts:被加入到緩存中的查詢數目
c.qcache_his:緩存采樣數目
d.qcache_lowmem_prunes:因為缺少內存而被從緩存中刪除的查詢數目
e.qcache_not_cached:沒有被緩存的查詢數目
f.qcache_free_memory:查詢緩存的空間內存總數
g.qcache_free_blocks:查詢緩存的空閑內存塊數目
h.qcache_total_blocks:查詢緩存的塊的總數目
4.增加cache層:
a.將部分數據從資料庫抽取出來存成文件
b.建立二級資料庫
5.負載均衡:
a.采取mysql復制分流查詢操作
b.采取分佈式資料庫架構,具體可以用mysql的cluster功能,但必須采用innod存儲引擎
6.其他優化方案:
a.對於沒有刪除行操作的myisam表,插入操作可以和查詢操作並行進行。因為不會出現阻塞。如果一定要刪除,可以在空閑時間刪除。並且在刪除之後進行optimize操作
b.充分利用列有默認值,隻有插入的值不同於默認值時才‘明確’插入值,這樣可以提高插入速度

c.表的字段盡可能不使用自增長變量,因為在高並發情況下自增長可能對效率有影響

二、實踐:

mysql> use sakila;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show variables like '%query_cache%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| have_query_cache             | YES     |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 0       |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+
6 rows in set (0.00 sec)

You May Also Like