日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

我是如何用2個(gè)Unix命令給MariaDB SQL提速的

瀏覽:98日期:2023-03-30 13:21:12

譯者 | 薛命燈

我試圖在 MariaDB(MySQL)上運(yùn)行一個(gè)簡單的連接查詢,但性能簡直糟糕透了。下面將介紹我是如何通過兩個(gè)簡單的 Unix 命令,將查詢時(shí)間從 380 小時(shí)降到 12 小時(shí)以下的。

下面就是這個(gè)查詢,它是 GHTorrent 分析的一部分,我使用了關(guān)系在線分析處理框架 simple-rolap 來實(shí)現(xiàn)這個(gè)分析。

select distinctproject_commits.project_id,date_format(created_at, ‘%x%v1") as week_commitfrom project_commitsleft join commitson project_commits.commit_id = commits.id;

兩個(gè)連接字段都有索引。不過,MariaDB 是通過對(duì) project_commits 進(jìn)行全表掃描和對(duì) commits 進(jìn)行索引查找來實(shí)現(xiàn)連接的。這可以從 EXPLAIN 的輸出看出來。

這兩個(gè)表中的記錄比較多:project_commits 有 50 億行記錄,commits 有 8.47 億行記錄。服務(wù)器的內(nèi)存比較小,只有 16GB。所以很可能是因?yàn)閮?nèi)存放不下那么大的索引,需要讀取磁盤,因此嚴(yán)重影響到了性能。從 pmonitor 對(duì)臨時(shí)表的分析結(jié)果來看,這個(gè)查詢已經(jīng)運(yùn)行半天了,還需要 373 個(gè)小時(shí)才能運(yùn)行完。

/home/mysql/ghtorrent/project_commits#P#p0.MYD 6.68% ETA 373:38:11

在我看來,這個(gè)太過分了,因?yàn)榕判蚝喜⑦B接(sort-merge join)所需的 I/O 時(shí)間應(yīng)該要比預(yù)計(jì)的執(zhí)行時(shí)間要低一個(gè)數(shù)量級(jí)。我在 dba.stackexchange.com 上尋求幫助,有人給出了一些建議讓我嘗試,但我沒有信心它們能夠解決我的問題。我嘗試了第一個(gè)建議,結(jié)果并不樂觀。嘗試每個(gè)建議都需要至少半天的時(shí)間,后來,我決定采用一種我認(rèn)為可以有效解決這個(gè)問題的辦法。

我將這兩個(gè)表導(dǎo)出到文件中,使用 Unix 的 join 命令將它們連接在一起,將結(jié)果傳給 uniq,把重復(fù)的行移除掉,然后將結(jié)果導(dǎo)回到數(shù)據(jù)庫。導(dǎo)入過程(包括重建索引)從 20:41 開始,到第二天的 9:53 結(jié)束。以下是具體操作步驟。

1. 將數(shù)據(jù)庫表導(dǎo)出為文本文件

我先導(dǎo)出連接兩個(gè)表需要用到的字段,并按照連接字段進(jìn)行排序。為了確保排序順序與 Unix 工具的排序順序兼容,我將字段轉(zhuǎn)換為字符類型。

我將以下 SQL 查詢的輸出保存到文件 commits_week.txt 中。

select cast(id as char) as cid,date_format(created_at, ‘%x%v1") as week_commitfrom commitsorder by cid;

然后將以下 SQL 查詢的輸出保存到 project_commits.txt 文件中:

select cast(commit_id as char) as cid, project_idfrom project_commitsorder by cid;

這樣就生成了以下兩個(gè)文件。

-rw-r–r– 1 dds dds 15G Aug 4 21:09 commits_week.txt

-rw-r–r– 1 dds dds 93G Aug 5 00:36 project_commits.txt

為了避免內(nèi)存不足,我使用 –quick 選項(xiàng)來運(yùn)行 mysql 客戶端,否則客戶端會(huì)在輸出結(jié)果之前嘗試收集所有的記錄。

2. 使用 Unix 命令行工具處理文件

接下來,我使用 Unix 的 join 命令來連接這兩個(gè)文本文件。這個(gè)命令線性掃描兩個(gè)文件,并將第一個(gè)字段相同的記錄組合在一起。由于文件中的記錄已經(jīng)排好序,因此整個(gè)過程完成得很快,幾乎就是 I/O 的速度。我還將連接的結(jié)果傳給 uniq,用以消除重復(fù)記錄,這就解決了原始查詢中的 distinct 問題。同樣,在已經(jīng)排好序的輸出結(jié)果上,可以通過簡單的線性掃描完成去重。

這是我運(yùn)行的 Unix 命令。

join commits_week.txt project_commits.txt | uniq >joined_commits.txt

經(jīng)過一個(gè)小時(shí)的處理,我得到了想要的結(jié)果。

-rw-r–r– 1 dds dds 133G Aug 5 01:40 joined_commits.txt

3. 將文本文件導(dǎo)回?cái)?shù)據(jù)庫

最后,我將文本文件導(dǎo)回?cái)?shù)據(jù)庫。

create table half_life.week_commits_all (project_id INT(11) not null,week_commit CHAR(7)) ENGINE=MyISAM;load data local infile ‘joined_commits.txt"into table half_life.week_commits_allfields terminated by ‘ ‘;

結(jié)語

理想情況下,MariaDB 應(yīng)該支持排序合并連接,并且在預(yù)測到備用策略的運(yùn)行時(shí)間過長時(shí),優(yōu)化器應(yīng)該使用排序合并連接。但在此之前,使用 70 年代設(shè)計(jì)的 Unix 命令就可以解決這個(gè)問題。

標(biāo)簽: MariaDB
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜臀久久99精品久久久久宅男 | 不卡福利视频| 久久精品国产大片免费观看| 久久精品97| 涩涩涩久久久成人精品| 亚洲一区欧美| 成人av动漫在线观看| 六月婷婷综合| 日韩电影免费网址| 91麻豆国产自产在线观看亚洲| 日韩av不卡一区二区| 亚洲精品极品| 日韩福利视频导航| 国产美女精品视频免费播放软件| 日韩精品欧美成人高清一区二区| 日韩在线麻豆| 国产精品日本一区二区不卡视频| 黄色av一区| 视频一区二区欧美| 亚洲伊人影院| 91精品一区| 日韩中文字幕高清在线观看| 久久国产毛片| 成人av二区| 免费在线观看不卡| 美女高潮久久久| 老司机精品视频网| 激情欧美丁香| 亚洲精品影视| 国产一区一一区高清不卡| 国产一区福利| 9久re热视频在线精品| 国产精品嫩草99av在线| 亚洲一区二区三区高清| 日韩**一区毛片| 久久中文精品| 久久久久中文| 91欧美日韩在线| 天堂中文av在线资源库| 亚洲精品影院在线观看| 久久精品伊人| 五月精品视频| 国产美女久久| 人人精品亚洲| 国产精品久av福利在线观看| 欧美日韩国产传媒| 水蜜桃精品av一区二区| 蜜臀精品久久久久久蜜臀 | 日本vs亚洲vs韩国一区三区二区| 国产精品分类| 亚洲精品一二| 欧美69视频| 天堂网av成人| 精品视频国内| 日韩国产欧美一区二区三区| 另类中文字幕国产精品| 欧美激情网址| 少妇高潮一区二区三区99| 国产九九精品| 亚洲天堂日韩在线| **爰片久久毛片| 亚洲综合婷婷| 国产精品视频首页| 在线一区av| 久久精品凹凸全集| 美女少妇全过程你懂的久久| 亚洲精品日本| 婷婷激情综合| 蜜桃久久久久| 精品视频网站| 日韩在线观看中文字幕| 在线天堂资源www在线污| 欧美日韩午夜| 免费国产亚洲视频| 黄色亚洲大片免费在线观看| 你懂的网址国产 欧美| 午夜欧美精品| 国产精品一区毛片| 亚洲精品综合| 欧美影院三区| 国产精品igao视频网网址不卡日韩| 亚洲视频国产| 欧美粗暴jizz性欧美20| 国产传媒av在线| 国产一区三区在线播放| 国产精品成人自拍| 国产精品v亚洲精品v日韩精品 | 久久国产直播| 久久精品av| 亚洲人成网77777色在线播放| 亚洲午夜视频| 蜜臀av免费一区二区三区| 综合日韩av| 日韩免费福利视频| 欧美日韩国产v| 蜜桃一区二区三区| 亚洲va中文在线播放免费| 久久激情中文| 国产精品腿扒开做爽爽爽挤奶网站| 国产欧美日韩影院| 国产精品免费不| 国产精品theporn| 久久黄色影视| 国产区精品区| 婷婷久久免费视频| 国产欧美日韩视频在线| 国产精品美女午夜爽爽| 成人精品国产亚洲| 国产尤物精品| 免费国产亚洲视频| 国产伦理一区| 色老板在线视频一区二区| 蜜桃精品在线| 日韩欧美美女在线观看| 欧美激情一区| 亚洲精品97| 久久精品999| 日韩精品影视| 日韩精品一区第一页| 久久av一区| 国产九九精品| 亚洲精品视频一二三区| 国产精品久一| 久久久久.com| 亚洲精品在线二区| 福利视频一区| 欧美.日韩.国产.一区.二区| 日韩精品三级| 日韩欧美午夜| 日韩avvvv在线播放| 91日韩免费| 91成人精品观看| 欧美亚洲国产精品久久| 国产一区二区三区不卡av | 欧美日韩国产v| 中文一区在线| 丝袜美腿诱惑一区二区三区| 日本午夜精品久久久| 欧美另类综合| 精品欧美一区二区三区在线观看| 婷婷精品在线观看| 欧美亚洲在线日韩| 国产高清亚洲| 免播放器亚洲一区| 免费一区二区视频| 色婷婷色综合| 国产精品99久久免费观看| 久久都是精品| 免费观看久久av| 国产在线看片免费视频在线观看| 日韩va亚洲va欧美va久久| 99在线精品免费视频九九视 | 日产精品一区二区| 亚洲最新av| 蜜桃视频在线观看一区二区| 伊人精品在线| 激情综合亚洲| 激情视频网站在线播放色| 91成人福利| 欧美黄色一区二区| 麻豆一区二区三区| 国产精品1luya在线播放| 欧美精品国产| 国产精品久久久久9999高清| 美女国产精品久久久| 97se亚洲| 日韩av中文字幕一区| 国产欧美日韩综合一区在线播放| 欧美91在线| 卡一卡二国产精品| 亚洲成av在线| 久久国产直播| 亚洲最新无码中文字幕久久 | 亚洲精品在线a| 亚洲精品美女| 国产日本久久| 你懂的国产精品永久在线| 国产精品日本一区二区不卡视频| 亚洲精品四区| 精品国产亚洲一区二区三区大结局 | 日韩在线视频一区二区三区| 久久青草久久| 日韩一区二区三区精品视频第3页| 日韩激情啪啪| 国产精品资源| 日本少妇一区| 日韩精品一区二区三区中文| 青青草国产成人99久久| jizzjizz中国精品麻豆| 久久久久久久久丰满| 日本欧洲一区二区| 麻豆精品蜜桃| 四虎成人精品一区二区免费网站| 国产精品传媒麻豆hd| 国产在线不卡| 日本a口亚洲| 久久九九国产| 国产麻豆精品| 亚洲精品一区二区在线看| 综合一区二区三区|