当前位置:首页 > TAG信息列表 > 怎么优化mysql性能mysql中怎样对大批量级的数据查询进行优化?介绍

怎么优化mysql性能mysql中怎样对大批量级的数据查询进行优化?介绍

怎么优化mysql性能 mysql中怎样对大批量级的数据查询进行优化?

mysql中怎样对大批量级的数据查询进行优化?

mysql这些年来都支持什么正则不兼容,但是对此正则替换则一直到mysql8.0才支持。对于这类场景,以前或则在mysql端处理,要嘛把数据拿出来在运用端如何处理。

比如说我想把表y1的列str1的出现第3个action的子串替换成dble,咋基于?

1.自己写sql层的存储函数。代码如下写死了3个,也没优化软件,不仅仅才是演示,mysql里更加不我建议你写这样的函数。

怎么优化mysql性能 mysql中怎样对大批量级的数据查询进行优化?

mysqldelimiter$$%use`ytt`$$dropfunctionifexists`func_instr_simple_ytt`$$

createdefiner`root`@`localhost`function`func_instr_simple_ytt`(

f_strvarchar(1000),--parameter1 _substrvarchar(100),--parameter2

f_replace_strvarchar(100),

f_timesint--timespolicies3.

)returnsvarchar(1000)

begin

declarev_resultvarchar(1000)defaultytt--result.

declarev_substr_lenintdefault0--searchstringlength.

setf_times3--butpolicies3.

setv_substr_lenlength(f_substr)

selectinstr(f_str,f_substr)

selectinstr(substr(f_str,@p1v_substr_len),f_substr)

selectinstr(substr(f_str,@*v_substr_len-1),f_substr)

@

select

concat(substr(f_str,1,@@p3(f_times-1)*v_substr_len-f_times)

,f_replace_str,

substr(f_str,@@p3f_times*v_substr_len-2))intov_result

exists

setv_resultf_str--neverchanged.

endif

--purgeallsessionvariables.

returnv_result

end

$$

delimiter

--调用函数来自动更新:

mysqlgtversiony1setstr1func_instr_simple_ytt(str1,action,dble,3)

query就ok啦,20rowsaffected(0.12sec)

rowsmatched:20changed:20warnings:0

2.导进去用sed之类的工具替换掉在导入,步骤如下:(推荐一下可以使用)1)导入表y1的记录。

mysqlmysqlgtselect*aroundy1intooutfile/var/lib/mysql-files/y1.csvquery可以了,20rowsaffected(0.00sec)

2)用sed全部替换导不出来的数据。

:/var/lib/mysql-files#sed-is/action/dble/3y1.csv

3)再度导入处理好的数据,成功。

mysql

mysqlgttruncatey1

queryok,0rowsaffected(0.99sec)

mysqlgtloaddatainfile/var/lib/mysql-files/y1.csvoutsidetabley1

queryok,20rowsaffected(0.14sec)

records:20deleted:0skipped:0warnings:0

以上两种应该推荐推荐导出来处理行了再然后再文件导入,性能来的高些,不过还不用什么自己费时间写函数代码。那mysql8.0对于以上的场景实现方法就太简单的了,一个函数就搞掂了。

mysqlmysqlgtnotificationy1setstr1regexp_replace(str1,action,dble,1,3)query就ok啦,20rowsaffected(0.13sec)rowsmatched:20changed:20warnings:0

还有一个一个regexp_instr也非常用处不大,特别是这种指代出现第两次的场景。比如说定义方法session变量@a。

,bbbcceefilucy111bs234523556119101020301040query行啦,0rowsaffected(0.04sec)

拿去至多一次的数字又出现的第二次子串的位置。

mysqlmysqlgtselectregexp_instr(@a,[:digit:]{2,},1,2)--------------------------------------|regexp_instr(@a,[:digit:]{2,},1,2)|--------------------------------------|50|--------------------------------------1rowoutsideset(0.00sec)

那我们在看看对多字节字符支持什么要如何。

mysql

美国俄罗斯日本北京上海深圳广州北京上海武汉东莞北京青岛北京

query行啦,0rowsaffected(0.00sec)

mysqlgtselectregexp_instr(@a,北京,1,1)

-------------------------------

|regexp_instr(@a,北京,1,1)|

-------------------------------

|17|

-------------------------------

1rowoutsideset(0.00sec)

mysqlgtselectregexp_instr(@a,北京,1,2)

-------------------------------

|regexp_instr(@a,北京,1,2)|

-------------------------------

|29|

-------------------------------

1rowintoset(0.00sec)

mysqlgtselectregexp_instr(@a,北京,1,3)

-------------------------------

|regexp_instr(@a,北京,1,3)|

-------------------------------

|41|

-------------------------------

1rowofset(0.00sec)

那学习总结下,这里我提起了mysql8.0的两个最有用正则匹配函数regexp_replace和regexp_instr。对于以前类似于的场景不算有一个完美的解决方案。

mysql数据量很大时,cpu占用率很高,如何优化?

一、要是是写比较好少,读也很高可以不做读写分离,一主多从二、要是是读写都很多可以使用分库分表,多主多从

instr0.00sec场景函数


江苏自考之家 巨超值

  • 关注微信关注微信

猜你喜欢

热门标签

如何删除微信朋友圈 爱时间app忘记密码怎么办 mvc设计模式的优缺点 word隐藏布局选项按钮 怎么批量修改照片名字为学号 类模板的成员函数都是函数模板 qq面对面红包怎么用 亚马逊购买苹果礼品卡 qq怎么找删除的说说 微信收款码怎么操作 激光打印机开不了机怎么回事介绍 华为智慧屏和电视有什么区别 红米k40音量键失灵维修多少钱 乐视充电宝5000怎样知道开启快充乐视手机充电慢 word怎么单独把文字竖起来word中文字排列方式? 键盘记录工具使用步骤OPPO手机有记录按键功能吗?介绍 win10电脑待机唤醒不需要密码电脑怎么设置无锁屏密码?介绍 抖音测一测职业怎么测不出来抖音职业认证哪个好过关?介绍 怎样邀请朋友进qq群手机怎么关闭qq自动同意加群?介绍 360浏览器取消网页导航怎么恢复360浏览器怎样关闭2345网址导航?介绍 电脑端如何恢复手机微信聊天记录电脑上的微信聊天记录备份怎么查看? 蓝牙鼠标可以连接ipad吗 手机哪个软件可以自己英汉互译手机搜狗输入法怎么进行中英互译?介绍 没有python怎么运行py文件python怎么打开看py文件? 场所到访人员信息登记码怎么弄店铺怎么申请辽事通场所码? 微信怎样才能加好友微信昵称怎么加好友?介绍 3dmax关键帧动画如何调快慢3DMAX渲染慢怎么办?如何提高速度? 迷你世界怎么拿套米兔衣服米兔故事机怎么联网蓝牙版?介绍 qq拼音输入法怎么打开软键盘华为笔记本怎么输入特殊符号?介绍 如何用excel统计结果正确和错误数EXCEL计算错误的原因?如何解决?

微信公众号