首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当多个选择正在处理或花费太多时间时,Mysql无法更新行。

当多个选择正在处理或花费太多时间时,Mysql无法更新行。
EN

Stack Overflow用户
提问于 2017-01-10 05:34:10
回答 2查看 91关注 0票数 0

我有一个名为Settings的表,它只有一行。对我的程序来说,设置在所有情况下都是非常重要的,设置每秒钟被200到300个用户读取。我还没有使用任何缓存。我无法更新“限制”等值的“设置”表。将限制从5-10或API中的任何内容更改。例句:限制产品5-10.更新查询永远运行.在Workbench中,我可以更新记录,但是从Admin到API,它不会更新,也不会花费太多的时间。表- InnoDB

代码语言:javascript
复制
1. Already Tried Locking With Read - Write. 
2. Transaction.
3. Made a View of the table and Tried to update the table, the Same Issue remains.
4. The Update query is fine from Workbench, But through an API. It runs all day.

不管怎样,我可以锁定表上的读操作并更新表。我的桌子上只有一排。

如能提供任何帮助,我们将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2017-01-10 05:52:15

这听起来是使用查询缓存的一个很好的用例。

查询缓存存储SELECT语句的文本以及发送给客户端的相应结果。如果稍后收到相同的语句,服务器将从查询缓存检索结果,而不是再次解析和执行该语句。查询缓存在会话之间共享,因此一个客户端生成的结果集可以响应另一个客户端发出的相同查询而发送。 在这样的环境中,查询缓存可能很有用,在这种环境中,表的更改并不频繁,而且服务器接收到许多相同的查询。

要启用查询缓存,可以运行:

代码语言:javascript
复制
SET GLOBAL query_cache_size = 1000000;

然后编辑mysql配置文件(通常为/etc/my.cnf或/etc/mysql/my.cnf):

代码语言:javascript
复制
query_cache_size=1000000
query_cache_type=2
query_cache_limit=100000

然后,对于查询,可以将其更改为:

代码语言:javascript
复制
SELECT SQL_CACHE * FROM your_table;

这将使您能够更新表(因为它不会经常被锁定)。

您需要重新启动服务器。

作为替代,您可以在PHP应用程序中实现缓存。我会使用像memcached这样的东西,但是作为一个非常简单的解决方案,您可以这样做:

代码语言:javascript
复制
$settings = json_decode(file_get_contents("/path/to/settings.json"), true);
$minute = intval(date('i'));
if (isset($settings['minute']) && $settings['minute'] !== $minute) {
    $settings = get_settings_from_mysql();
    $settings['minute'] = intval(date('i'));
    file_put_contents("/path/to/settings.json", json_encode($settings), LOCK_EX);
}
票数 1
EN

Stack Overflow用户

发布于 2017-01-10 15:57:27

查询是否在具有事务隔离级别的事务上下文中运行,以便进行可重复读取?听起来,由于表上的锁,更新无法完成,在这种情况下,缓存不太可能帮助您,因为在写缓存时,缓存将被清除。有关可重复读取的更多信息可以在https://www.percona.com/blog/2012/08/28/differences-between-read-committed-and-repeatable-read-transaction-isolation-levels/上找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41561788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档