mysql 重新整理 效能下降的原因 四

2022-03-02 09:49:25 字數 1174 閱讀 1842

什麼是效能下降?

其實就是**執行的環境變了,那麼環境變化是什麼?

比如cpu上公升了,記憶體滿了。有或者表中數量增加了,量變了。

其實這些是dba幹的,但是呢,我們也需要去了解下,並且優化我們的code。

簡單介紹乙個量大的情況,那麼這個時候我們可能會建立索引,其實也不是量大去建立索引,而是量大且查詢資料多,修改少。

在此舉個栗子:

select * from employees where first_name='martial'
我在一張30w的employees 中做查詢。

查詢出來的結果為:

受影響的行: 0
通過查詢發現索引只有主鍵:

然後這是就想,如果要是在first_name中建立主鍵,那麼是否能提公升。

create index idx_first_name on employees(first_name)
看下效果繼續執行查詢:

[sql] select * from employees where first_name='martial' 

受影響的行: 0

效果明顯哈。

當然這很簡單,現在複雜一點點,這樣子。

怎麼說呢,就是要有first_name 和 last_name 一起。

這時候就要建立復合索引。

create index idx_first_name on employees(first_name,last_name )
在下就在次執行重複操作了。

同樣我們可以看到我使用了*,這時候問題同樣來了,你想想看,這個語句效能就不好了。

同樣如果效能下降了,還要從語句下手。

在我進公司的時候,有乙個專門搞資料庫的部門,設計師設計資料庫的時候,我們查一條要join好幾張表,這就是設計問題,後來改了表結構,但是代價有多大可以自己想到。

最後效能不強的還有一些配置,如執行緒數量,這個和硬體有關,專業dba幹了,我們也很難去搞定。

mysql效能抖動原因

之前文章介紹了 wal 機制。現在你知道了,innodb 在處理更新語句的時候,只做了寫日誌這乙個磁碟操作。這個日誌叫作 redo log 重做日誌 當記憶體資料頁跟磁碟資料頁內容不一致的時候,我們稱這個記憶體頁為 髒頁 記憶體資料寫入到磁碟後,記憶體和磁碟上的資料頁的內容就一致了,稱為 乾淨頁 平...

SSD效能(跑分)下降的主要原因

對於接觸ssd不久的人,經常都會產生一種疑問,那就是當ssd使用過一段時間後,再執行測試 軟體,得到的成績幾乎都肯定要比剛買回來時差,而且時間越長,差距就越明顯,這是為什麼呢?nand 快閃儲存器無法進行覆蓋操作,在已經被寫入資料的位置,要重複寫入的話,ssd就必須先對該位置進行擦除的操作,而且擦除...

MySQL 偶爾抽風,效能突然下降

有時會碰到這樣的情況,一條 sql 在平時執行沒問題,很快。但是突然某個時間執行的就會很慢,而且這種場景並不能復現,只能隨機傳送的。在之前講解 mysql redo log 時,說到了 wal 機制,為了保證 mysql 更新的速度,在進行更新操作時,先將更新內容寫入 redo log,後續系統空閒...