[英]MySQL query sometimes fast, often slow
我在使用 MySQL 查詢時遇到問題,有時需要幾秒鍾,有時需要 30 秒。我想弄清楚是查詢還是問題出在共享服務器上。
一些背景:表有大約 200 萬行,每個包含用戶數據的字段都是加密的(客戶要求)。 由於字段是加密的,我不能做任何索引。 這是一個通常需要 3-6 秒,有時需要 30 秒的查詢。
$sth5 = $dbh->prepare("SELECT activityType, startDate, startTime, duration, quality, type, endTime, activityNum, activityClass FROM ActivityX WHERE user=? AND activityType=? ORDER BY activityNum DESC");
在某些情況下,我嘗試限制要在數據庫中搜索的行,並且僅當我可以將行限制為 20,000-40,000 左右時才有所幫助。 (我經常不得不在整個數據庫中搜索答案。)
$sth5 = $dbh->prepare("SELECT activityType, startDate, startTime, duration, quality, type, endTime, activityNum, activityClass FROM (SELECT * FROM ActivityX ORDER BY activityNum DESC LIMIT $rowBack) s WHERE user=? AND activityType=?");
我能做些什么來加快查詢速度並使其更可靠?
我將在不久的將來轉向 VPS,這可能會解決問題,但我不想依賴它。
謝謝,
確保您有(用戶、活動類型、活動編號)的索引。 我不確定您所說的可索引加密數據是什么意思,大多數普通加密類型通常不是這種情況。
除此之外,聽起來你有一個巨大的嘈雜鄰居問題。
進來看看 如何使用 php 獲取服務器 CPU 使用率和 RAM 使用率? .
也應該致力於共享。 我在 Instant Cms 中看到過這樣的指標。
您也可以在這里找到一些有用的提示。 https://severalnines.com/database-blog/how-identify-mysql-performance-issues-slow-queries
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.