【问题标题】:Copy MYSQL with innoDB to MyISAM将带有 innoDB 的 MYSQL 复制到 MyISAM
【发布时间】: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


【解决方案1】:

您无法更改数据库的默认存储引擎,但您可以使用 default-storage-engine 配置设置为整个服务器更改它。请注意,这实际上不会更改现有表的存储引擎,只会更改更改后创建的新表。

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 2011-05-14
    • 2011-09-17
    • 2011-08-26
    • 2012-09-18
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    相关资源
    最近更新 更多