【发布时间】:2014-10-14 17:11:18
【问题描述】:
我对带有 innoDB 引擎的 mysql 表有一点问题(来自库存系统)。该表有几百万条记录,我想编写一个使用该表的小报告工具。由于引擎是 innoDB,因此选择查询非常慢。 所以我将表复制到一个新的数据库并手动将引擎更改为 myisam。现在查询只需要大约 50 毫秒,而不是像以前那样需要 7 秒。
现在,我想做的是编写一个小 cronjob,它每天晚上将表从库存系统 db 复制到一个新数据库,并将引擎从 innodb 更改为 myisam。 这可能吗?如果可以,怎么做?
【问题讨论】:
-
您可能想要创建一个数据仓库系统,该系统具有主服务器的副本并进行了不同的调整。如果您使用 MySQL 默认值,InnoDB 会很慢,但如果您为其分配更多内存,它的性能会明显更好。您使用的是什么版本的 MySQL?您应用了哪些服务器设置?您真的不想将重要的表翻转到 MyISAM,尤其是不是库存系统。
-
问题是我无法更改库存系统数据库或运行它的服务器的任何内容。当前的mysql版本是5.6.12。 innodb_buffer_pool_size 设置为 1073741824
-
只是为了便于理解,我没有更改库存系统表的引擎,但我将表转储到另一台服务器上的新数据库中,并将该引擎更改为 myisam 并且可以正常工作正好适合我想做的事情。但由于我对数据库知之甚少,所以这是一个相当困难的解决方案。
-
你的缓冲区只有107MB?
-
好的,我只是设置了一个本地数据库并为其分配了大约 6gb,并从原始系统复制了一些表。现在它运行得更好了。所以我看看能不能再配置一些东西
标签: mysql database cron innodb myisam