疏漏总结(一)

线程池大小如何设置

对于计算密集型的任务,一个有Ncpu个处理器的系统通常通过使用一个Ncpu+1个线程池来获得最优的利用率。

对于包含了IO和其他阻塞操作的任务,不是所有的线程都会在所有的时间被调度,因此需要一个更大的池。2*Ncpu
Nthreads = Ncpu x Ucpu x (1 + W/C)其中,
Ncpu = CPU核心数
Ucpu = CPU使用率,0~1
W/C = 等待时间与计算时间的比率

线程数 = Ncpu / (1 - 阻塞系数) = Ncpu x (1 + W/C)

线程池数设置过大有什么缺点:如果maxsize过大会占用更多的资源,cpu会频繁进行上下文切换,会导致cpu缓存的数据失效和重新加载,结果就是上下文切换和reload的时间变多,也就是说cpu将更多的时间花费到对线程的管理上去了,这个时候更多的线程反而更慢。

Mysql

在mysql中行级锁并不是直接锁记录,而是锁索引。InnoDB行锁是通过给索引项加锁实现的,索引分为主键索引和非主键索引两种,如果一条SQL语句操作了主键索引,MySQL就会锁定这条主键索引;如果一条语句操作了非主键索引,MySQL会先锁定该非主键索引再锁定相关的主键索引。如果没有主键索引,InnoDB会通过隐藏的聚簇索引来对记录加锁。也就是说:如果不通过索引条件检索数据,那么InnoDB将对表中所有数据加锁,实际效果跟表级锁一样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值