如何在 MySQL 上模拟长 运行 alter query
How to simulate long running alter query on MySQL
我有一个系统,我想测试它执行 Alter
查询。我正在寻找一种方法来模拟长 运行 Alter
查询,我可以测试“恐慌”、“资源使用”、“并发性”……当它是 运行 时.
有什么方法可以模拟长运行 Alter
查询吗?
我正在使用 gh-ost
进行更改执行。
下面是我想测试长运行 ALTER TABLE:
时所做的事情
创建 table。
用几百万行随机数据填充它,直到它大到足以让 ALTER TABLE 花费几分钟。需要多少行取决于您计算机的速度。
运行 ALTER TABLE就可以了。
我还没有找到更好的解决方案,我从 2001 年就开始使用 MySQL。
这里有一个无需客户端应用程序或脚本即可填充大量行的技巧:
mysql> create table mytable (id int auto_increment primary key, t text);
Query OK, 0 rows affected (0.05 sec)
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from dual;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 8 rows affected (0.03 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 16 rows affected (0.03 sec)
Records: 16 Duplicates: 0 Warnings: 0
现在我有 32 行 (16+8+4+2+1+1)。我可以根据需要多次继续相同的查询,每次都会使 table 的大小加倍。没多久我就有了table几千兆
尺寸。
我有一个系统,我想测试它执行 Alter
查询。我正在寻找一种方法来模拟长 运行 Alter
查询,我可以测试“恐慌”、“资源使用”、“并发性”……当它是 运行 时.
有什么方法可以模拟长运行 Alter
查询吗?
我正在使用 gh-ost
进行更改执行。
下面是我想测试长运行 ALTER TABLE:
时所做的事情创建 table。
用几百万行随机数据填充它,直到它大到足以让 ALTER TABLE 花费几分钟。需要多少行取决于您计算机的速度。
运行 ALTER TABLE就可以了。
我还没有找到更好的解决方案,我从 2001 年就开始使用 MySQL。
这里有一个无需客户端应用程序或脚本即可填充大量行的技巧:
mysql> create table mytable (id int auto_increment primary key, t text);
Query OK, 0 rows affected (0.05 sec)
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from dual;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 8 rows affected (0.03 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql> insert into mytable (t) select repeat(sha1(rand()), 255) from mytable;
Query OK, 16 rows affected (0.03 sec)
Records: 16 Duplicates: 0 Warnings: 0
现在我有 32 行 (16+8+4+2+1+1)。我可以根据需要多次继续相同的查询,每次都会使 table 的大小加倍。没多久我就有了table几千兆 尺寸。