免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6072 | 回复: 7
打印 上一主题 下一主题

mysql checksum [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-16 23:30 |只看该作者 |倒序浏览
checksum table table_name  会不会锁表?他的工作机制是什么?谁能回答下?谢谢了。

论坛徽章:
0
2 [报告]
发表于 2013-10-17 17:01 |只看该作者
应该锁表,因为它要对每一行数据生成一个checksum,而且操作对象是myisam表。

论坛徽章:
1
未羊
日期:2013-10-18 11:47:51
3 [报告]
发表于 2013-10-18 00:16 |只看该作者
会有读锁,具体原理可以查看文档 checksum table文档

论坛徽章:
0
4 [报告]
发表于 2013-10-18 23:57 |只看该作者
回复 3# 幕南风


    谢谢了,兄弟。

论坛徽章:
0
5 [报告]
发表于 2013-10-18 23:58 |只看该作者
回复 2# a.a


    说的不够严谨,不仅仅支持myisam表,其实也是支持innodb表的。

论坛徽章:
1
未羊
日期:2013-10-18 11:47:51
6 [报告]
发表于 2013-10-19 10:33 |只看该作者
jason_teach 发表于 2013-10-18 23:57
回复 3# 幕南风


希望兄弟看完后能做个总结,写个反馈,让后来的人有所收益,不胜感激哈!

论坛徽章:
0
7 [报告]
发表于 2013-10-20 13:21 |只看该作者
回复 6# 幕南风


    因我这次测试checksum的表全都是innodb表,而我线上的应用使用数据库的表的引擎都是innodb,使用mk-table-checksum验证主从数据库一致性,如下:
DATABASE TABLE                            CHUNK HOST           ENGINE      COUNT         CHECKSUM TIME WAIT STAT  LAG
db             activity                             0 192.168.128.2    InnoDB          1         b77b0ff7    0    0 NULL NULL
db             activity                             0 localhost             InnoDB          1         b77b0ff7    0    0 NULL NULL
db          agent_info                           0 192.168.128.2    InnoDB          1         6bdf5817    0    0 NULL NULL
db          agent_info                           0 localhost             InnoDB          1         6bdf5817    0    0 NULL NULL

而当我在mysql终端也可以产生checksum值,如下:
mysql> checksum table activity;
+-------------------+------------+
| Table             | Checksum   |
+-------------------+------------+
| db.activity      | 3774104524 |
+-------------------+------------+
1 row in set (0.00 sec)


表状态如下:
mysql> show table status like 'activity';
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------+----------+----------------+---------+
| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------+----------+----------------+---------+
| activity | InnoDB |      10 | Compact    |    1 |          16384 |       16384 |               0 |            0 |         0 |              2 | 2013-08-07 03:14:39 | NULL        | NULL       | utf8_bin  |     NULL |                |         |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------+----------+----------------+---------+
1 row in set (0.01 sec)

验证结果说明checksum table也可以针对innodb。不知道官方为什么什么只针对myisam。

论坛徽章:
1
未羊
日期:2013-10-18 11:47:51
8 [报告]
发表于 2013-10-20 15:46 |只看该作者
jason_teach 发表于 2013-10-20 13:21
回复 6# 幕南风


哈,您没有仔细阅读文档
语法:
CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]

With QUICK, the live table checksum is reported if it is available, or NULL otherwise. This is very fast. A live checksum is enabled by specifying the CHECKSUM=1 table option when you create the table; currently, this is supported only for MyISAM tables

即:选项quick当前仅支持MyISAM
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP