溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

【percona-toolkit手冊】pt-archiver數(shù)據(jù)歸檔

發(fā)布時(shí)間:2020-06-27 07:30:36 來源:網(wǎng)絡(luò) 閱讀:5344 作者:對唔住 欄目:MySQL數(shù)據(jù)庫

pt-archiver

  1. 簡介
    MySQL表中的部分行存檔到另外的表或者文件中
  2. 概要
    1.用法:
    pt-archiver [可選項(xiàng)] --source DSN --where WHERE
    2.詳細(xì)介紹
    本著在OLTP環(huán)境中可以盡量少影響查詢性能的目的,我將這個(gè)工具設(shè)計(jì)可以在低性能影響,正向性
    的情況下將數(shù)據(jù)小批量小批量的將舊數(shù)據(jù)取出并歸檔。
    本工具依靠插件式的原理實(shí)現(xiàn)了可擴(kuò)展性,各位可以對此工具進(jìn)行增加更本地化的功能,例如擴(kuò)展
    更加復(fù)雜的規(guī)則,或者邊抽取數(shù)據(jù)邊創(chuàng)建數(shù)據(jù)倉庫。
    技巧:找到第一行,然后根據(jù)某些索引向后查找更多行的數(shù)據(jù),包含在命令最后面的where段中的條件
    應(yīng)當(dāng)可以依靠索引查找所滿足的數(shù)據(jù),而不是靠掃描整個(gè)表。
    可以在--source聲明中指定 i參數(shù)(index),這對于想要根據(jù)索引獲取數(shù)據(jù)行的操作非常關(guān)鍵。
    使用--dry-run聲明此次工具執(zhí)行后只生成對應(yīng)的SQL語句,而不真正操作數(shù)據(jù),接著對生成的
    SQL語句進(jìn)行explain操作,檢查其索引使用情況。更進(jìn)一步可以檢查語句執(zhí)行過程中的句柄操作類型
    確保語句沒有進(jìn)行全表掃描(句柄操作類型:read,read_rnd_next,delete等等底層原子性操作)

  3. 參數(shù)
    注意:
    至少要指定--dest,--file,或者--purge參數(shù)
    --ignore--replace 互斥
    --txn-size--commit-each 互斥
    --low-priority-insert--delay-insert 互斥
    --share-lock--for-update 互斥
    --analyze--optimize 互斥
    --no-ascend--no-delete 互斥
    如果在COPY模式下,--dest的參數(shù)值默認(rèn)繼承--source參數(shù)的值
    --analyze
    在傳輸完數(shù)據(jù)后,運(yùn)行ANALYZE TABLE進(jìn)行優(yōu)化表的索引信息。
    --analyze=d 優(yōu)化dest表索引信息
    --analyze=s 優(yōu)化source表索引信息
    --analyze=ds 優(yōu)化源表與目標(biāo)表的索引信息
    --no-ascend
    不使用遞增索引優(yōu)化特性
    默認(rèn)情況下,pt-archiver工具使用遞增索引特性優(yōu)化批量重復(fù)的select操作,即:下一批數(shù)據(jù)歸檔時(shí)將
    從上一批歸檔結(jié)束時(shí)索引的位置開始,不需要再從頭掃描到自己需要?dú)w檔的位置,但在多列復(fù)合索引
    的情況下可能效果降低
    --ascend-first
    僅使用復(fù)合索引的第一列進(jìn)行遞增優(yōu)化,與上面的參數(shù)有關(guān),在復(fù)合索引或者where條件復(fù)雜的情況
    下,僅使用的復(fù)合索引的第一列進(jìn)行遞增優(yōu)化,比上面的完全不使用遞增索引優(yōu)化特性方法更好
    --ask-pass
    采用交互的方式輸入密碼,防止身后的開發(fā)與測試窺屏
    --buffer
    禁用自動刷新緩存到--file參數(shù)指定的的文件,將結(jié)果集存在操作系統(tǒng)緩存中,提交的時(shí)候刷新緩存。
    (原本是每行都會刷新一次到文件)。但使用操作系統(tǒng)緩存是個(gè)不可靠因素,可能會導(dǎo)致意外丟失
    數(shù)據(jù)。
    當(dāng)--buffer在5-15%的左右時(shí),可以提升本工具的性能
    --txn-size
    指定一個(gè)事務(wù)處理多少行數(shù)據(jù),默認(rèn)1。設(shè)成0,不使用批量特性,自動提交事務(wù)。
    當(dāng)工具處理完設(shè)定行數(shù)的數(shù)據(jù)時(shí),同時(shí)對源庫和目標(biāo)庫進(jìn)行事務(wù)提交,然后刷新到--file參數(shù)指定
    的文件中這個(gè)參數(shù)對源庫性能的影響比較大,對繁忙的線上OLTP服務(wù)器進(jìn)行歸檔時(shí),要兼顧數(shù)據(jù)
    抽取性能和事務(wù)提交性能。提高本參數(shù)值可以提高數(shù)據(jù)抽取性能,但會導(dǎo)致行鎖范圍擴(kuò)大,甚至
    死鎖。減小本參數(shù)值可以緩解以上情況,但是過小會導(dǎo)致事務(wù)提交量增大,對線上業(yè)務(wù)的提交性
    能有影響。
    作者親測:在PC上,設(shè)置為500時(shí),每1K行只用了2秒的時(shí)間,但設(shè)為0,自動提交時(shí),則每1K行
    花費(fèi)了將近38秒。使用非事務(wù)型引擎,推薦設(shè)成0。
    --commit-each
    每一組數(shù)據(jù)提交一次,并自動屏蔽--txn-size參數(shù)??梢允褂?code>--limit控制總的操作的行數(shù)。
    假如要存檔一個(gè)特別大的表,--limit=1000--txn-size=1000同時(shí)使用時(shí),工具開啟一個(gè)事務(wù)連
    續(xù)讀到了所有滿足where的999行數(shù)據(jù),但是由于工具本身并不知道究竟有多少數(shù)據(jù)滿足,有可能
    會一直全表掃描到最后一行然后才會提交這個(gè)事務(wù),因此,使用 --commit-each參數(shù)每一組提交
    一次可以有效避免上面的窘境。
    --bulk-delete
    批量刪除,一批數(shù)據(jù)行用一個(gè)DELETE語句完成。同時(shí)也意味著--commit-each。
    通常刪除數(shù)據(jù)的做法是根據(jù)主鍵進(jìn)行逐行刪除,批量刪除在簡單WHERE條件下速度會有顯著的
    提高。
    此選項(xiàng)會在收集完所有待刪除的數(shù)據(jù)行前,推遲刪除操作。如果有刪除前的觸發(fā)器將不會被觸發(fā)
    (before delete),多行刪除前的觸發(fā)器會被觸發(fā)(before bulk delete)
    --[no]bulk-delete-limit
    批量刪除限制,默認(rèn)開啟
    默認(rèn)情況下,--bulk-delete參數(shù)會追加一個(gè)--limit參數(shù),在部分情況下,可以使用
    --no-bulk-delete-limit忽略掉,但仍需手動加上--limit參數(shù)。此參數(shù)不建議使用
    --bulk-insert
    采用LOAD DATA INFILE的方式(與bulk-delete和commit-each組合使用)
    相比一行一行的插入,通過為每批數(shù)據(jù)創(chuàng)建臨時(shí)文件,先行寫入數(shù)據(jù)到臨時(shí)文件,當(dāng)一批數(shù)據(jù)獲
    取完畢后,再進(jìn)行導(dǎo)入操作。
    為了防止一行一行的刪除數(shù)據(jù)時(shí),但這些數(shù)據(jù)卻因?yàn)樵诰彺嫖募袥]有真正的歸檔在新的數(shù)據(jù)庫
    中,造成數(shù)據(jù)真空甚至不確定情況下的數(shù)據(jù)丟失,采用--bulk-insert的時(shí)候必須與bulk-deletes
    成對出現(xiàn),保證數(shù)據(jù)在被插入新庫之前,舊庫不會對這些數(shù)據(jù)進(jìn)行刪除。
    此參數(shù)可以與--low-priority-insert,--replace,,
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI