Mysql

改善 MariaDB 執行時間

  • March 8, 2021

我有一個包含一張表和三張表的數據庫fields (id, hash, creation time)

該表有大約 3000 萬條記錄,查詢的執行時間如下

SELECT * from `table` WHERE hash='blahblahblah';

在安裝了 MariaDB 且未安裝其他高使用率伺服器的 1vCPU 1GB Ubuntu 伺服器上執行此查詢大約需要 40 秒。

現在我將我的伺服器升級到 32GB RAM、SSD 和 12 核 Xeon 物理伺服器,僅在 Ubuntu 20.10 上安裝 MariaDB,但執行時間仍然相似。

我嘗試增加 50-server.conf 文件中的限制,並增加了 systemctl edit mariadb 中的最大記憶體,並在 innodb_buffer_pool_size 中編輯了 mysql/conf.d

但仍然沒有運氣。有什麼方法可以提高我的 MariaDB 速度以使用整個 CPU 和 RAM 執行得更快。

SHOW CREATE TABLE在詢問性能時始終提供。

聽起來你好像不見了INDEX(hash)。(PRIMARY KEY(hash)或者UNIQUE(hash),如果存在,就是這樣一個索引。)

這張表有大約 3000 萬條記錄…

SELECT * from table WHERE hash=‘blahblahblah’; …

此查詢大約需要 40 秒才能執行

雜湊列是否被索引?MariaDB 按順序搜尋 3000 萬條記錄的

40 秒聽起來完全合理。

順便說一句,如果您的表確實被呼叫table,那麼考慮將其更改為其他內容,如果沒有其他原因,您很有可能擁有多個表並且擁有一個充滿table1, table2,table3等的數據庫,將啟動讓你的頭很快受傷。

此外,你永遠不應該使用保留字作為表、列等的標識符。

在某個時候回來咬你。

引用自:https://serverfault.com/questions/1056198