我有一个包含大量写入操作的日志表:这就是选择 MyISAM 的原因。
现在我需要执行一个复杂的 SELECT 查询,这会花费大量时间并阻塞表:那时没有人可以写入它。
- 该表具有较高的“写入”负载
- 我不在乎我是否没有最新的记录
- 数据永远不会被删除
在不阻塞表的情况下读取数据的选项有哪些?
- LIMIT 在查询完成后应用,因此不是一个选项
- 修改所有 INSERT 语句以使它们 DELAYED 不是一种选择
- InnoDB 也不是一个选项
- HANDLER 查询不是一个选项:我需要复杂的 WHERE 条件
我有一个包含大量写入操作的日志表:这就是选择 MyISAM 的原因。
现在我需要执行一个复杂的 SELECT 查询,这会花费大量时间并阻塞表:那时没有人可以写入它。
在不阻塞表的情况下读取数据的选项有哪些?
一些建议,也许其中一个适合你
选项:奴隶
配置用于 SELECT 查询的从站。这不会阻止插入。但是,这需要第二台服务器、一些配置和存储空间,所以这不是一个好的解决方案,只是为了获取您的数据。
选项:使用低优先级更新:http ://dev.mysql.com/doc/refman/5.0/en/table-locking.html
这可以在服务器级别或连接级别完成,因此您不必修改每个插入语句。
工作进程