Redis 慢查詢記錄的保存

2018-08-02 14:59 更新

慢查詢記錄的保存

服務(wù)器狀態(tài)中包含了幾個(gè)和慢查詢?nèi)罩竟δ苡嘘P(guān)的屬性:

struct redisServer {

    // ...

    // 下一條慢查詢?nèi)罩镜?ID
    long long slowlog_entry_id;

    // 保存了所有慢查詢?nèi)罩镜逆湵?    list *slowlog;

    // 服務(wù)器配置 slowlog-log-slower-than 選項(xiàng)的值
    long long slowlog_log_slower_than;

    // 服務(wù)器配置 slowlog-max-len 選項(xiàng)的值
    unsigned long slowlog_max_len;

    // ...

};

slowlog_entry_id 屬性的初始值為 0 , 每當(dāng)創(chuàng)建一條新的慢查詢?nèi)罩緯r(shí), 這個(gè)屬性的值就會(huì)用作新日志的 id 值, 之后程序會(huì)對(duì)這個(gè)屬性的值增一。

比如說, 在創(chuàng)建第一條慢查詢?nèi)罩緯r(shí), slowlog_entry_id 的值 0 會(huì)成為第一條慢查詢?nèi)罩镜?ID , 而之后服務(wù)器會(huì)對(duì)這個(gè)屬性的值增一; 當(dāng)服務(wù)器再創(chuàng)建新的慢查詢?nèi)罩镜臅r(shí)候, slowlog_entry_id 的值 1 就會(huì)成為第二條慢查詢?nèi)罩镜?ID , 然后服務(wù)器再次對(duì)這個(gè)屬性的值增一, 以此類推。

slowlog 鏈表保存了服務(wù)器中的所有慢查詢?nèi)罩荆?鏈表中的每個(gè)節(jié)點(diǎn)都保存了一個(gè) slowlogEntry 結(jié)構(gòu), 每個(gè) slowlogEntry 結(jié)構(gòu)代表一條慢查詢?nèi)罩荆?/p>

typedef struct slowlogEntry {

    // 唯一標(biāo)識(shí)符
    long long id;

    // 命令執(zhí)行時(shí)的時(shí)間,格式為 UNIX 時(shí)間戳
    time_t time;

    // 執(zhí)行命令消耗的時(shí)間,以微秒為單位
    long long duration;

    // 命令與命令參數(shù)
    robj **argv;

    // 命令與命令參數(shù)的數(shù)量
    int argc;

} slowlogEntry;

舉個(gè)例子, 對(duì)于以下慢查詢?nèi)罩緛碚f:

1) (integer) 3
2) (integer) 1378781439
3) (integer) 10
4) 1) "SET"
   2) "number"
   3) "10086"

圖 23-1 展示的就是該日志所對(duì)應(yīng)的 slowlogEntry 結(jié)構(gòu)。

圖 23-2 展示了服務(wù)器狀態(tài)中, 和慢查詢功能有關(guān)的屬性:

  • slowlog_entry_id 的值為 6 , 表示服務(wù)器下條慢查詢?nèi)罩镜?nbsp;id 值將為 6 。
  • slowlog 鏈表包含了 id 為 5 至 1 的慢查詢?nèi)罩荆?最新的 5 號(hào)日志排在鏈表的表頭, 而最舊的 1 號(hào)日志排在鏈表的表尾, 這表明slowlog 鏈表是使用插入到表頭的方式來添加新日志的。
  • slowlog_log_slower_than 記錄了服務(wù)器配置 slowlog-log-slower-than 選項(xiàng)的值 0 , 表示任何執(zhí)行時(shí)間超過 0 微秒的命令都會(huì)被慢查詢?nèi)罩居涗洝?/li>
  • slowlog-max-len 屬性記錄了服務(wù)器配置 slowlog-max-len 選項(xiàng)的值 5 , 表示服務(wù)器最多儲(chǔ)存五條慢查詢?nèi)罩尽?/li>

注意

因?yàn)榘婷婵臻g不足的緣故, 所以圖 23-2 展示的各個(gè) slowlogEntry 結(jié)構(gòu)都省略了 argv 數(shù)組。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)