一、性能基础知识

一、响应与吞吐

响应表示的是应答的快慢,吞吐表示的是处理数量的多少

响应时间不变的情况下,多增加处理的数据条数,吞吐则会增加

在考虑性能时,需要有意识的考虑系统是偏重于响应还是偏重于吞吐

若偏重于响应,系统响应变快,则吞吐也会提高(但是会受到CPUI/O速度极限的限制)

若偏重于吞吐,则在高并发情况中,即使访问集中,响应也不会变慢(互联网热门网站基本使用这个)

二、栈

栈可以被描述为把文件和书等从下往上不断堆积,处理顺序是从上往下,新来的优先处理,先进后出的处理顺序

栈的优点:只占用必要的空间,不会让空间产生碎片,只要处理一完成,空间就会腾出来,形成连续的闲置空间,可以放置下一个请求

栈的缺点:适用情况较少,最先放进去的最后处理

三、缓存:缓存时计算机中,为了提高性能而保存的东西

1. 缓存回写:指的是之后更新数据的方式,即在更新数据的时候,不更新数据实际存放的地方的数据,只更新缓存内的数据,之后再更新数据实际存放的地方

缓存回写优点:数据实际存放的地方一般离得很远,所以处理速度很慢,回写则可以不用等待写入数据实际存放的地方,所以速度很快,如果读取也能通过缓存来进行,速度也很快

缓存回写缺点:缓存中的数据丢失,那么数据实际存放的地方的数据就一直是老数据,可能会导致数据不一致

2. 缓存直写:数据实际存放的地方进行直接更新

缓存直写优点:在缓存中有数据的话,读取会非常快速,并且也能确保数据写入

缓存直写缺点:完全写入数据实际存放的地方会花费时间,导致响应速度变慢

四、锁与性能

1. 锁是在并行处理的情况下(同时进行操作的情况)所必需的机制,在更新链表的时候就需要让别的程序等待,锁说到底就是在某个处理进行期间起到保护作用的机制,是为了防止别的处理侵入,基本上数据的更新操作都要用锁来进行保护,在读取有时也需要加锁

2. 锁等待:多个请求同时涌入,等待锁被释放的处理的数量也就增加,只有一个服务进行处理,其他请求就需要等待控制,在锁进行保护的过程中,只要处理没有完成,就不能释放锁

3. 锁等待解决方法:若对DB表加锁,并执行sql语句,那么让sql处理尽快完成,就能减少占有锁的时间;若不对DB的表加锁,而是对行加锁执行sql,这样就能并行执行,这样通过细化分割减少等待时间

A. DB行锁

    引擎 INNODB , 单独的一行记录加锁,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。

    行级锁定的优点:

·         当在许多线程中访问不同的行时只存在少量锁定冲突。

·         回滚时只有少量的更改。

·         可以长时间锁定单一的行。

    行级锁定的缺点:

·         比页级或表级锁定占用更多的内存。

·         当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。

·         如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。

·         用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。

B. DB表锁

    引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许

    1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

    2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

C. JAVA锁(synchronized

D. CPU的命令级别的锁

E. OS内部的锁

F. DB内部的锁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值