如何提高mysql運(yùn)行效率 如何高效的使用mysql的幫助文檔?
如何高效的使用mysql的幫助文檔?1.在數(shù)據(jù)庫設(shè)計方面,設(shè)計一個結(jié)構(gòu)良好的數(shù)據(jù)庫,允許部分?jǐn)?shù)據(jù)下沉,徐昂要設(shè)置最合適的字段屬性,盡量將字段設(shè)置為notnull,這樣數(shù)據(jù)庫在查詢時就不需要比較null
如何高效的使用mysql的幫助文檔?
1.在數(shù)據(jù)庫設(shè)計方面,設(shè)計一個結(jié)構(gòu)良好的數(shù)據(jù)庫,允許部分?jǐn)?shù)據(jù)下沉,徐昂要設(shè)置最合適的字段屬性,盡量將字段設(shè)置為notnull,這樣數(shù)據(jù)庫在查詢時就不需要比較null值了。
2、系統(tǒng)架構(gòu)設(shè)計,表哈希。將海量數(shù)據(jù)哈希到不同的表中,集群、數(shù)據(jù)庫查詢和寫入分離。
3.寫高效的SQL語句提高效率,用join代替子查詢,用union代替手動創(chuàng)建的臨時表,這些都是必須的。只從數(shù)據(jù)庫中刪除必要的數(shù)據(jù),并使用不同的存儲引擎,如innodb,以減少不需要時的死鎖。。Keap可以提高查新的數(shù)量和速度。4.使用事物,使用外鍵,使用索引。
mysql數(shù)據(jù)表規(guī)模九千萬左右,怎么優(yōu)化查詢?
我的天,一塊九千萬的表也太棒了!
我上一家公司明確規(guī)定一個表不能超過5000萬,因為查詢效率會更低!
無論如何,讓我們 讓我們看看如何優(yōu)化數(shù)據(jù)查詢!
(1)、單庫單表:
1、添加索引,一個好的索引可以換取空間,大大減少查詢時間!
2.使用存儲過程:減少sql編譯的時間!
3,優(yōu)化sql:包括聯(lián)合查詢的方向,where,order語句使用索引字段,減少多表聯(lián)合查詢的使用,不要使用select *等等!
4、參數(shù)配置【6】擴(kuò)展內(nèi)存,調(diào)整線程池參數(shù)等等!
5、打開緩存【7】打開二級緩存和三級緩存,提高查詢效率!
(2)、單庫多表:
用水平拆分(比如按月)把表分成12個表,然后在代碼末尾逐月訪問對應(yīng)的月的表!
使用垂直分割:許多字段僅用于保存記錄(像一些約定一樣,備注的字段通常非常大)??梢园巡樵冎薪?jīng)常用到的字段放在一個常用的表中進(jìn)行查詢,其他字段存儲在另一個表中,可以通過唯一的索引字段進(jìn)行鏈接。證書查詢效率大大提高(因為磁盤IO減少)!
③多數(shù)據(jù)庫多表:
(1)、主從讀寫分離:雖然表中的數(shù)據(jù)仍然一致,但是由于多個從庫讀取,主庫寫入數(shù)據(jù),共享鎖的性能開銷大大降低!
(2)、子數(shù)據(jù)庫表:指定一個字段為子數(shù)據(jù)庫字段,使用哈希值或其他策略分布在不同的數(shù)據(jù)庫中,然后根據(jù)相應(yīng)的分布策略(如上面的水平拆分或垂直拆分)分散到不同的表中!
比如我們現(xiàn)在的數(shù)據(jù)庫設(shè)計為8個數(shù)據(jù)庫,1024個表,而你的近1億數(shù)據(jù)在我們單個表中不到10W!
雖然理論上一個表的大小沒有限制,但是基于查詢效率和索引性能應(yīng)該不會超過5000萬個數(shù)據(jù)!
更多關(guān)于多線程、分布式、微服務(wù)、數(shù)據(jù)庫、緩存的干貨會繼續(xù)分享,敬請關(guān)注。。