MySQL 緩存技術(shù)可提高數(shù)據(jù)庫查詢性能,緩存技術(shù)使數(shù)據(jù)的訪問速度更快。MySQL 查詢和更新語句執(zhí)行時,會先在緩存中搜索需要的數(shù)據(jù),如果找到,就不需要再次查詢硬盤,從而提高了查詢性能。
MySQL 使用兩種緩存技術(shù):查詢緩存和 InnoDB 緩存。
查詢緩存
MySQL 查詢緩存存儲查詢的結(jié)果集,以便下一次查詢相同的數(shù)據(jù)時直接從緩存中獲取結(jié)果。MySQL 查詢緩存的優(yōu)點是:節(jié)省 CPU 時間,快速回應(yīng)查詢請求。但缺點也是很明顯的:查詢緩存中的數(shù)據(jù)容易變得過時并且只支持靜態(tài)數(shù)據(jù)。
SET GLOBAL query_cache_size = 1048576; # 設(shè)置查詢緩存區(qū)大小為1MB SHOW GLOBAL STATUS LIKE 'Qcache%'; # 查看查詢緩存統(tǒng)計信息
InnoDB 緩存
InnoDB 緩存是 InnoDB 存儲引擎的內(nèi)部緩存,與查詢緩存不同,InnoDB 緩存不緩存查詢結(jié)果集,而是緩存頁面數(shù)據(jù)和索引數(shù)據(jù)。InnoDB 使用 LRU(最近最少使用)算法選擇哪些數(shù)據(jù)重要,緩存大小是通過 innodb_buffer_pool_size 參數(shù)設(shè)置。
SET GLOBAL innodb_buffer_pool_size = 134217728; # 設(shè)置 InnoDB 緩存區(qū)大小為128MB SHOW GLOBAL STATUS LIKE 'InnoDB%'; # 查看 InnoDB 緩存統(tǒng)計信息
這兩種緩存技術(shù)各有優(yōu)劣,當(dāng)需要提高查詢性能時,可選擇適當(dāng)?shù)木彺娌呗浴?/p>