大数据量下(批量)提升性能的方法以及常见的性能优化方法

本文提供了在数据库和代码层面处理大数据量时的优化策略,包括合理使用索引、避免全表扫描、采用批量操作、减少数据库连接次数、优化算法复杂度、有效管理内存和IO等,以提高效率和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库层面(包含数据库设计和语句):尽量做到节省时间和数据库开销

1.让语句更加合理,符合查询优化的规则。避免全表扫描,建立高效索引,正确利用索引等。

2.避免频繁创建和删除临时表。

3.尽量避免向客户端返回大量数据。

4.数据量非常大时,数据库层面可以分库分表,读写分离。(利用hash等。)

5.对于查询和插入数据库,大数据量时采用批量查询和插入,避免多次连接数据库增加数据库开销。

6.在满足业务要求的基础上,做到尽量减少表的访问。

7.对于大数据量的表与表之间的插入,可以采用并行。如果是同数据源多目标的插入,可以采用多表插入技术。

8.在sql语句中,只写必要的列,做到用何值查何值。(大数据量查询避免内存爆掉)

9.尽可能减少或不用distinct,distanct动作的速度则取决于现有数据的数量,数量越大则时间也越慢。

10.UNION提供两个表中不存在于另一个表中的行,隐式地删除了重复项,返回不同的行会浪费一定的时间。UNION ALL将提供想要的结果,而不需要对数据进行排序,但不保证有重复值。

11.尽量将区间语句重写为Between语句。

12.谓词列上编写的任何数学运算会有可能导致不可索引,例如:select * from tablea where price*2 >1000,应写为select * from tablea where price >1000/2

13.历史归档  可根据时间整理出很少用到的数据集抽到历史表中,数据表只留常用数据,可以利用对象序列化反序列化来实现。适用场合:对历史数据极少访问。 

代码层面:

1.需要对业务服务器和业务支撑服务器进行合理的分层,并且采用并行计算和分布式算法对大量计算进行处理,

2.使用并行处理的方式,可以节约时间,对批处理带来极大地好处,但是并行处理很吃资源,并且在算法的复杂度上没有影响。所以第一种方式,就是降低算法复杂度。即找出代码中逻辑的关键点加以完善,起到改善性能的作用。

3.在开发前要有一个良好且合理的设计:有两句话很受用:(1).良好的设计将会使优化变得更加容易。(2)过早的优化并不能解决所有有的性能问题,但是不良的设计将会导致优化难度的增加。设计优化中,可以考虑缓存,多线程等。

4.尽早释放无用对象,避免使用String,多使用StringBuffer。

5.避免集中创建对象以偶其实大对象,当jvm需要大量内存必然触发gc优化系统内存,增加jvm压力。

6.不要在经常调用的方法中创建大对象,尤其是在循环中创建。

7.在数据库中读取数据后,根据需求合理选择存储结构(例如:根据查询或更改,对于arrayList和linkedlist的选择)。

8.异常尽量避免在循环体内使用异常捕获。

9.大数据量中,位运算代替乘除运算。

总结:

在处理大数据量的情况中,db应当考虑以后的扩展性,让语句合理,而在代码方面,应该考虑数据库连接次数、内存、io等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值