亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

數(shù)據(jù)庫(kù)的優(yōu)化問題

來(lái)源:奈良佳晴子 發(fā)布時(shí)間:2018-08-13 14:08:41 閱讀量:1056

順序是:

第一,優(yōu)化sql索引;

第二,增加緩存,memcached,redis

第三,主從復(fù)制或者主主復(fù)制,讀寫分離。

第四,mysql自帶的分區(qū)表

第五 垂直拆分

第六 水平拆分,針對(duì)數(shù)據(jù)量大的表,選擇一個(gè)合理的sharding key。


在大量讀的應(yīng)用場(chǎng)景下,mysql 的引擎應(yīng)該用myisam。因?yàn)檫@個(gè)引擎的讀效果好,寫的效率比較差。這和它數(shù)據(jù)存儲(chǔ)格式,索引的指針和鎖的策略有關(guān)的,它的數(shù)據(jù)是順序存儲(chǔ)的(innodb數(shù)據(jù)存儲(chǔ)方式是聚簇索引),他的索引btree上的節(jié)點(diǎn)是一個(gè)指向數(shù)據(jù)物理位置的指針,所以查找起來(lái)很快,(innodb索引節(jié)點(diǎn)存的則是數(shù)據(jù)的主鍵,所以需要根據(jù)主鍵二次查找);myisam鎖是表鎖,只有讀讀之間是并發(fā)的,寫寫之間和讀寫之間(讀和插入之間是可以并發(fā)的,去設(shè)置concurrent_insert參數(shù),定期執(zhí)行表優(yōu)化操作,更新操作就沒有辦法了)是串行的,所以寫起來(lái)慢,并且默認(rèn)的寫優(yōu)先級(jí)比讀優(yōu)先級(jí)高,高到寫操作來(lái)了后,可以馬上插入到讀操作前面去,如果批量寫,會(huì)導(dǎo)致讀請(qǐng)求餓死,所以要設(shè)置讀寫優(yōu)先級(jí)或設(shè)置多少寫操作后執(zhí)行讀操作的策略;myisam不要使用查詢時(shí)間太長(zhǎng)的sql,如果策略使用不當(dāng),也會(huì)導(dǎo)致寫?zhàn)I死,所以盡量去拆分查詢效率低的sql,


innodb一般都是行鎖,這個(gè)一般指的是sql用到索引的時(shí)候,行鎖是加在索引上的,不是加在數(shù)據(jù)記錄上的,如果sql沒有用到索引,仍然會(huì)鎖定表,mysql的讀寫之間是可以并發(fā)的,普通的select是不需要鎖的,當(dāng)查詢的記錄遇到鎖時(shí),用的是一致性的非鎖定快照讀,也就是根據(jù)數(shù)據(jù)庫(kù)隔離級(jí)別策略,會(huì)去讀被鎖定行的快照,其它更新或加鎖讀語(yǔ)句用的是當(dāng)前讀,讀取原始行;因?yàn)槠胀ㄗx與寫不沖突,所以innodb不會(huì)出現(xiàn)讀寫?zhàn)I死的情況,又因?yàn)樵谑褂盟饕臅r(shí)候用的是行鎖,鎖的粒度小,競(jìng)爭(zhēng)相同鎖的情況就少,就增加了并發(fā)處理,所以并發(fā)讀寫的效率還是很優(yōu)秀的,問題在于索引查詢后的根據(jù)主鍵的二次查找導(dǎo)致效率低;

標(biāo)簽: 數(shù)據(jù)庫(kù)
分享:
評(píng)論:
你還沒有登錄,請(qǐng)先