加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL亿级数据数据库优化方案测试-银行买卖营业流水记录的查询

发布时间:2019-06-06 11:18:08 所属栏目:编程 来源:逸宸a
导读:对MySQL的机能和亿级数据的处理赏罚要领思索,以及分库分表到底该怎样做,在什么场景较量吻合? 好比银行买卖营业流水记录的查询 限盐少许,上现实尝试进程,以下是在尝试的进程中做一些操纵,以及踩过的一些坑,我认为坑对付读者来讲长短常有效的。 起首:成立一

说白了,毗连满了,超时,数据库都不给我返回值了,以是这种尝试,不找100台呆板,也别可一台呆板去霍霍,由于假如能快,谁人1个亿的大表,返回的也不会慢。这时辰拼的就是计较手段了,都在一台呆板上去做尝试,会让你猜疑人生的。

那咋办, 这处所我就冒充返回都是1000毫秒,也就1秒,然后每个线程都在1秒的时辰都给我返回值,这个值我写死,可以看看多线程漫衍式统计count的结果。

最后总体耗时,就是最后谁人返回时刻最长的线程返回的时刻,以是理论上100个线程同时启动,应该在1秒完成,但线程这玩意有快有慢,以是1秒多一点,也是可以接管的。假如碰上都是呆板机能好的时辰,全部数据库返回都在1秒以内,那么也就是1秒了。

这个多线程编程可以试试相同Java的countDownLatch/AKKA 将异步多线程功效同步返回。

最后是在数据库数据量较量大的时辰,通过MySQL以上的特征,举办差异场景应用的思索。

场景:银行买卖营业流水记录的查询

  1.  按照小总结六的特征,操纵表和汗青查询表必然要时刻可以分隔,因为带索引的汗青表,插入会很慢,以是要插入到操纵表内,操纵表和汗青表的字段是一样的。
  2.  按照小总结二特征,然后牢靠某个时刻点,好比三更12点,可能牢靠日期,可能选择非买卖营业查询活泼的时刻,把操纵内外的数据往汗青内外插一下,因为重建索引也用不了太久,一样半个小时阁下。让两种表并存。尚有其它一种计策,因为流水首要以时刻做为排序工具,可以凭证时刻次序,也就是ID自增添的次序举办分库分表,就像试验的那样,100万阁下条数据一张表,其它在做一张时刻范畴的索引表,如下: 
  1. CreateTimeIndexTable  
  2. ID  TableName   CreateTimeStart CreateTimeEnd  
  3. 1   yun_cashflow_1  2018-10-22 09:06:58 2018-10-26 09:06:58  
  4. 2   yun_cashflow_2  2018-10-26 09:06:58 2018-10-29 09:06:58  
  5. 3   yun_cashflow_3  2018-11-12 09:06:58 2018-11-22 09:06:58  
  6. 4   yun_cashflow_4  2018-11-22 09:06:58 2018-11-26 09:06:58 

当碰见这样语句需求的时辰:

  1. select * from yun_cashflow where money<62 and userid=32 and  createtime between '2018-10-27 09:06:58' and '2018-10-28 09:06:59' 

1)、就改写成这样的次序

  1. select TableName from CreateTimeIndexTable where CreateTimeStart>  '2018-10-27 09:06:58' and CreateTimeEnd < '2018-10-28 09:06:59' 

2)、当获得TableName的时辰,功效是yun_cashflow_2,在举办语句的查询

  1. select * from yun_cashflow_2 where money<62 and userid=32 and  createtime between '2018-10-27 09:06:58' and '2018-10-28 09:06:59' 

这样,两遍就可以查询到功效。

不外也有也许查询的功效是多个,好比

  1. select TableName from CreateTimeIndexTable where CreateTimeStart>  '2018-10-27 09:06:58' and CreateTimeEnd < '2018-11-13 09:06:59' 

yun_cashflow_2,和yun_cashflow_3,这个时辰,就必要把两个表的功效都查询出来,举办merge。信托措施员们对两个表的功效集归并逻辑都不是什么难事,这处所不多表明。

这样做的甜头,首要是每次重建索引的时辰,就不消整个1个亿的大表举办重建,而是只重建最近的1百万的那张分出来的表,速率会很快的。

  3.  按照小总结一和小总结三的特征,把要害的字段加上索引,用户,时刻,这样担保查询的速率。

  4.  按照小总结四的特征,只管限定查询功效的数目范畴,好比,单小我私人查本身的买卖营业明细,可以限定范畴,好比查询时刻范畴不高出三个月,或半年,或一年。

【编辑保举】

  1. 达梦DM8新品宣布 国产数据库迎来新的里程碑
  2. 成也数据库 败也数据库 Oracle 怎样云渡劫?
  3. 6月数据库排行:PostgreSQL 和 MongoDB 分数有数降落
  4. MySQL导致CPU耗损过大,怎样优化
  5. MySQL索引道理与应用:索引范例,存储布局与锁
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读