欢迎光临散文网 会员登陆 & 注册

4年码龄老学员分享:千万级数据库查询需要注意什么

2020-09-01 16:30 作者:汇智知了堂  | 我要投稿

知了堂学习社区从2016年运营至今,培养了10000+学员入职到IT行业领域的各个企业,从本周开始我们也增加了学员技术分享专栏,学员将自己在一线的开发经验分享给我们正在学习或者已经工作了的知了学员。


本周分享嘉宾:小墨鱼

班级:知了堂Java2班学员入职:北京****公司(专注金融领域开发)

岗位:Java开发

码龄:4年

背景

系统交易量与日俱增。目前负责系统,数据库单表存放的数据量越来越大,目前已是百万级。查询速度变慢,所以在思考,与同事交流,网上找相应问题需要注意的风险,以及后续解决方案。


01.千万级数据库查询需要注意什么


1、建立索引(where,order by)。

2、避免在where字句中,进行null值判断,导致引擎放弃使用索引,进行全表扫描。

3、索引提高了查询效率,但是降低了insert和update效率,所以不是越多越好。

4、数字,不要涉及为字符型,会降低查询连接性能。比较字符串,需要比较每一个,数字只需要比较一次。

5、频繁和删除临时表,会增加系统表资源的消耗。

6、如果使用了临时表,最后先显示存储,先truncate table 再 drop table。

7、!= 和<>,or,以及在where 后面使用表达式,使用参数,都会导致全表扫描。

02.千万级数据解决方案


1、将历史数据进行迁移

如果系统运行稳定,在固定时间内做历史数据迁移,我认为是一个挺有效的解决方案


2、分表方案

(1)一是根据自增主键进行哈希取模,将数据均分到n张表中;该方案最简单,且最合适,拆分后数据分布均匀。


(2)二是无自增主键,选取的分表id由特定的方式生成,则需先确定分表id生成逻辑,根据该逻辑确定取模计算的逻辑,以保证数据均分。


好了,本次分享就到这里了,千万级数据库查询需要注意的点你get到了吗?


4年码龄老学员分享:千万级数据库查询需要注意什么的评论 (共 条)

分享到微博请遵守国家法律