關於"mysql第一次查詢很慢,以后就很快"的解決方案


問題

  有個項目使用的mysql數據庫,第一次查詢很慢,大約15s左右出結果,再次查詢就很快了。

分析

  后面變快的原因是mysql有緩存機制,但是過上一段時間不使用緩存會過期,我個人測了一下2~3分鍾一班不會過期,6~7分鍾就普遍過期了。

  所以,是不是可以通過定時刷新查詢語句,來保持緩存的有效性呢?

  測試了一下,是可以的。

解決方案

  考慮到該項目本身查詢語句是固定的,大概10條,所以采取了一個取巧的解決方案。

  即:

    在服務器上放一個隱藏的網頁,每2分鍾刷新一次這10條語句。

    這樣就能使mysql緩存不過期,從而保持相對快速的查詢速度。

  代碼:

    $(function () { 
        //此頁面用來保持mysql的查詢緩存不過期,每隔2分鍾刷新一次,需要在服務器上打開該網頁,不能關閉。
        //第一次加載
        for (var i = 0; i < channelnameList.length; i++) {
            getContentList(channelnameList[i], idList[i]);
        }
        //定時加載
        setInterval(function () {
            for (var i = 0; i < channelnameList.length; i++) {
                getContentList(channelnameList[i], idList[i]);
            }
        },1000*60*2);

    });
    
    
    function getContentList(channelname, channelID) { 
        
        //調用后台,進行mysql查詢
        $.ajax({
            type: "get",
            async: true,
            dataType: "text",
            url: "Handler.ashx?************,
            data: { ***********************) {

            },
            success: function (data, textStatus) {
               //*********************************************
               // 
 
            },
            error: function () {
                 
            }
        });
    }

 

    當然,用客戶端刷新效果一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM