MySQL-在什么应该是重复表的基数上存在巨大差异
在我的开发服务器上,我有一个基数为200的列索引 这个表大约有600万行,我已经确认它在生产服务器上的行数是相同的 但是,生产服务器索引的基数为31938 它们都是mysql 5.5,但我的开发服务器是Ubuntu服务器13.10,生产服务器是Windows server 2012 关于什么会导致完全相同的数据出现这种差异,有什么想法吗 数据是从dev服务器的MySQL转储加载到生产服务器的 编辑:值得注意的是,我有一些查询在我的开发服务器上运行大约需要15分钟,而由于我认为是这些索引问题,这些查询似乎永远在生产服务器上运行。子查询中的行数不同。可能会帮助您验证表是否相同MySQL-在什么应该是重复表的基数上存在巨大差异,mysql,indexing,Mysql,Indexing,在我的开发服务器上,我有一个基数为200的列索引 这个表大约有600万行,我已经确认它在生产服务器上的行数是相同的 但是,生产服务器索引的基数为31938 它们都是mysql 5.5,但我的开发服务器是Ubuntu服务器13.10,生产服务器是Windows server 2012 关于什么会导致完全相同的数据出现这种差异,有什么想法吗 数据是从dev服务器的MySQL转储加载到生产服务器的 编辑:值得注意的是,我有一些查询在我的开发服务器上运行大约需要15分钟,而由于我认为是这些索引问题,这些
-- a table
create table test.t ( id int unsigned not null auto_increment primary key, r float );
-- some data ( 18000 rows or so )
insert into test.t (r) select rand() from mysql.user join mysql.user u2;
-- a duplicate
create table test.t2 select * from test.t;
-- introduce a difference somewhere in there
update test.t2 set r = 0 order by rand() limit 1;
-- and prove the tables are different easily:
mysql> checksum table test.t;
+--------+------------+
| Table | Checksum |
+--------+------------+
| test.t | 2272709826 |
+--------+------------+
1 row in set (0.00 sec)
mysql> checksum table test.t2
-> ;
+---------+-----------+
| Table | Checksum |
+---------+-----------+
| test.t2 | 312923301 |
+---------+-----------+
1 row in set (0.01 sec)
当心校验和锁表
对于更高级的功能,可以同时使用校验和表和同步表(尽管它基于主/从复制场景,因此可能不适合您)
除校验和之外,您可以考虑查看<代码>修复< /代码>或<代码>优化< /代码>。 在生产表上运行
analyze
,我得到一行,Msg_type=status,Msg_text=OKI得到匹配的校验和。好提示