筆試實(shí)例:簡(jiǎn)單敘述一下MYSQL的優(yōu)化
1.數(shù)據(jù)庫(kù)的設(shè)計(jì)
盡量把數(shù)據(jù)庫(kù)設(shè)計(jì)的更小的占磁盤(pán)空間.
1).盡可能使用更小的整數(shù)類型.(mediumint就比int更合適).
2).盡可能的定義字段為not null,除非這個(gè)字段需要null.
3).如果沒(méi)有用到變長(zhǎng)字段的話比如varchar,那就采用固定大小的紀(jì)錄格式比如char.
4).表的主索引應(yīng)該盡可能的短.這樣的話每條紀(jì)錄都有名字標(biāo)志且更高效.
5).只創(chuàng)建確實(shí)需要的索引。索引有利于檢索記錄,但是不利于快速保存記錄。如果總是要在表的組合字段上做搜索,那么就在這些字段上創(chuàng)建索引。索引的第一部分必須是最常使用的字段.如果總是需要用到很多字段,首先就應(yīng)該多復(fù)制這些字段,使索引更好的壓縮。
6).所有數(shù)據(jù)都得在保存到數(shù)據(jù)庫(kù)前進(jìn)行處理。
7).所有字段都得有默認(rèn)值。
8).在某些情況下,把一個(gè)頻繁掃描的表分成兩個(gè)速度會(huì)快好多。在對(duì)動(dòng)態(tài)格式表掃描以取得相關(guān)記錄時(shí),它可能使用更小的靜態(tài)格式表的情況下更是如此。
2.系統(tǒng)的用途
1).盡量使用長(zhǎng)連接.
2).explain 復(fù)雜的SQL語(yǔ)句。
3).如果兩個(gè)關(guān)聯(lián)表要做比較話,做比較的字段必須類型和長(zhǎng)度都一致.
4).LIMIT語(yǔ)句盡量要跟order by或者 distinct.這樣可以避免做一次full table scan.
5).如果想要清空表的所有紀(jì)錄,建議用truncate table tablename而不是delete from tablename.
6).能使用STORE PROCEDURE 或者 USER FUNCTION的.時(shí)候.
7).在一條insert語(yǔ)句中采用多重紀(jì)錄插入格式.而且使用load data infile來(lái)導(dǎo)入大量數(shù)據(jù),這比單純的indert快好多.
8).經(jīng)常OPTIMIZE TABLE 來(lái)整理碎片.
9).還有就是date 類型的數(shù)據(jù)如果頻繁要做比較的話盡量保存在unsigned int 類型比較快。
3.系統(tǒng)的瓶頸
1).磁盤(pán)搜索.
并行搜索,把數(shù)據(jù)分開(kāi)存放到多個(gè)磁盤(pán)中,這樣能加快搜索時(shí)間.
2).磁盤(pán)讀寫(xiě)(IO)
可以從多個(gè)媒介中并行的讀取數(shù)據(jù)。
3).CPU周期
數(shù)據(jù)存放在主內(nèi)存中.這樣就得增加CPU的個(gè)數(shù)來(lái)處理這些數(shù)據(jù)。
4).內(nèi)存帶寬
當(dāng)CPU要將更多的數(shù)據(jù)存放到CPU的緩存中來(lái)的話,內(nèi)存的帶寬就成了瓶頸.
【筆試實(shí)例:簡(jiǎn)單敘述一下MYSQL的優(yōu)化】相關(guān)文章:
一些關(guān)于MySql加速和優(yōu)化的筆試題01-06
幾個(gè)MySql的筆試題01-06
MYSQL基礎(chǔ)筆試題01-06
遇到的Mysql的筆試題01-06
MySQL筆試題目集錦01-06
調(diào)節(jié)和優(yōu)化MySQL安裝的技巧10-31
C++筆試實(shí)例分析12-19