亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Rails中使用MySQL分區表一個提升性能的方法

2020-10-29 19:42:09
字體:
來源:轉載
供稿:網友

MySQL 的分區表是一種簡單有效的處理極大數據表的特性,通過它可以使應用程序幾乎很少改動就能達成對極大數據表的高效處理,但由于 Rails ActiveRecord 設計上一些慣例,可能導致一些數據處理不能利用分區表特性,反而變得很慢,在使用分區表過程中一定要多加注意。

下面以一個例子來說明。在 light 系統中,有一張數據表是 diet_items, 主要字段是 id, schedule_id, meal_order food_id, weight, calory 等等,它的每一條記錄表示為用戶生成每日的減肥計劃(減肥食譜 + 運動計劃)中的一條飲食項,平均一條的計劃有 10 多條數據,數據量非常大,預計每天生成數據會超過 100 萬條,所以對其做了分表處理,根據 schedule_id hash 分成 60 張表,也就是數據將動態分到 60 張表中。分表后 diet_items 的建表語句如下所示:

復制代碼 代碼如下:

CREATE TABLE `diet_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `schedule_id` int(11) NOT NULL,
  `meals_order` int(11) NOT NULL,
  `food_id` int(11) DEFAULT NULL,
  ....
  KEY id (`id`),
  UNIQUE KEY `index_diet_items_on_schedule_id_and_id` (`schedule_id`,`id`)
)
PARTITION BY HASH (schedule_id)
PARTITIONS 60;

分表之后,所有查詢 diet_items 的地方都要求帶上 schedule_id,比如獲取某一個 schedule 的所有 diet_items,通過 schedule. diet_items,獲取某一個 id 的 diet_item 也是通過 schedule.diet_items.find(id) 進行。生成 diet_item 也沒有問題,因為生成 diet_item 都是通過 schedule.diet_items.build(data) 方式,在生成的時候都是帶了 schedule_id 的。

觀察 newrelic 日志,發現 diet_item 的 update 和 destroy 相關的請求特別慢,仔細分析后,發現這兩種操作非常忙是由于 ActiveRecord 生成的 sql 并沒有帶 schedule_id 導致。 diet_item update 操作 ActiveRecord 生成的 sql 語句類似于 update diet_items set … where id = <id>。 diet_item destroy 生成的語句類似于 delete diet_items where id = <id> 因為沒有帶 schedule_id,導致這兩種語句都需要 mysql 掃描 60 張分區表才能夠完成一個語句執行,非常慢!

知道原因之后就好辦了,把原來的 update 和 destroy 調用改為自定義版本的 update 和 destroy 調用就可以了。

diet_item.update(attributes) 改成 DietItem.where(id: diet_item.id, schedule_id: diet_item.schedule_id).update_all(attributes)

diet_item.destroy 改成 DietItem.where(id: diet_item.id, schedule_id: diet_item.schedule_id).delete_all

這樣生成的 sql 都帶上 schedule_id 條件,從而避免了掃描全部的分區表,性能提升立竿見影。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产性猛交xxxx免费看久久| 国产噜噜噜噜噜久久久久久久久| 国产精品爱久久久久久久| 久久天天躁狠狠躁老女人| 国产精品草莓在线免费观看| www.日韩av.com| 午夜剧场成人观在线视频免费观看| 91久久久久久久久久久| 国产91精品久久久久久久| 成人疯狂猛交xxx| 欧美一级bbbbb性bbbb喷潮片| 欧美自拍视频在线观看| 欧美一区二区三区四区在线| 国产在线精品一区免费香蕉| 精品五月天久久| 亚洲福利视频网| 久久99青青精品免费观看| 久久精品一本久久99精品| 成人午夜在线视频一区| 青青a在线精品免费观看| 亚洲精品98久久久久久中文字幕| 亚洲一区二区三区成人在线视频精品| 日韩美女在线观看| 欧美大片第1页| www国产亚洲精品久久网站| 国产日韩中文字幕在线| 成人在线免费观看视视频| 国产精品视频久| 一区二区三区回区在观看免费视频| 国产成人+综合亚洲+天堂| 麻豆国产精品va在线观看不卡| 成人免费网站在线看| 午夜精品久久久久久99热软件| www.欧美精品一二三区| 欧美国产极速在线| 久久国产视频网站| 亚洲国产一区二区三区四区| 国产99视频在线观看| 一区三区二区视频| 亚洲第一区第二区| 亚洲欧美日韩一区在线| 亚州av一区二区| 精品国产网站地址| 91亚洲精品一区| 午夜精品久久久久久久99热| 在线性视频日韩欧美| 一色桃子一区二区| 国产精品成av人在线视午夜片| 久久精品国产v日韩v亚洲| 国产成人精品在线| 97在线日本国产| 国产一区二区丝袜| 久久6免费高清热精品| 欧美精品激情视频| 久久久久久久久久久免费精品| 亚洲精品一区二区网址| 日韩成人在线播放| 亚洲视频精品在线| 欧美日本高清视频| 欧美性色19p| 欧美视频专区一二在线观看| 日韩精品在线免费观看| 亚洲黄一区二区| 日本久久亚洲电影| 日韩精品视频免费专区在线播放| 亚洲va码欧洲m码| 欧美午夜激情小视频| 久久手机免费视频| 在线性视频日韩欧美| 亚洲国产日韩欧美在线图片| 欧美激情一级二级| 中文字幕久久亚洲| 欧美午夜宅男影院在线观看| 中文字幕精品一区久久久久| 日韩精品有码在线观看| 8x海外华人永久免费日韩内陆视频| 国产精品 欧美在线| 亚洲影影院av| 久久精品中文字幕| 国产成人亚洲综合青青| 国产美女被下药99| 黑人巨大精品欧美一区二区免费| 日韩动漫免费观看电视剧高清| 久久久av一区| 久久理论片午夜琪琪电影网| 久久成人这里只有精品| 日韩精品免费一线在线观看| 国产精品劲爆视频| 国产精品亚洲第一区| 日韩欧美一区二区三区久久| 国内外成人免费激情在线视频网站| 日韩欧美精品中文字幕| 国产精品69久久| 欧美日韩亚洲精品一区二区三区| 久久久亚洲国产| 欧美多人乱p欧美4p久久| 中文字幕一区电影| 中文字幕亚洲欧美日韩2019| 国产精品久久一区| 亚洲性线免费观看视频成熟| 欧美激情视频给我| 国产精品美女免费视频| 日韩电视剧免费观看网站| 中文字幕日韩在线观看| 综合国产在线观看| 91精品视频在线看| 亚洲精品久久久久久下一站| 亚洲色图五月天| 欧美高清第一页| 欧美日韩国产精品专区| 91精品国产综合久久男男| 亚洲第一网中文字幕| 国产精品高潮呻吟久久av黑人| 国内精品伊人久久| 奇门遁甲1982国语版免费观看高清| 国产精品亚洲аv天堂网| 欧美wwwwww| 亚洲欧美一区二区三区情侣bbw| 成人夜晚看av| 亚洲91av视频| 亚洲最大的成人网| 亚洲国产福利在线| 欧美日韩国产一中文字不卡| 色与欲影视天天看综合网| 亚洲小视频在线观看| 欧美日韩精品二区| 久久久久久综合网天天| 久久国产精品久久久久久| 日韩中文在线观看| 韩国三级电影久久久久久| 日韩精品中文字幕在线播放| 国内精品久久久久久久久| 国产精品v片在线观看不卡| 91在线观看免费网站| 伊人伊人伊人久久| 国产精品久久久久久久电影| 欧美人在线观看| 国产精品色婷婷视频| 精品国产精品三级精品av网址| 亚洲热线99精品视频| 色综合天天狠天天透天天伊人| 中文字幕日韩av| 4p变态网欧美系列| 久久综合久久美利坚合众国| 久久久久久久久电影| 欧美亚洲另类制服自拍| 热re99久久精品国产66热| 国产在线一区二区三区| 久久久久久久一| 久久伊人91精品综合网站| 黄色精品在线看| 国产欧美va欧美va香蕉在线| 亚洲www在线| 日韩精品高清在线| 久久精品精品电影网| 久久久成人的性感天堂| 久久久久国色av免费观看性色| 亚洲福利视频网| 久久久久亚洲精品成人网小说| 色噜噜国产精品视频一区二区| 97香蕉超级碰碰久久免费的优势| 成人动漫网站在线观看| 国内精品久久久久久中文字幕| 中文国产成人精品久久一|