mysql - 在有或没有索引的情况下复制数据库?

标签 mysql sql-server database indexing

这真的应该是一个社区 wiki 页面,但我不得不问这个问题,看看我可能遗漏了什么。我是网站的主持人,他们正在经历一个新的网站转换。

他们昨天午饭前后开始了数据迁移。它仍在继续,他们说还需要 30 个小时。这是一个相当大的站点(从 SQL Server 到 MySQL 的 7 亿条记录),但我不明白为什么要花这么长时间。

我刚刚发现他们正在即时编制索引。这有好处吗?复制然后索引不是更快而且可能更安全吗?如果有人有链接,我很可能会选择它作为答案。谢谢。

最佳答案

我知道的典型过程是复制所有禁用约束且没有索引的表,然后从头开始重新创建索引,然后启用约束。从头开始重建索引比在迁移期间在线创建索引便宜得多

用谷歌搜索一分钟,从马口中为你找到了这个 :) :

http://www.mysql.com/why-mysql/white-papers/mysql_microsoftsql2mysql_paper.pdf

参见例如第 5 页:

Also you'll want to take the permissions and index statements from the end of each of these files [the generated MySQL DDL], and put them in new files. If these statements are left when migrating, migrating the data will be significantly slower.

我没有找到基准,但您可以自己制定一个非常有代表性的基准:只需迁移,比如说您自己的 100 万条记录,同时使用这两种策略。结果不言而喻。

这是一个related question .

关于mysql - 在有或没有索引的情况下复制数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868594/

相关文章:

mysql - 如何将 phpmyadmin 安装到虚拟服务器?

php - 使用 php 更新 phpMyAdmin(XAMPP) 数据库时遇到问题

sql - 如何处理 SET ANSI_NULLS ON 或 OFF?

java - 如何归档Sybase数据库中的旧数据?

mysql - 执行 SELECT INTO OUTFILE 时删除 "\N"

mysql - 如何使用cakephp检索最后一组数据

sql-server - 在sql server中将 “&lt;”和 “&gt;”替换为 “<”和 “>”

sql-server - SQL Server 中的超大表

mysql - 社交网络(数据库)的多对多关系

sql - Postgres : average user response time from interaction with a bot