You are on page 1of 26

H qun tr C s d liu

Ti u ha v Tinh chnh (Optimize, Tuning)

L Hng Hi, hailh@vnu.edu.vn B mn CHTTT, H Cng ngh

Tng tc Client-Server

Kt ni ti server CSDL: Thay v m mt kt ni mi cho mi cu lnh SQL, bn khch nn gi mt kt ni m cho ton b phin lm vic. M v ng cc kt ni tiu tn ti thi gian Truyn d liu: Ly tng dng mt kt qu t server chm hn ly nhm cc dng

Giao dch

Ni chung, hiu nng c nng cao bng cch s dng cc giao dch nh, ngn Cc truy vn nh gim nguy c b tc (deadlock) S dng c khng kha (READ UNCOMMITED level) thc hin nhanh nu kt qu khng qu chnh xc c chp nhn

Ti u bng

Cu lnh OPTIMIZE TABLE thc hin mt s chc nng nh chng phn mnh, sp xp cc ch mc ca cc bng

Lu li cc truy vn chm

[mysqld] log-slow-queries[=<path/filename>] long_query_time=<time-in-seconds>

Truy vn

Cc truy vn khong (tm cc gi tr trong mt khong) chm hn truy vn tm gi tr chnh xc Truy vn join, nested v cc truy vn s dng cc mnh nh DISTINCT v ORDER BY thng chm

Ch mc (index)

Ti u ch mc

MySQL c th s dng ch mc trn cc ct hiu qu hn nu c khai bo cng kiu v cng c V d VARCHAR(10) v CHAR(10) cng kch thc VARCHAR(10) v CHAR(15) khng cng kch thc

Nn nh ch mc khi

nh ch mc cc ct xut hin trong iu kin tm kim nh ch mc cc ct xut hin trong iu kin ni. MySQL t ng to cc ch mc khi nh ngha cc kha chnh v cc kha ngoi

Khng nn nh ch mc khi

Khng nn nh ch mc cc ct ch xut hin trong mc SELECT Khng nn nh ch mc cc ct c min nh. Thc t khi MySQL tm ra rng mt gi tr xut hin trong hn 30% cc dng ca bng, MySQL s khng s dng ch mc Ch to cc ch mc nu cn

Loi ch mc

Hash index: s dng hm bm p dng cho gi tr ca ct. Hash indexes rt nhanh vi so snh chnh xc (= hoc <=>) operators. Nhng chm vi so snh gi tr trong khong gi tr B-tree indexes: s dng hiu qu vi so snh chnh xc hoc so snh da trn khong )<, <=, =, >=, >, <>, !=, v BETWEEN). B-tree indexes c th s dng cho tm kim theo mu (LIKE) nu mu bt u bng ch ci thay v k t wildcard

Qa trnh thi hnh truy vn

K hoch thi hnh truy vn

Ph thuc vo cc chi tit ca cc bng, cc ct, ch mc v cc iu kin trong mnh WHERE, b ti u ca MySQL s xem xt nhiu k thut thc thi truy vn hiu qu Cu lnh EXPLAIN c th s dng ly thng tin v cch MySQL thi hnh mt cu lnh SELECT
http://dev.mysql.com/doc/refman/5.5/en/explain-output.html

Hiu chnh Buffering v Caching


InnoDB Buffer Pool MyISAM Key Cache MySQL Query Cache

InnoDB Buffer Pool

InnoDB duy tr mt khng gian lu tr gi l buffer pool lu tr d liu v ch mc trong b nh Bit cch InnoDB lm vic v s dng u im lu gi d liu thng xuyn trng b b nh l mt kha cnh quan trng trong hiu chnh MySQL

Mt s cu hnh InnoDB Buffer Pool

innodb_buffer_pool_size Xc nh kch thc ca buffer pool innodb_buffer_pool_instances Chia buffer pool thnh nhng vng ring bit gim tranh chp trong cc thao tc c v ghi ng thi Xem thng tin v trng thi InnoDB, s dng lnh SHOW ENGINE INNODB STATUS

MyISAM Key Cache

gim qu trnh vo ra, MyISAM s dng k thut cache lu cc khi ch mc c truy cp thng xuyn nht trong b nh. Mt cu trc d liu gi l key cache c duy tr

Ti trc ch mc (Index Preload)

ti trc mt ch mc vo cache, s dng cu lnh LOAD INDEX INTO CACHE V d: LOAD INDEX INTO CACHE table1, table2 IGNORE LEAVES;

Thit lp tham s

SET GLOBAL keycache1.key_buffer_size=128*1024; SHOW VARIABLES LIKE 'key_buffer_size'; xa key cache, thit lp kch c thnh 0

MySQL Query Cache

Query cache lu cu lnh SELECT cng vi kt qu tng ng c tr li cho my khch. Nu nhn c mt cu lnh tng t sau , server ly kt qu t trong cache thay v dch v thi hnh lnh Query cache hu ch khi c cc bng khng thay i thng xuyn Nu mt bng thay i, tt c cc cached query s dng bng khng cn hiu lc v b loi khi cache

MySQL Query Cache

Mc d cc gi tr c kh nng c truy xut t b nh (t InnoDB buffer pool hoc MyISAM key cache), s dng query cache trnh qu ti trong s l truy vn, quyt nh liu c s dng qut bng v xc nh cc khi d liu cho mi dng

Cc tham s Query Cache

query_cache_type: Xc nh ch hot ng ca query cache query_cache_limit: Xc nh kch thc ln nht cho mt kt qu c th lu trong cache query_cache_size: Xc nh dung lng b nh phn phi cho cc Query cache. Gi tr ngm nh ca bin l 0, c ngha query caching khng c bt

query_cache_type:

0 hoc OFF: Khng lu tr cc kt qu hoc truy xut cc kt qu c l tr 1 hoc ON: Cho php lu tr tr cc cu lnh bt u vi SELECT SQL_NO_CACHE. 2 hoc DEMAND: Ch lu tr cc kt qu bt u SELECT SQL_CACHE.

Hin th hiu nng ca query cache

SHOW STATUS LIKE 'Qcache%';

Xem xt thng tin cc lung ang thi hnh

C th chun on cng vic MySQL servert ang lm xc nh cc im tc. Kim tra danh sch cc lung ang thi hnh trong server: SHOW FULL PROCESSLIST;

Ti liu tham kho


http://www.mysql.com http://dev.mysql.com/doc/refman/5.5/en/

You might also like