同步和异步两种模式如何处理高并发场景?
来源:5-1 tornado之helloworld

qq___107
2020-01-28
bobby老师好!
我假期在家突然想到了一个问题,希望您能帮忙解答一下。
一个常见的场景,就是数据库中的某一条记录在很短的时间内有大量的读写操作,那同步和异步两种模式是怎么处理的?
(我的一些思考)同步模式下,可能会采用锁机制,那这个锁是由数据库实现的,还是由代码实现的?就是,是采用数据库中自带的锁,保证某一条数据在某一时刻只能被一个会话修改,还是说,是程序员自己写关于锁的代码?
写回答
1回答
-
你这个问题还是很不错的, 短时间内有大量的读写操作这个确实也是高并发最常见的需求了。其实这个时候使用同步异步都不能很好的解决,因为-性能在数据库上!!,代码级别的同步和异步io都无法解决数据库的性能,这个是数据库的性能问题,这里面需要你对数据库的锁机制很清楚,单就mysql来说,锁就分为好几种,你可以随便找一本mysql的高级知识的书看一下,锁是为了数据的安全,但是锁一定会带来性能问题,还有一种就是索引,因为只要是查询为了加速查询一定会有索引,索引也一定会影响插入的性能,所以这里有两个矛盾点:1. 锁能保证数据安全但是会影响性能 2. 不加索引插入可能很快,但是查询会很慢,有了索引查询会快,但是插入会慢 所以不论是什么高并发场景都会有一个共同目标就是代码能不查询和插入数据库就不要插入数据库, 这个就是缓存机制,缓存是目前已有的最有效提高并发的手段了,但是缓存引入很容易造成数据不一致,所以也就有了很多缓存的解决技术,比如缓存穿透等等 这些网上资料也比较多,至于程序员自己的锁,很多时候都会用到的
0142020-02-05
相似问题
aiofile是异步磁盘IO么?
回答 1
关于fastapi的一个问题
回答 1