本篇文章给大家分享的是有关Mysql RELICATION对存过的处理是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
昨天鹰眼需求从一个大表(27G)删除47026788数据;
用存储过程通过主键删除实现;用了一个小时50分钟;
QPS=47026788/(60 * 110)=7125.2709
这个速度已经满快了,都是随机读;[@more@]
当时我在想,MASTER用近两个小时,是不是奴隶也用这么长时间么;
到奴隶一看,根本没有结构化查询语言在跑;
而且表里数据已经被清空;
通过测试,我们发现掌握在应用存过时,在BINLOG里记录的是真正最后执行的现代语言博士现代语言博士操作;
比如:
#101202 13:58:43服务器id 2 end _ log _ pos 15842查询线程id=4058 exec _ time=0错误代码=0
设置时间戳=1291269523/*!*/;
从测试中删除,其中id=NAME_CONST('v_entry_id ',238)
/*!*/;
#在15842
#101202 13:58:43服务器id 2 end _ log _ pos 15974查询线程_ id=4058 exec _ time=0错误代码=0
设置时间戳=1291269523/*!*/;
从测试中删除,其中id=NAME_CONST('v_entry_id ',240)
/*!*/;
#在15974
#101202 13:58:43服务器id 2 end _ log _ pos 16106查询线程id=4058 exec _ time=0错误代码=0
设置时间戳=1291269523/*!*/;
从测试中删除,其中id=NAME_CONST('v_entry_id ',242)
/*!*/;
.
所以只要掌握执行完后,就会马上应用到奴隶
下面是一个删除数据的存储过程范例:
================================================
使用测试;
如果存在delete _过期,则删除过程;
分隔符/
创建过程删除_过期(在_日期内)
开始
声明完成时间默认值为0;
声明rowcnt int默认值为0;
声明v _ entry _ id int
声明曲线游标用于从测试中选择id;
SQLSTATE '02000 '的声明继续处理程序设置完成=1;
开放曲线
开始交易;
cursor_loop:loop
将曲线提取到v_entry_id中;
如果完成=1,则离开光标循环
结束如果;
从测试中删除,其中id=v _ entry _ id
设置行CNT=行CNT 1;
如果rowcnt=1000,则
设置行CNT=0;
提交;
开始交易;
结束如果;
结束循环光标循环
提交;
关闭曲线
END//
分隔符;
呼叫delete _ expired(' 2010-01-10 ');
如果存在delete _过期,则删除过程;
===========================================================
以上就是Mysql RELICATION对存过的处理是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/106542.html