# 统计功能

统计功能用以记录操作占比,通过参数 enable_sql_statistic 开启。

除了上面的参数之外,使用这个功能还需要开启操作备份功能,因为这些统计数据需要存储到备份数据库中,存储的数据库名为inception中, 这个数据库现在只有一个表statistic,存储的就是SQL执行数目的统计数据。

statistic表的结构如下:

从每一个列的名字就可以看到,其值对应的操作是什么,每一个列就是一个自增列,第二个列optime是操作时间,这个主要是用来统计在某一段时间内的某一个操作占多少比例。

部分列说明:

  • deleting : 包括普通的删除操作及多表删除操作。
  • inserting : 包括单行插入、多行插入及查询插入。
  • updating : 包括普通单表更新及多表的更新。
  • renaming : 指的是ALTER table语句中的rename操作。
  • createindex : 指的是ALTER table语句中的add index操作。
  • dropindex : 指的是ALTER table语句中的drop index操作。
  • alteroption : 指的是ALTER table语句中的修改表属性的操作,比如存储引擎、自增值及字符集中操作。
  • alterconvert : 指的是ALTER table语句中修改表字符集的操作。

对于ALTER TABLE操作,因为这个操作包含很多的子操作,比如rename、drop index、engine innodb等操作,所以对于列altertable,它的值是renaming, createindex, dropindex, addcolumn, dropcolumn, changecolumn, alteroption, alterconvert的和, 而后面的是对ALTER TABLE语句的细分操作统计。

那么如果现在想要统计某一个操作,比如修改表占所有操作的百分比,则使用如下语句即可完成:

SELECT Sum(a.oprate) / Count(1) updaterate
FROM   (SELECT ( updating ) / ( usedb + deleting + inserting + updating +
                                selecting
                                + altertable + createtable + droptable +
                                createdb
                                + truncating ) oprate
        FROM   inception.statistic) a;

# 说明

  • 只是审核操作,或者审核失败未执行时,不会进行操作统计。
  • goInception会记录实际执行的数据,即如果执行一部分后失败时,只记录实际执行的操作。
  • 备份出错导致提前返回时,不会影响统计信息。