电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

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

譯者 | 薛命燈

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

下面就是這個查詢,它是 GHTorrent 分析的一部分,我使用了關系在線分析處理框架 simple-rolap 來實現這個分析。

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

兩個連接字段都有索引。不過,MariaDB 是通過對 project_commits 進行全表掃描和對 commits 進行索引查找來實現連接的。這可以從 EXPLAIN 的輸出看出來。

這兩個表中的記錄比較多:project_commits 有 50 億行記錄,commits 有 8.47 億行記錄。服務器的內存比較小,只有 16GB。所以很可能是因為內存放不下那么大的索引,需要讀取磁盤,因此嚴重影響到了性能。從 pmonitor 對臨時表的分析結果來看,這個查詢已經運行半天了,還需要 373 個小時才能運行完。

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

在我看來,這個太過分了,因為排序合并連接(sort-merge join)所需的 I/O 時間應該要比預計的執行時間要低一個數量級。我在 dba.stackexchange.com 上尋求幫助,有人給出了一些建議讓我嘗試,但我沒有信心它們能夠解決我的問題。我嘗試了第一個建議,結果并不樂觀。嘗試每個建議都需要至少半天的時間,后來,我決定采用一種我認為可以有效解決這個問題的辦法。

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

1. 將數據庫表導出為文本文件

我先導出連接兩個表需要用到的字段,并按照連接字段進行排序。為了確保排序順序與 Unix 工具的排序順序兼容,我將字段轉換為字符類型。

我將以下 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;

這樣就生成了以下兩個文件。

-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

為了避免內存不足,我使用 –quick 選項來運行 mysql 客戶端,否則客戶端會在輸出結果之前嘗試收集所有的記錄。

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

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

這是我運行的 Unix 命令。

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

經過一個小時的處理,我得到了想要的結果。

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

3. 將文本文件導回數據庫

最后,我將文本文件導回數據庫。

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 ‘ ‘;

結語

理想情況下,MariaDB 應該支持排序合并連接,并且在預測到備用策略的運行時間過長時,優化器應該使用排序合并連接。但在此之前,使用 70 年代設計的 Unix 命令就可以解決這個問題。

標簽: MariaDB
相關文章:
主站蜘蛛池模板: 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 空压机网_《压缩机》杂志| 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 仪器仪表网 - 永久免费的b2b电子商务平台 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | ptc_浴霸_大巴_干衣机_呼吸机_毛巾架_电动车加热器-上海帕克 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 涂层测厚仪_光泽度仪_uv能量计_紫外辐照计_太阳膜测试仪_透光率仪-林上科技 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 纳米涂料品牌 防雾抗污纳米陶瓷涂料厂家_虹瓷科技 |