MSrepl_commands表type列值30代表何种操作?事务复制数据统计
关于MSrepl_commands表操作类型及复制数据量统计的解答
一、type列操作类型含义
MSrepl_commands表的type字段用于标识事务复制中的操作类型,除了你查到的几种:
1: 插入操作2: 删除操作4: 更新操作
type值为30时,对应的是批量插入(Bulk Insert)操作,通常是在使用批量加载方式同步大量数据时生成的命令记录。
二、每日复制数据量统计方法
要每日统计事务复制中每个文章的复制数据量,可以通过查询MSrepl_commands表,结合MSrepl_articles表关联文章名称,按日期和文章分组统计操作次数或数据量。以下是参考SQL语句:
统计各类操作次数
SELECT a.article_name, CONVERT(date, c.time) AS stat_date, SUM(CASE WHEN c.type = 1 THEN 1 ELSE 0 END) AS insert_count, SUM(CASE WHEN c.type = 2 THEN 1 ELSE 0 END) AS delete_count, SUM(CASE WHEN c.type = 4 THEN 1 ELSE 0 END) AS update_count, SUM(CASE WHEN c.type = 30 THEN 1 ELSE 0 END) AS bulk_insert_count, COUNT(*) AS total_commands FROM MSrepl_commands c JOIN MSrepl_articles a ON c.article_id = a.article_id WHERE c.time >= DATEADD(day, -1, GETDATE()) -- 统计最近1天的数据 GROUP BY a.article_name, CONVERT(date, c.time) ORDER BY stat_date, a.article_name;
统计命令字节总量
SELECT a.article_name, CONVERT(date, c.time) AS stat_date, SUM(DATALENGTH(c.command)) AS total_data_bytes FROM MSrepl_commands c JOIN MSrepl_articles a ON c.article_id = a.article_id WHERE c.time >= DATEADD(day, -1, GETDATE()) GROUP BY a.article_name, CONVERT(date, c.time) ORDER BY stat_date, a.article_name;
内容的提问来源于stack exchange,提问作者BK Shailender
相关产品推荐
相关产品推荐

