主题:【原创】好吧,给一个铁道部订票系统的正确答案 -- 布老虎
尤其是可以有效降低全表扫描的查询负载。在有索引的条件下,这个查询负载降低不明显。
写操作的问题是,竞争+并发,一个事务提交会导致其它事务重做或者回滚。用一个粗略的方法计算,假设有10个事务竞争一行数据,假设他们全部能成功提交,那么,并行事务(假设到所有事务在最终提交前发生回滚)最终耗费的运算资源是10+9+8+7+6+5+4+3+2+1=45;如果这10个事务是串行提交的话,那么耗费资源是1+1+1+1+1+1+1+1+1+1=10。
由于大量的数据库连接资源被浪费到回滚上。数据库连接池会被迅速耗尽。最终导致读数据连接也无法接入。
春运的时候竞争只会比这个强。
无论分多少个表,对于同一行的竞争是无法规避的。现代数据库对资源的锁定都是按照行来的(行锁),并且写不会阻塞读。分表(分区)对于写竞争改善不大。
如果写操作对资源的锁定是按照表来的话,那么你的想法非常有意义。不过现代数据库大多不是这样。
核心问题是解决写操作竞争。可以搜索"MVCC"参考一下数据库的并发控制原理。
- 相关回复 上下关系8
压缩 2 层
🙂我这个考虑过了,可能他们没有做那么复杂 1 百年 字232 2013-10-22 09:49:25
🙂这个是正确答案 2 布老虎 字692 2013-10-23 01:03:28
🙂【商榷】不知道他们有没有用分表这样的很普遍的方法 3 一个ID 字509 2013-10-18 07:11:20
🙂表分区(分表)的主要目的是为了降低查询负载
🙂麻烦的应该是查验身份证 zero9999 字46 2013-10-18 09:49:24
🙂2000千万报价是少了点,奥巴马care的网站都近5个亿 川普 字67 2013-10-16 23:14:15
🙂healthcare.gov的问题不只是流量限制 6 muilho 字647 2013-10-22 15:10:17
🙂承包商CGI的负责人是奥巴马老婆的同学 5 南京好声音 字67 2013-11-04 00:02:02