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

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

編輯:MySQL綜合教程

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)

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