pt

LOJ6282 数列分块入门6

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 12:28:38
LOJ6282 数列分块入门 6 标签 分块入门 前言 这题一次过了~ 简明题意 维护序列,支持两种操作: 插入:给第l个元素前插入一个元素 查询:查询第r个元素的值 思路 直接开一个vector[]保存每一块的所有数。对于插入操作,直接找到对应的块,然后对这一块调用vector的insert。对于查询操作,直接把位置偏移过去,然后查询就好了。 注意事项 无 总结 无 AC代码 #include<cstdio> #include<algorithm> #include<cmath> #include<vector> using namespace std; const int maxn = 1e5 + 10; int n, a[maxn]; int pos[maxn], len; vector<int> b[maxn]; void change(int l, int r, int c) { int pt = 1, sum = b[1].size(); while (sum < l) pt++, sum += b[pt].size(); b[pt].insert(b[pt].begin() + l - (sum - b[pt].size()) - 1, r); } int cal(int l, int r, int c) { int pt = 1, sum = b[1].size()

pt-table-checksum和pt-table-sync使用

独自空忆成欢 提交于 2019-11-27 10:17:41
pt-table-checksum和pt-table-sync使用 数据库版本: 5.6.25 pt工具版本:2.2.14 主从关系一:不同机器同一端口 10.10.228.163:4306 ( rescs5) 10.9.33.154 : 4306 rescs6) 主从关系二:同一机器不同端口 10.10.228.163:3306 ( rescs5) 10.10.228.163 : 3307 rescs5) pt-table-checksum 原理 1)、单行数据checksum值的计算 Pt工具先检查表的结构,并且获取表中每一列的数据类型,把所有数据类型都转化为字符串,然后使用concat_ws()函数进行连接,然后使用crc32计算出该行的checksum值。 2)、数据块checksum值的计算 如果一行一行去计算 checksum值,再去和从库比较,效率会很低。pt-table-checksum可以利用表中的索引,将表的数据split成一个个chunk,计算的时候也是以chunk为单位。pt-table-checksum引入了聚合函数BIT_XOR()。它的功能可以理解为将这个chunk内的所有行数据拼接起来,再计算CRC32的值,就得到了这个chunk的checksum值。 3)、pt-table-checksum通过在主服务器上执行检查语句

pt-online-schema-change 最佳实践(转)

我怕爱的太早我们不能终老 提交于 2019-11-27 09:37:41
pt的详细步骤 Step 1: Create the new table. Step 2: Alter the new, empty table. This should be very quick, or die if the user specified a bad alter statement. Step 3: Create the triggers to capture changes on the original table and apply them to the new table. Step 4: Copy rows. Step 5: Rename tables: orig -> old, new -> orig Step 6: Update foreign key constraints if there are child tables. Step 7: Drop the old table. DROP TABLE IF EXISTS `_xx_old` DROP TRIGGER IF EXISTS `pt_osc_xx_xx_del`; DROP TRIGGER IF EXISTS `pt_osc_xx_xx_upd`; DROP TRIGGER IF EXISTS `pt_osc_xx_xx_ins`; done 一、常用参数解读 1.0