- 论坛徽章:
- 0
|
首先理解问题,
(1),所说的“多进程读取MySQL DB的时候”,也就是多个Client同时访问MySQL server,连接上 的client和一个Connection(或者说session)对应, 一般情况下,一个connection对应该MySQL server上一个thread(也就是你说的进程), 关于当前系统连接线程情况,你可以用show processlist来进行查看。
(2),再看"当多线程同时操作(读或者写)相同数据库对象(表,视图等),怎么同步的?" 也就是在MySQL在“并发”情况下的“同步”问题,或者说MySQL是如何保证并发下的“数据库完整性和一致性”。
问题解释:
(1),MySQL实现对共享资源的并发访问,用“锁”来实现的,锁一般是由存储引擎层来的实现,对于innodb(运行事务)和Myisam(不支持事务),
(2)对于innodb,支持“行级锁”, 个人对了解一下以下点吧:
a, innodb中行锁,
b,与当前的事务隔离级别相关, 比如默认的Repeatable read(可重复读)情况下,通过索引访问(读与写)时,一般用的“间隙性锁",还有在 已提交读的怀况的实现
c,了解”MVCC",多版本控制“
d,基本的“读锁”(共享锁), “写锁”(排他锁)
(3), myisam, 一般都是全局表锁,在操入底部有些细微差别
个人看文档,做点测试,很容易就明白了 |
|