java优化分析

常用命令

top 查看进程pid
top -H -p 进程pid  查看线程pid
jstack 进程pid | grep 线程pid(16进制格式) -A 15 查看堆栈信息  
#[命令转16进制printf "%x\n" 2344]

接口优化

1、批处理:批量操作数据库,可以在批处理执行完成后一次性插入或更新数据库,避免多次 IO。
2、异步处理:针对耗时比较长且不是结果必须的逻辑,我们可以考虑放到异步执行,这样能降低接口耗时。
3、空间换时间:合理使用缓存,针对一些频繁使用且不频繁变更的数据,可以提前缓存起来,需要时直接查缓存,避免频繁地查询数据库或者重复计算。缓存会带来的数据一致性问题。
4、预处理:就是预取思想,就是提前要把查询的数据,提前计算好,放入缓存或者表中的某个字段,用的时候会大幅提高接口性能。
5、池化思想: 我们都用过数据库连接池,线程池等,这就是池思想的体现,它们解决的问题就是避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。
池化思想包含但并不局限于以上两种,总的来说池化思想的本质是预分配与循环使用,明白这个原理后,我们即使是在做一些业务场景的需求时,也可以利用起来。
比如:对象池
6、串行改并行。
7、数据库索引。
8、避免大事务。
9、优化程序结构。
程序结构问题一般出现在多次需求迭代后,代码叠加形成。会造成一些重复查询、多次创建对象等耗时问题。
10、深分页问题
用where id >100000 limit 200代替limit 100000,200
局限性是需要一个连续自增的字段。
11、sql优化。
12、锁粒度避免过粗。
锁一般是为了在高并发场景下保护共享资源采用的一种手段,但是如果锁的粒度太粗,会很影响接口性能。

高效更新(update)MySQL百万级数据表更新某个字段

  1. 使用索引
    在百万级数据表中进行数据更新,使用索引可以大大提高操作效率,避免锁表。索引可以使查询和更新操作更快速。如果没有适当的索引,查询和更新操作可能会变得很慢,这可能导致应用程序的响应时间变慢。因此,在进行更新操作之前,必须确保在要更新的字段上有适当的索引,这将显著提高操作速度。
  2. 使用批量更新
    批量更新可以有效地减少数据更新过程中的延迟。在百万级数据表中,执行单个更新操作需要花费大量的时间,这时使用批量更新将会是一个理想的选择。使用批量更新可以将多个更新操作合并到一起。这不仅可以减少查询次数,还可以减少数据库的开销。如果数据库支持批量更新,那么批量更新可以在很短的时间内更新非常大的数据表。
  3. 使用事务
    使用事务保证数据一致性。
  4. 考虑数据表分割
  5. 使用缓存,减少数据库查询和更新次数
  6. 使用优化工具
    MySQL提供了各种工具,可以帮助您优化百万级数据表的查询和更新操作。这些工具包括跟踪和分析查询,优化表格锁定和索引,数据库分区等。使用这些工具可以提高系统的性能,并显著提高工作效率。
  7. 使用分页更新,避免大事务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值