亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2535 | 回復(fù): 5
打印 上一主題 下一主題

mysql 百萬(wàn)級(jí)更新性能 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-09-06 12:27 |只看該作者 |倒序?yàn)g覽
本帖最后由 chenjintao_ii 于 2016-09-06 12:30 編輯

ne_elementparam 表有400多萬(wàn)條記錄,我們的業(yè)務(wù)場(chǎng)景是這400萬(wàn)條數(shù)據(jù)每2小時(shí)更新一遍,我們有兩種方法更新記錄。

第一種方法是每次更新一條記錄,重復(fù)400萬(wàn)次。更新一條的 explain 解釋:

mysql> explain UPDATE ne_elementparam  SET epm_curvalue='', epm_updatetime = sysdate() WHERE epm_neid = 1 AND epm_objid = 2;           

+----+-------------+-----------------+-------+----------------------------+---------+---------+-------+------+-------------+

| id | select_type | table           | type  | possible_keys              | key     | key_len | ref   | rows | Extra       |

+----+-------------+-----------------+-------+----------------------------+---------+---------+-------+------+-------------+

|  1 | SIMPLE      | ne_elementparam | range | PRIMARY,PK_NE_ELEMENTPARAM | PRIMARY | 5       | const |    1 | Using where |

+----+-------------+-----------------+-------+----------------------------+---------+---------+-------+------+-------------+

1 row in set (0.00 sec)


第二種方法是先把記錄插到臨時(shí)表 tt_elementparam 中,插完400萬(wàn)條后,再一次性更新到 ne_elementparam 表中。下面是更新數(shù)據(jù)的 explain 解釋:

mysql> explain UPDATE ne_elementparam ne, tt_elementparam tt SET ne.epm_curvalue=tt.epm_curvalue, ne.epm_updatetime = sysdate()  WHERE ne.epm_neid = tt.epm_neid AND ne.epm_objid = tt.epm_objid AND ne.epm_neid=1;

+----+-------------+-------+--------+----------------------------+---------+---------+---------------------------+------+-------------+

| id | select_type | table | type   | possible_keys              | key     | key_len | ref                       | rows | Extra       |

+----+-------------+-------+--------+----------------------------+---------+---------+---------------------------+------+-------------+

|  1 | SIMPLE      | ne    | ref    | PRIMARY,PK_NE_ELEMENTPARAM | PRIMARY | 5       | const                     |    1 | NULL        |

|  1 | SIMPLE      | tt    | eq_ref | PRIMARY                    | PRIMARY | 23      | const,das_uq.ne.EPM_OBJID |    1 | Using where |

+----+-------------+-------+--------+----------------------------+---------+---------+---------------------------+------+-------------+

2 rows in set (0.00 sec)


第一種方法中,type 字段為 range,而第二種方法中,type 字段為 ref 和 eq_ref,說(shuō)明第二種方法效率更高。
我想問(wèn)有沒(méi)有人是用第二種方法來(lái)更新數(shù)據(jù)的?我實(shí)在想不通第二種方法怎么能提高效率啊~~



論壇徽章:
146
2015年亞洲杯之日本
日期:2015-04-28 13:32:012015年亞洲杯之朝鮮
日期:2015-05-06 10:16:442015年亞洲杯之日本
日期:2015-05-06 10:21:342015年亞洲杯紀(jì)念徽章
日期:2015-05-13 17:16:442015亞冠之北京國(guó)安
日期:2015-05-13 17:18:292015亞冠之鹿島鹿角
日期:2015-05-13 17:19:062015亞冠之德黑蘭石油
日期:2015-05-27 16:47:402015亞冠之塔什干棉農(nóng)
日期:2015-05-28 15:24:122015亞冠之卡爾希納薩夫
日期:2015-06-01 13:52:392015亞冠之柏斯波利斯
日期:2015-06-04 17:37:292015亞冠之阿爾納斯?fàn)?日期:2015-06-16 11:31:202015亞冠之塔什干火車頭
日期:2015-06-23 10:12:33
2 [報(bào)告]
發(fā)表于 2016-09-06 15:50 |只看該作者
謝謝分享

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大;照
日期:2014-02-21 14:21:56CU十二周年紀(jì)念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大;照
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大;照
日期:2014-03-13 10:40:30CU大;照
日期:2014-02-21 14:23:15
3 [報(bào)告]
發(fā)表于 2016-09-06 17:14 |只看該作者
謝謝分享,比較少想到第二種方式,不知道是不是和表的索引結(jié)構(gòu)有關(guān)系。

論壇徽章:
224
2022北京冬奧會(huì)紀(jì)念版徽章
日期:2015-08-10 16:30:32操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-02-18 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-03-01 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-03-02 06:20:0015-16賽季CBA聯(lián)賽之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16賽季CBA聯(lián)賽之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16賽季CBA聯(lián)賽之廣夏
日期:2023-02-25 16:26:26CU十四周年紀(jì)念徽章
日期:2023-04-13 12:23:1015-16賽季CBA聯(lián)賽之四川
日期:2023-07-25 16:53:45操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-05-10 19:22:58
4 [報(bào)告]
發(fā)表于 2016-09-06 17:33 來(lái)自手機(jī) |只看該作者
臨時(shí)表跑在內(nèi)存,性能剛剛的

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2016-09-09 07:52 |只看該作者
回復(fù) 2# 王楠w_n

第二種方法中,不知道是不是 MySQL 在做批量更新的時(shí)候?qū)π阅苓M(jìn)行優(yōu)化了。因?yàn)榘次业睦斫,臨時(shí)表有100百萬(wàn)數(shù)據(jù)需要更新到 elementparam 表時(shí),過(guò)程應(yīng)該是這樣的:臨時(shí)表拿到一條數(shù)據(jù) -> 從 elementparam 表的100百萬(wàn)數(shù)據(jù)中查到對(duì)應(yīng)的數(shù)據(jù) -> 更新數(shù)據(jù)。此流程走100百萬(wàn)遍。

而第一種方法,是“從 elementparam 表的100百萬(wàn)數(shù)據(jù)中查到對(duì)應(yīng)的數(shù)據(jù) -> 更新數(shù)據(jù)。此流程走100百萬(wàn)遍”,少一步去臨時(shí)表拿數(shù)據(jù)的過(guò)程(也少了插入臨時(shí)表的過(guò)程)。

理論上來(lái)說(shuō)第一種方法比第二種更高效,但真實(shí)環(huán)境效果相反了。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2016-09-09 07:55 |只看該作者
回復(fù) 4# action08

多謝指點(diǎn),剛看了下臨時(shí)表的屬性,我現(xiàn)在的臨時(shí)表只是業(yè)務(wù)上的臨時(shí),數(shù)據(jù)還是會(huì)寫磁盤的。替換成 MySQL 的臨時(shí)表,估計(jì)效率會(huì)有一定提升。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP