關於mysql 優化 關於mysql資料庫優化

2021-10-17 20:48:29 字數 1410 閱讀 7012

關於mysql資料庫優化

以我之愚見,資料庫的優化在於優化儲存和查詢速度

目前主要的優化我認為是優化查詢速度,查詢速度快了,提高了使用者的體驗

我認為優化主要從兩方面進行考慮,

優化資料庫物件,

優化sql

優化資料庫物件

1.優化表的資料型別,對於每個欄位用合適的資料型別,既能解決磁碟的儲存空間,又能避免浪費程式執行時物理記憶體的浪費,提高查詢速度。

比如對於不會有負數的整數型別,使用無符號整型,整數範圍很小的用tinyint 或者smallint

2 通過拆分表來提高表的訪問效率。(對於myisam)

垂直拆分,水平拆分,如果乙個表中一些列常用,一些列不常用,可以用垂直拆分。缺點查詢所有資料的時候需要連表。

3逆規範化

增加冗餘列,    冗餘列值得是多個表中有相同的列,這樣做是避免查詢的時候進行連表操作

增加派生列     之增加的列來自其他表的資料,由其他表的資料計算得到。這樣是為了減少連線操作,避免使用聚合函式

重新組表   對使用者經常檢視的資料是使用兩張錶連起來的資料,可以重新租一張表,也是減少連表的操作

4使用中間表       中間表複製源表的部分資料,並且與源表隔離,在中間表上查詢統計操作不會影響源表。

中間表可以靈活增加索引,或增加臨時的字段,從而提高統計查詢效率

二、sql優化

·  在表的查詢中,有這個幾種查詢型別,

1遍歷全表   all

2 掃瞄全索引 遍歷整個索引   index

3 索引範圍掃瞄,常見於  >=  between    range

4使用非唯一索引或者唯一索引的字首

5  唯一索引,對於每個索引的鍵值,表中只有一條記錄匹配 eq_ref

6 const/system  單錶中最多有乙個匹配行,查詢速度非常快,例如根據主鍵或者唯一索引

7 null 對於null, mysql不用返回直接能得到結果

索引是資料庫優化最常用和最重要的手段之一。

索引的儲存分類:

b-tree索引 最常用

hash索引  只有memory支援

r-tree索引 空間索引,不常用

full-text 全文索引

比較常用的是b-tree索引和hash索引,hash索引適合key-value查詢,不適合範圍查詢

b-tree索引並不是二叉樹,而是平衡樹

注意對於查詢的的列是字串,要加上引號,不然不會用到索引。

對於 or 分隔開的條件,如果or 前面的列中有索引,而後面的列中沒有索引,則不會用到索引。

對於插入操作

盡量使用多個值表的insert語句,這種方式大大減少客戶端與資料庫的連線,關閉等操作。

避免使用子查詢,用效率更高的join,join 效率更高是因為mysq不需要再記憶體中建立臨時表

優化分頁

mysql思考7 關於Uber選擇MySQL的思考

在資料庫圈子,大家都知道今年uber幹出來一件大事件,把postgresql切換到了mysql,當時社群裡一陣喧嘩。事情已經過去半年多了,這裡我不想去和大家再次討論這兩個關係型資料庫那個更好。只是想帶著大家思考一下選擇的背後。在該事件中,uber提出來遷移的乙個重要原因是 在大量更新的業務場景下po...

關於MySQL 優化和總結

最近學習了下mysql 優化 從語句的執行流程,包括查詢,更新不同的流程。併發帶來的三大問題 髒讀,幻讀,不可重複讀。事務四大特性 acid。事務隔離級別 ru,rc,rr serializable。鎖的模式 型別 shared,executive.鎖的演算法 record,gap,next key...

關於linux安裝tomcat和mysql

1.將tomcat壓縮包上傳到linux 2.tar xvf apache tomcat 7.0.55.tar.gz解壓檔案 修改tomcat名稱 mv apache tomcat 7.0.55 tomcat 8091 3.rm命令安裝tomcat rm apache tomcat 7.0.55.t...