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

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

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等。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB性能优化是指通过一系列技术手段来提升MongoDB数据库的读写效率、响应速度和吞吐。下面是一些常见的MongoDB性能优化方法: 1. 索引优化:使用合适的索引可以加速查询操作。在选择索引字段时,应根据查询的频率和字段的选择性来进行考虑。避免创建过多的索引,因为过多的索引会增加数据写入和更新的开销。 2. 查询优化:使用合适的查询语句和操作符可以减少数据扫描的。避免使用全表扫描操作,尽利用索引进行查询。 3. 数据模型优化:合理设计数据模型可以提升数据库的性能。将经常一起查询的数据放在同一个集合中,避免频繁的跨集合查询。 4. 分片集群优化:对于大规模数据集,可以使用分片集群来提高性能和可伸缩性。通过合理划分数据和配置分片,可以实现负载均衡和并行查询。 5. 预分配空间:在写入大数据之前,可以预先为集合或数据库分配足够的存储空间,避免频繁的扩容操作对性能造成影响。 6. 配置参数优化:根据系统硬件和工作负载的特点,调整MongoDB的配置参数,如缓存大小、线程数等,以获得更好的性能表现。 7. 使用复制集和副本集:通过配置复制集和副本集,可以提高数据的可用性和读取性能。 8. 批量操作和异步写入:通过批量操作和异步写入方式可以提高写入性能。例如,使用Bulk Write API进行批量插入、更新和删除操作;启用Write Concern的"unacknowledged"模式,将写入操作异步化。 9. 监控和调优:定期监控数据库的性能指标,如QPS、响应时间、磁盘使用率等,及时发现并解决潜在的性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值