说白了,毗连满了,超时,数据库都不给我返回值了,以是这种尝试,不找100台呆板,也别可一台呆板去霍霍,由于假如能快,谁人1个亿的大表,返回的也不会慢。这时辰拼的就是计较手段了,都在一台呆板上去做尝试,会让你猜疑人生的。
那咋办, 这处所我就冒充返回都是1000毫秒,也就1秒,然后每个线程都在1秒的时辰都给我返回值,这个值我写死,可以看看多线程漫衍式统计count的结果。
最后总体耗时,就是最后谁人返回时刻最长的线程返回的时刻,以是理论上100个线程同时启动,应该在1秒完成,但线程这玩意有快有慢,以是1秒多一点,也是可以接管的。假如碰上都是呆板机能好的时辰,全部数据库返回都在1秒以内,那么也就是1秒了。
这个多线程编程可以试试相同Java的countDownLatch/AKKA 将异步多线程功效同步返回。
最后是在数据库数据量较量大的时辰,通过MySQL以上的特征,举办差异场景应用的思索。
场景:银行买卖营业流水记录的查询
- 按照小总结六的特征,操纵表和汗青查询表必然要时刻可以分隔,因为带索引的汗青表,插入会很慢,以是要插入到操纵表内,操纵表和汗青表的字段是一样的。
- 按照小总结二特征,然后牢靠某个时刻点,好比三更12点,可能牢靠日期,可能选择非买卖营业查询活泼的时刻,把操纵内外的数据往汗青内外插一下,因为重建索引也用不了太久,一样半个小时阁下。让两种表并存。尚有其它一种计策,因为流水首要以时刻做为排序工具,可以凭证时刻次序,也就是ID自增添的次序举办分库分表,就像试验的那样,100万阁下条数据一张表,其它在做一张时刻范畴的索引表,如下:
- CreateTimeIndexTable
- ID TableName CreateTimeStart CreateTimeEnd
- 1 yun_cashflow_1 2018-10-22 09:06:58 2018-10-26 09:06:58
- 2 yun_cashflow_2 2018-10-26 09:06:58 2018-10-29 09:06:58
- 3 yun_cashflow_3 2018-11-12 09:06:58 2018-11-22 09:06:58
- 4 yun_cashflow_4 2018-11-22 09:06:58 2018-11-26 09:06:58
当碰见这样语句需求的时辰:
- 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)、就改写成这样的次序
- 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,在举办语句的查询
- 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'
这样,两遍就可以查询到功效。
不外也有也许查询的功效是多个,好比
- 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. 按照小总结四的特征,只管限定查询功效的数目范畴,好比,单小我私人查本身的买卖营业明细,可以限定范畴,好比查询时刻范畴不高出三个月,或半年,或一年。
【编辑保举】
- 达梦DM8新品宣布 国产数据库迎来新的里程碑
- 成也数据库 败也数据库 Oracle 怎样云渡劫?
- 6月数据库排行:PostgreSQL 和 MongoDB 分数有数降落
- MySQL导致CPU耗损过大,怎样优化
- MySQL索引道理与应用:索引范例,存储布局与锁
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|