Hello!
2015-02-03 3:15 GMT-08:00 leedotx:
> 我在介绍上看到HttpDrizzleModule提供的是"non-blocking and streamming
> way.",
这里说的 nonblocking 是指对应的 IO 操作不会阻塞当前进程里正在服务的其他请求,不会阻塞 nginx 的事件处理循环,不会阻塞当前的 OS 线程。
> 那么,如果我后端进行一个复杂的查询把表锁住了(myisam表),但
> 是前端高并发的情况需要继续对这个表插入数据(由于一些特殊原因
> 无法进行读写分离),通过curl插入数据,请问这个时候能继续插入
> 数据吗,前端的访问会卡住吗?谢谢!
>
如果你的 MySQL 服务器自身的某个表被全表锁定,那么神仙也无法让这个表同时支持其他请求的写入。
不过,即使对于此种情况,nginx 中非阻塞的 mysql 客户端仍然有意义,即等待在这个锁定表上的 mysql 查询并不会影响该
nginx 服务其他的不相干的请求(比如读写其他 MySQL 表或 MySQL 数据库的并发查询,或者完全不访问 MySQL
的静态资源请求,等等),这可以避免雪崩效应,防止出现整个 nginx 服务都不可用的极端情况(如果你的 MySQL
后端有做数据分割或冗余的话)。
Regards,
-agentzh