第
一、優化索引、sql語句、分析慢查詢
第二、設計表的時候嚴格按照資料庫的設計正規化來設計資料庫
第三、我們可以加上redis快取,將經常被訪問到的資料,但是不需要經常變化的資料放入至redis快取伺服器裡面
第四、還可優化硬體,在硬體層面,我們可以使用更好的一些硬碟(固態硬碟),使用一些磁碟陣列技術(raid 0,raid1,raid5)
raid0 最簡單的 (兩塊硬碟硬碟相加100g + 100 g = 200g)
raid1 映象卷 把同樣的資料寫兩份。可以隨機從a/b裡面讀取,更高。硬碟壞了一塊,資料也不會丟失
raid5 3塊硬碟,壞了一塊,另外兩塊也能工作。
第五、如果以上都做速度還是慢,先不要去切分可以使用mysql內部自帶的表分割槽技術,來將資料分成不同的檔案。這樣能夠讓磁碟在讀取的時候效率更高。
第六、可以再做垂直分表,可以將不經常讀資料放到另外乙個表裡面去。這樣能夠節約磁碟io
第七、如果發現我們的效率還是不夠高,我們可以採用主從的方式來將資料讀寫分離。
第八、資料量特別大,我們優化起來會很困難可以使數資料庫中介軟體的方式,將資料進行分庫分表分機器。(原理,資料路由)
第九、此外,我們還可以採用一些更快的儲存方式,例如nosql來儲存一些我們需要經常訪問到的資料。從資料庫裡面取出來後,再到nosql取出一些其他的資料。
第十、此外還有一些表引擎 選擇,引數優化和一些相關小技巧都是優化mysql的方式
第十一、我們還可以將我們的業務系統在架構級別進行快取,靜態化和分式式。
第十二、不使用全文索引,使用xunsearch,es或者雲伺服器上的索引。
1.快速訪問資料表中的特定資訊,提高檢索速度
2.建立唯一性索引,保證資料庫表中每一行資料的唯一性。
3.加速表和表之間的連線
4.使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間
負面影響:建立索引和維護索引需要耗費時間,這個時間隨著資料量的增加而增加;索引需要占用物理空間,不光是表需要占用資料空間,每個索引也需要占用物理空間;當對表進行增、刪、改、的時候索引也要動態維護,這樣就降低了資料的維護速度。
1、在最頻繁使用的、用以縮小查詢範圍的字段上建立索引。
2、在頻繁使用的、需要排序的字段上建立索引
1、對於查詢中很少涉及的列或者重複值比較多的列,不宜建立索引。
2、對於一些特殊的資料型別,不宜建立索引,比如文字字段(text)等。
資料庫優化 sql語句優化
1 group by語句優化 因為mysql對所有group by的字段進行排序,所以如果包含group by但是想要避免排序結果的消耗,可以指定order by null來進行group by的排序。select id,sun moneys from sales group by id expla...
資料庫 sql語句優化
寫操作 write 1 如果你同時從同一客戶插入很多行,使用多個值表的insert語句。這比使用分開insert語句快 在一些情況中幾倍 insert into test values 1,2 1,3 1,4 2 如果你從不同客戶插入很多行,能通過使用insert delayed語句得到更高的速度。...
SQL語句及資料庫優化
1,統一sql語句的寫法 對於以下兩句sql語句,程式設計師認為是相同的,資料庫查詢優化器認為是不同的。所以封裝成復用方法,用標準模板來控制。select from dual select from dual 其實就是大小寫不同,查詢分析器就認為是兩句不同的sql語句,必須進行兩次解析。生成2個執行...