改善 MariaDB 執行時間
我有一個包含一張表和三張表的數據庫
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
等的數據庫,將啟動讓你的頭很快受傷。此外,你永遠不應該使用保留字作為表、列等的標識符。
它會在某個時候回來咬你。