明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

說明幾種Mysql多字段大表的優(yōu)化方法

[摘要]有一個(gè)大數(shù)據(jù)表,有30個(gè)字段,int varchar text 字段都有,1000W+數(shù)據(jù),每天都會(huì)增加,經(jīng)常搜索的字段有10個(gè),這個(gè)怎么優(yōu)化?請(qǐng)教了一個(gè)人,才得到差不多的答案,感覺這種問題有點(diǎn)假,現(xiàn)實(shí)中基本不會(huì)出這種問題吧??jī)?yōu)化方案:主從同步+讀寫分離:這個(gè)表在有設(shè)備條件的情況下,讀寫分離,這...
有一個(gè)大數(shù)據(jù)表,有30個(gè)字段,int varchar text 字段都有,1000W+數(shù)據(jù),每天都會(huì)增加,經(jīng)常搜索的字段有10個(gè),這個(gè)怎么優(yōu)化?

請(qǐng)教了一個(gè)人,才得到差不多的答案,感覺這種問題有點(diǎn)假,現(xiàn)實(shí)中基本不會(huì)出這種問題吧?

優(yōu)化方案:
主從同步+讀寫分離:
這個(gè)表在有設(shè)備條件的情況下,讀寫分離,這樣能減少很多壓力,而且數(shù)據(jù)穩(wěn)定性也能提高

縱向分表:
根據(jù)原則,每個(gè)表最多不要超過5個(gè)索引,縱向拆分字段,將部分字段拆到一個(gè)新表

通常我們按以下原則進(jìn)行垂直拆分:(先區(qū)分這個(gè)表中的冷熱數(shù)據(jù)字段)
把不常用的字段單獨(dú)放在一張表;
text,blob等大字段拆分出來放在附表中;
經(jīng)常組合查詢的列放在一張表中;

缺點(diǎn)是:很多邏輯需要重寫,帶來很大的工作量。

利用表分區(qū):
這個(gè)是推薦的一個(gè)解決方案,不會(huì)帶來重寫邏輯等,可以根據(jù)時(shí)間來進(jìn)行表分區(qū),相當(dāng)于在同一個(gè)磁盤上,表的數(shù)據(jù)存在不同的文件夾內(nèi),能夠極大的提高查詢速度。

橫向分表:
1000W條數(shù)據(jù)不少的,會(huì)帶來一些運(yùn)維壓力,備份的時(shí)候,單表備份所需時(shí)間會(huì)很長(zhǎng),所以可以根據(jù)服務(wù)器硬件條件進(jìn)行水平分表,每個(gè)表有多少數(shù)據(jù)為準(zhǔn)。

有不好的地方,請(qǐng)指點(diǎn)一下,謝謝。

以上就是介紹幾種Mysql多字段大表的優(yōu)化方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。