Update alter_active_table.t and fix NibbleIterator to handle a growing table.

This commit is contained in:
Daniel Nichter
2012-03-29 15:23:38 -06:00
parent 2dfb3318c2
commit fcc3a44e23
10 changed files with 650 additions and 583 deletions

View File

@@ -4451,9 +4451,6 @@ sub _get_bounds {
$self->{no_more_boundaries} = 1;
}
$self->{last_upper} = $dbh->selectrow_arrayref($self->{last_ub_sql});
PTDEBUG && _d('Last upper boundary:', Dumper($self->{last_upper}));
return;
}
@@ -4509,19 +4506,21 @@ sub _next_boundaries {
my $boundary = $self->{ub_sth}->fetchall_arrayref();
PTDEBUG && _d('Next boundary:', Dumper($boundary));
if ( $boundary && @$boundary ) {
$self->{upper} = $boundary->[0]; # this nibble
$self->{upper} = $boundary->[0];
if ( $boundary->[1] ) {
$self->{next_lower} = $boundary->[1]; # next nibble
$self->{next_lower} = $boundary->[1];
}
else {
PTDEBUG && _d('End of table boundary:', Dumper($boundary->[0]));
$self->{no_more_boundaries} = 1; # for next call
PTDEBUG && _d('Last upper boundary:', Dumper($boundary->[0]));
}
}
else {
$self->{no_more_boundaries} = 1; # for next call
$self->{upper} = $self->{last_upper};
my $dbh = $self->{Cxn}->dbh();
$self->{upper} = $dbh->selectrow_arrayref($self->{last_ub_sql});
PTDEBUG && _d('Last upper boundary:', Dumper($self->{upper}));
$self->{no_more_boundaries} = 1; # for next call
}
$self->{ub_sth}->finish();
@@ -5592,7 +5591,12 @@ sub main {
. ($nibble_iter->nibble_index() || '?')
. " index, but MySQL EXPLAIN reports that "
. ($expl->{key} ? "the $expl->{key}" : "no")
. " index will be used.\n";
. " index will be used for "
. $sth->{upper_boundary}->{Statement}
. " with values "
. join(", ", map { defined $_ ? $_ : "NULL" }
(@{$boundary->{lower}}, $nibble_iter->chunk_size()))
. "\n";
die $msg;
}
@@ -5635,7 +5639,12 @@ sub main {
. ($nibble_iter->nibble_index() || '?')
. " index, but MySQL EXPLAIN reports that "
. ($expl->{key} ? "the $expl->{key}" : "no")
. " index will be used.\n";
. " index will be used for "
. $sth->{explain_nibble}->{Statement}
. " with values "
. join(", ", map { defined $_ ? $_ : "NULL" }
(@{$boundary->{lower}}, @{$boundary->{upper}}))
. "\n";
die $msg;
}

View File

@@ -639,11 +639,6 @@ sub _get_bounds {
$self->{no_more_boundaries} = 1;
}
# Get the real last upper boundary, i.e. the last row of the table
# at this moment. If rows are inserted after, we won't see them.
$self->{last_upper} = $dbh->selectrow_arrayref($self->{last_ub_sql});
PTDEBUG && _d('Last upper boundary:', Dumper($self->{last_upper}));
return;
}
@@ -699,25 +694,70 @@ sub _next_boundaries {
}
}
# Two boundaries are being fetched: the upper boundary for this nibble,
# i.e. the nibble the caller is trying to exec, and the next_lower boundary
# for the next nibble that the caller will try to exec. For example,
# if chunking the alphabet, a-z, with chunk size 3, the first call will
# fetch:
#
# a <- lower
# b
# c <- upper ($boundary->[0])
# d <- next_lower ($boundary->[1])
#
# Then the second call will fetch:
#
# d <- lower
# e
# f <- upper
# g <- next_lower
#
# Why fetch both upper and next_lower? We wanted to keep nibbling simple,
# i.e. one nibble statment, not one for the first nibble, one for "middle"
# nibbles, and another for the end (this is how older code worked). So the
# nibble statement is inclusive, but this requires both boundaries for
# reasons explained in a comment above my $ub_sql in new().
PTDEBUG && _d($self->{ub_sth}->{Statement}, 'params:',
join(', ', @{$self->{lower}}), $self->{limit});
$self->{ub_sth}->execute(@{$self->{lower}}, $self->{limit});
my $boundary = $self->{ub_sth}->fetchall_arrayref();
PTDEBUG && _d('Next boundary:', Dumper($boundary));
if ( $boundary && @$boundary ) {
$self->{upper} = $boundary->[0]; # this nibble
# upper boundary for the current nibble.
$self->{upper} = $boundary->[0];
if ( $boundary->[1] ) {
$self->{next_lower} = $boundary->[1]; # next nibble
# next_lower boundary for the next nibble (will become the lower
# boundary when that nibble becomes the current nibble).
$self->{next_lower} = $boundary->[1];
}
else {
# There's no next_lower boundary, so the upper boundary of
# the current nibble is the end of the table. For example,
# if chunking a-z, then the upper boundary of the current
# nibble ($boundary->[0]) is z.
PTDEBUG && _d('End of table boundary:', Dumper($boundary->[0]));
$self->{no_more_boundaries} = 1; # for next call
PTDEBUG && _d('Last upper boundary:', Dumper($boundary->[0]));
# OobNibbleIterator needs to know the last upper boundary.
$self->{last_upper} = $boundary->[0];
}
}
else {
$self->{no_more_boundaries} = 1; # for next call
$self->{upper} = $self->{last_upper};
# This code is reached in cases like chunking a-z and the next_lower
# boundary ($boundary->[1]) falls on z. When called again, no upper
# or next_lower is found past z so if($boundary && @$boundary) is false.
# But there's a problem: between the previous call that made next_lower=z
# and this call, rows might have been inserted, so maybe z is no longer
# the end of the table. To handle this, we fetch the end of the table
# once and make the final nibble z-<whatever>.
my $dbh = $self->{Cxn}->dbh();
$self->{upper} = $dbh->selectrow_arrayref($self->{last_ub_sql});
PTDEBUG && _d('Last upper boundary:', Dumper($self->{upper}));
$self->{no_more_boundaries} = 1; # for next call
# OobNibbleIterator needs to know the last upper boundary.
$self->{last_upper} = $self->{upper};
}
$self->{ub_sth}->finish();

View File

@@ -58,7 +58,7 @@ sub new {
my $q = $self->{Quoter};
my $o = $self->{OptionParser};
my $where = $o->get('where');
my $where = $o->has('where') ? $o->get('where') : undef;
# If it's not a single nibble table, init our special statements.
if ( !$self->one_nibble() ) {

View File

@@ -191,7 +191,6 @@ $ni = make_nibble_iter(
argv => [qw(--databases test --chunk-size 8)],
);
$dbh->do("delete from test.t where c='a' or c='z'");
@rows = ();
@@ -204,8 +203,6 @@ is_deeply(
'a-z nibble 1 with oob'
) or print Dumper(\@rows);
$dbh->do("insert into test.t values ('a'), ('z')");
@rows = ();
for (1..8) {
push @rows, $ni->next();
@@ -226,6 +223,13 @@ is_deeply(
'a-z nibble 3 with oob'
) or print Dumper(\@rows);
# NibbleIterator is done (b-y), now insert a row on the low end (a),
# and one on the high end (z), past what NibbleIterator originally
# saw as the first and last boundaries. OobNibbleIterator should kick
# in and see a and z.
$dbh->do("insert into test.t values ('a'), ('z')");
# OobNibbleIterator checks the low end first.
@rows = ();
push @rows, $ni->next();
is_deeply(
@@ -234,6 +238,7 @@ is_deeply(
'a-z nibble 4 lower oob'
) or print Dumper(\@rows);
# Then it checks the high end.
@rows = ();
push @rows, $ni->next();
is_deeply(

View File

@@ -13,34 +13,37 @@ use Test::More;
use PerconaTest;
use Sandbox;
require "$trunk/bin/pt-online-schema-change";
use Time::HiRes qw(usleep);
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Quotekeys = 0;
require "$trunk/bin/pt-online-schema-change";
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $dbh = $sb->get_dbh_for('master');
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $master_dbh = $sb->get_dbh_for('master');
my $slave_dbh = $sb->get_dbh_for('slave1');
if ( !$dbh ) {
if ( !$master_dbh ) {
plan skip_all => 'Cannot connect to sandbox master';
}
elsif ( !$slave_dbh ) {
plan skip_all => 'Cannot connect to sandbox slave';
}
else {
plan tests => 7;
}
my $output = "";
my $cnf = '/tmp/12345/my.sandbox.cnf';
my @args = ('-F', $cnf, '--execute');
my $exit = 0;
my $output;
my $master_dsn = "h=127.1,P=12345,u=msandbox,p=msandbox";
my $sample = "t/pt-online-schema-change/samples";
my $exit;
my $rows;
my $query_table_stop = '/tmp/query_table.stop';
my $query_table_output = '/tmp/query_table.output';
diag(`rm -rf $query_table_stop`);
diag(`rm -rf $query_table_output`);
my $query_table_stop = "/tmp/query_table.$PID.stop";
my $query_table_output = "/tmp/query_table.$PID.output";
sub start_query_table {
my ($db, $tbl, $pkcol) = @_;
@@ -48,8 +51,8 @@ sub start_query_table {
diag(`rm -rf $query_table_stop`);
diag(`echo > $query_table_output`);
my $cmd = "$trunk/t/pt-online-schema-change/samples/query_table.pl";
system("$cmd 127.1 12345 $db $tbl $pkcol >$query_table_output &");
my $cmd = "$trunk/$sample/query_table.pl";
system("$cmd 127.1 12345 $db $tbl $pkcol $query_table_stop >$query_table_output &");
return;
}
@@ -89,7 +92,7 @@ sub check_ids {
$n_deleted++ if $n_deleted;
$n_inserted++;
$rows = $dbh->selectrow_arrayref(
$rows = $master_dbh->selectrow_arrayref(
"SELECT COUNT($pkcol) FROM $db.$tbl");
is(
$rows->[0],
@@ -97,7 +100,7 @@ sub check_ids {
"New table row count: 500 original + $n_inserted inserted - $n_deleted deleted"
) or print Dumper($rows);
$rows = $dbh->selectall_arrayref(
$rows = $master_dbh->selectall_arrayref(
"SELECT $pkcol FROM $db.$tbl WHERE $pkcol > 500 AND $pkcol NOT IN ($ids->{inserted})");
is_deeply(
$rows,
@@ -106,7 +109,7 @@ sub check_ids {
) or print Dumper($rows);
if ( $n_deleted ) {
$rows = $dbh->selectall_arrayref(
$rows = $master_dbh->selectall_arrayref(
"SELECT $pkcol FROM $db.$tbl WHERE $pkcol IN ($ids->{deleted})");
is_deeply(
$rows,
@@ -122,9 +125,9 @@ sub check_ids {
};
if ( $n_updated ) {
$rows = $dbh->selectall_arrayref(
"SELECT $pkcol FROM $db.$tbl WHERE $pkcol IN ($ids->{updated}) "
. "AND c <> 'updated'");
my $sql = "SELECT $pkcol FROM $db.$tbl WHERE $pkcol IN ($ids->{updated}) "
. "AND c NOT LIKE 'updated%'";
$rows = $master_dbh->selectall_arrayref($sql);
is_deeply(
$rows,
[],
@@ -144,27 +147,39 @@ sub check_ids {
# #############################################################################
# Attempt to alter a table while another process is changing it.
# #############################################################################
$sb->load_file('master', "t/pt-online-schema-change/samples/small_table.sql");
$dbh->do('use mkosc');
$dbh->do('truncate table a');
diag(`cp $trunk/t/pt-online-schema-change/samples/a.outfile /tmp/`);
$dbh->do("load data local infile '/tmp/a.outfile' into table mkosc.a");
diag(`rm -rf /tmp/a.outfile`);
start_query_table(qw(mkosc a i));
# Load 500 rows.
$sb->load_file('master', "$sample/basic_no_fks.sql");
PerconaTest::wait_for_table($slave_dbh, "pt_osc.t");
$master_dbh->do("USE pt_osc");
$master_dbh->do("TRUNCATE TABLE t");
diag(`cp $trunk/t/pt-online-schema-change/samples/basic_no_fks.data /tmp`);
$master_dbh->do("LOAD DATA LOCAL INFILE '/tmp/basic_no_fks.data' INTO TABLE pt_osc.t");
diag(`rm -rf /tmp/basic_no_fks.data`);
PerconaTest::wait_for_table($slave_dbh, "pt_osc.t", "id=500");
$master_dbh->do("ANALYZE TABLE pt_osc.t");
# Start inserting, updating, and deleting rows at random.
start_query_table(qw(pt_osc t id));
# While that's ^ happening, alter the table.
$output = output(
sub { $exit = pt_online_schema_change::main(@args,
qw(--chunk-size 100),
'D=mkosc,t=a', qw(--alter ENGINE=InnoDB --drop-old-table)) },
sub { $exit = pt_online_schema_change::main(
"$master_dsn,D=pt_osc,t=t",
qw(--lock-wait-timeout 5),
qw(--print --execute --chunk-size 100 --alter ENGINE=InnoDB)) },
stderr => 1,
);
# Stop altering the table.
stop_query_table();
$rows = $dbh->selectall_hashref('show table status from mkosc', 'name');
$rows = $master_dbh->selectall_hashref('SHOW TABLE STATUS FROM pt_osc', 'name');
is(
$rows->{a}->{engine},
$rows->{t}->{engine},
'InnoDB',
"New table ENGINE=InnoDB"
);
) or warn Dumper($rows);
is(
scalar keys %$rows,
@@ -178,17 +193,12 @@ is(
"Exit status 0"
);
check_ids('mkosc', 'a', 'i', get_ids());
# ############################################################################
# Alter an active table with foreign keys.
# ############################################################################
check_ids(qw(pt_osc t id), get_ids());
# #############################################################################
# Done.
# #############################################################################
diag(`rm -rf $query_table_stop`);
diag(`rm -rf $query_table_output`);
$sb->wipe_clean($dbh);
#diag(`rm -rf $query_table_output`);
#$sb->wipe_clean($master_dbh);
exit;

View File

@@ -19,14 +19,21 @@ my $cmd = "$trunk/bin/pt-online-schema-change";
$output = `$cmd`;
like(
$output,
qr/A DSN with a t part must be specified/,
qr/DSN must be specified/,
"Must specify a DSN with t part"
);
$output = `$cmd h=127.1,P=12345,u=msandbox,p=msandbox`;
$output = `$cmd h=127.1,P=12345,t=tbl`;
like(
$output,
qr/The DSN must specify a t/,
qr/DSN must specify a database \(D\) and a table \(t\)/,
"DSN must specify a D part"
);
$output = `$cmd h=127.1,P=12345,u=msandbox,p=msandbox,D=mysql`;
like(
$output,
qr/DSN must specify a database \(D\) and a table \(t\)/,
"DSN must specify t part"
);
@@ -37,13 +44,6 @@ like(
"Only 1 DSN allowed"
);
$output = `$cmd h=127.1,P=12345,t=tbl`;
like(
$output,
qr/No database was specified/,
"Either DSN D part or --database required"
);
$output = `$cmd --help`;
like(
$output,

View File

@@ -1,500 +0,0 @@
1 loaded 2011-03-17
2 loaded 2011-03-17
3 loaded 2011-03-17
4 loaded 2011-03-17
5 loaded 2011-03-17
6 loaded 2011-03-17
7 loaded 2011-03-17
8 loaded 2011-03-17
9 loaded 2011-03-17
10 loaded 2011-03-17
11 loaded 2011-03-17
12 loaded 2011-03-17
13 loaded 2011-03-17
14 loaded 2011-03-17
15 loaded 2011-03-17
16 loaded 2011-03-17
17 loaded 2011-03-17
18 loaded 2011-03-17
19 loaded 2011-03-17
20 loaded 2011-03-17
21 loaded 2011-03-17
22 loaded 2011-03-17
23 loaded 2011-03-17
24 loaded 2011-03-17
25 loaded 2011-03-17
26 loaded 2011-03-17
27 loaded 2011-03-17
28 loaded 2011-03-17
29 loaded 2011-03-17
30 loaded 2011-03-17
31 loaded 2011-03-17
32 loaded 2011-03-17
33 loaded 2011-03-17
34 loaded 2011-03-17
35 loaded 2011-03-17
36 loaded 2011-03-17
37 loaded 2011-03-17
38 loaded 2011-03-17
39 loaded 2011-03-17
40 loaded 2011-03-17
41 loaded 2011-03-17
42 loaded 2011-03-17
43 loaded 2011-03-17
44 loaded 2011-03-17
45 loaded 2011-03-17
46 loaded 2011-03-17
47 loaded 2011-03-17
48 loaded 2011-03-17
49 loaded 2011-03-17
50 loaded 2011-03-17
51 loaded 2011-03-17
52 loaded 2011-03-17
53 loaded 2011-03-17
54 loaded 2011-03-17
55 loaded 2011-03-17
56 loaded 2011-03-17
57 loaded 2011-03-17
58 loaded 2011-03-17
59 loaded 2011-03-17
60 loaded 2011-03-17
61 loaded 2011-03-17
62 loaded 2011-03-17
63 loaded 2011-03-17
64 loaded 2011-03-17
65 loaded 2011-03-17
66 loaded 2011-03-17
67 loaded 2011-03-17
68 loaded 2011-03-17
69 loaded 2011-03-17
70 loaded 2011-03-17
71 loaded 2011-03-17
72 loaded 2011-03-17
73 loaded 2011-03-17
74 loaded 2011-03-17
75 loaded 2011-03-17
76 loaded 2011-03-17
77 loaded 2011-03-17
78 loaded 2011-03-17
79 loaded 2011-03-17
80 loaded 2011-03-17
81 loaded 2011-03-17
82 loaded 2011-03-17
83 loaded 2011-03-17
84 loaded 2011-03-17
85 loaded 2011-03-17
86 loaded 2011-03-17
87 loaded 2011-03-17
88 loaded 2011-03-17
89 loaded 2011-03-17
90 loaded 2011-03-17
91 loaded 2011-03-17
92 loaded 2011-03-17
93 loaded 2011-03-17
94 loaded 2011-03-17
95 loaded 2011-03-17
96 loaded 2011-03-17
97 loaded 2011-03-17
98 loaded 2011-03-17
99 loaded 2011-03-17
100 loaded 2011-03-17
101 loaded 2011-03-17
102 loaded 2011-03-17
103 loaded 2011-03-17
104 loaded 2011-03-17
105 loaded 2011-03-17
106 loaded 2011-03-17
107 loaded 2011-03-17
108 loaded 2011-03-17
109 loaded 2011-03-17
110 loaded 2011-03-17
111 loaded 2011-03-17
112 loaded 2011-03-17
113 loaded 2011-03-17
114 loaded 2011-03-17
115 loaded 2011-03-17
116 loaded 2011-03-17
117 loaded 2011-03-17
118 loaded 2011-03-17
119 loaded 2011-03-17
120 loaded 2011-03-17
121 loaded 2011-03-17
122 loaded 2011-03-17
123 loaded 2011-03-17
124 loaded 2011-03-17
125 loaded 2011-03-17
126 loaded 2011-03-17
127 loaded 2011-03-17
128 loaded 2011-03-17
129 loaded 2011-03-17
130 loaded 2011-03-17
131 loaded 2011-03-17
132 loaded 2011-03-17
133 loaded 2011-03-17
134 loaded 2011-03-17
135 loaded 2011-03-17
136 loaded 2011-03-17
137 loaded 2011-03-17
138 loaded 2011-03-17
139 loaded 2011-03-17
140 loaded 2011-03-17
141 loaded 2011-03-17
142 loaded 2011-03-17
143 loaded 2011-03-17
144 loaded 2011-03-17
145 loaded 2011-03-17
146 loaded 2011-03-17
147 loaded 2011-03-17
148 loaded 2011-03-17
149 loaded 2011-03-17
150 loaded 2011-03-17
151 loaded 2011-03-17
152 loaded 2011-03-17
153 loaded 2011-03-17
154 loaded 2011-03-17
155 loaded 2011-03-17
156 loaded 2011-03-17
157 loaded 2011-03-17
158 loaded 2011-03-17
159 loaded 2011-03-17
160 loaded 2011-03-17
161 loaded 2011-03-17
162 loaded 2011-03-17
163 loaded 2011-03-17
164 loaded 2011-03-17
165 loaded 2011-03-17
166 loaded 2011-03-17
167 loaded 2011-03-17
168 loaded 2011-03-17
169 loaded 2011-03-17
170 loaded 2011-03-17
171 loaded 2011-03-17
172 loaded 2011-03-17
173 loaded 2011-03-17
174 loaded 2011-03-17
175 loaded 2011-03-17
176 loaded 2011-03-17
177 loaded 2011-03-17
178 loaded 2011-03-17
179 loaded 2011-03-17
180 loaded 2011-03-17
181 loaded 2011-03-17
182 loaded 2011-03-17
183 loaded 2011-03-17
184 loaded 2011-03-17
185 loaded 2011-03-17
186 loaded 2011-03-17
187 loaded 2011-03-17
188 loaded 2011-03-17
189 loaded 2011-03-17
190 loaded 2011-03-17
191 loaded 2011-03-17
192 loaded 2011-03-17
193 loaded 2011-03-17
194 loaded 2011-03-17
195 loaded 2011-03-17
196 loaded 2011-03-17
197 loaded 2011-03-17
198 loaded 2011-03-17
199 loaded 2011-03-17
200 loaded 2011-03-17
201 loaded 2011-03-17
202 loaded 2011-03-17
203 loaded 2011-03-17
204 loaded 2011-03-17
205 loaded 2011-03-17
206 loaded 2011-03-17
207 loaded 2011-03-17
208 loaded 2011-03-17
209 loaded 2011-03-17
210 loaded 2011-03-17
211 loaded 2011-03-17
212 loaded 2011-03-17
213 loaded 2011-03-17
214 loaded 2011-03-17
215 loaded 2011-03-17
216 loaded 2011-03-17
217 loaded 2011-03-17
218 loaded 2011-03-17
219 loaded 2011-03-17
220 loaded 2011-03-17
221 loaded 2011-03-17
222 loaded 2011-03-17
223 loaded 2011-03-17
224 loaded 2011-03-17
225 loaded 2011-03-17
226 loaded 2011-03-17
227 loaded 2011-03-17
228 loaded 2011-03-17
229 loaded 2011-03-17
230 loaded 2011-03-17
231 loaded 2011-03-17
232 loaded 2011-03-17
233 loaded 2011-03-17
234 loaded 2011-03-17
235 loaded 2011-03-17
236 loaded 2011-03-17
237 loaded 2011-03-17
238 loaded 2011-03-17
239 loaded 2011-03-17
240 loaded 2011-03-17
241 loaded 2011-03-17
242 loaded 2011-03-17
243 loaded 2011-03-17
244 loaded 2011-03-17
245 loaded 2011-03-17
246 loaded 2011-03-17
247 loaded 2011-03-17
248 loaded 2011-03-17
249 loaded 2011-03-17
250 loaded 2011-03-17
251 loaded 2011-03-17
252 loaded 2011-03-17
253 loaded 2011-03-17
254 loaded 2011-03-17
255 loaded 2011-03-17
256 loaded 2011-03-17
257 loaded 2011-03-17
258 loaded 2011-03-17
259 loaded 2011-03-17
260 loaded 2011-03-17
261 loaded 2011-03-17
262 loaded 2011-03-17
263 loaded 2011-03-17
264 loaded 2011-03-17
265 loaded 2011-03-17
266 loaded 2011-03-17
267 loaded 2011-03-17
268 loaded 2011-03-17
269 loaded 2011-03-17
270 loaded 2011-03-17
271 loaded 2011-03-17
272 loaded 2011-03-17
273 loaded 2011-03-17
274 loaded 2011-03-17
275 loaded 2011-03-17
276 loaded 2011-03-17
277 loaded 2011-03-17
278 loaded 2011-03-17
279 loaded 2011-03-17
280 loaded 2011-03-17
281 loaded 2011-03-17
282 loaded 2011-03-17
283 loaded 2011-03-17
284 loaded 2011-03-17
285 loaded 2011-03-17
286 loaded 2011-03-17
287 loaded 2011-03-17
288 loaded 2011-03-17
289 loaded 2011-03-17
290 loaded 2011-03-17
291 loaded 2011-03-17
292 loaded 2011-03-17
293 loaded 2011-03-17
294 loaded 2011-03-17
295 loaded 2011-03-17
296 loaded 2011-03-17
297 loaded 2011-03-17
298 loaded 2011-03-17
299 loaded 2011-03-17
300 loaded 2011-03-17
301 loaded 2011-03-17
302 loaded 2011-03-17
303 loaded 2011-03-17
304 loaded 2011-03-17
305 loaded 2011-03-17
306 loaded 2011-03-17
307 loaded 2011-03-17
308 loaded 2011-03-17
309 loaded 2011-03-17
310 loaded 2011-03-17
311 loaded 2011-03-17
312 loaded 2011-03-17
313 loaded 2011-03-17
314 loaded 2011-03-17
315 loaded 2011-03-17
316 loaded 2011-03-17
317 loaded 2011-03-17
318 loaded 2011-03-17
319 loaded 2011-03-17
320 loaded 2011-03-17
321 loaded 2011-03-17
322 loaded 2011-03-17
323 loaded 2011-03-17
324 loaded 2011-03-17
325 loaded 2011-03-17
326 loaded 2011-03-17
327 loaded 2011-03-17
328 loaded 2011-03-17
329 loaded 2011-03-17
330 loaded 2011-03-17
331 loaded 2011-03-17
332 loaded 2011-03-17
333 loaded 2011-03-17
334 loaded 2011-03-17
335 loaded 2011-03-17
336 loaded 2011-03-17
337 loaded 2011-03-17
338 loaded 2011-03-17
339 loaded 2011-03-17
340 loaded 2011-03-17
341 loaded 2011-03-17
342 loaded 2011-03-17
343 loaded 2011-03-17
344 loaded 2011-03-17
345 loaded 2011-03-17
346 loaded 2011-03-17
347 loaded 2011-03-17
348 loaded 2011-03-17
349 loaded 2011-03-17
350 loaded 2011-03-17
351 loaded 2011-03-17
352 loaded 2011-03-17
353 loaded 2011-03-17
354 loaded 2011-03-17
355 loaded 2011-03-17
356 loaded 2011-03-17
357 loaded 2011-03-17
358 loaded 2011-03-17
359 loaded 2011-03-17
360 loaded 2011-03-17
361 loaded 2011-03-17
362 loaded 2011-03-17
363 loaded 2011-03-17
364 loaded 2011-03-17
365 loaded 2011-03-17
366 loaded 2011-03-17
367 loaded 2011-03-17
368 loaded 2011-03-17
369 loaded 2011-03-17
370 loaded 2011-03-17
371 loaded 2011-03-17
372 loaded 2011-03-17
373 loaded 2011-03-17
374 loaded 2011-03-17
375 loaded 2011-03-17
376 loaded 2011-03-17
377 loaded 2011-03-17
378 loaded 2011-03-17
379 loaded 2011-03-17
380 loaded 2011-03-17
381 loaded 2011-03-17
382 loaded 2011-03-17
383 loaded 2011-03-17
384 loaded 2011-03-17
385 loaded 2011-03-17
386 loaded 2011-03-17
387 loaded 2011-03-17
388 loaded 2011-03-17
389 loaded 2011-03-17
390 loaded 2011-03-17
391 loaded 2011-03-17
392 loaded 2011-03-17
393 loaded 2011-03-17
394 loaded 2011-03-17
395 loaded 2011-03-17
396 loaded 2011-03-17
397 loaded 2011-03-17
398 loaded 2011-03-17
399 loaded 2011-03-17
400 loaded 2011-03-17
401 loaded 2011-03-17
402 loaded 2011-03-17
403 loaded 2011-03-17
404 loaded 2011-03-17
405 loaded 2011-03-17
406 loaded 2011-03-17
407 loaded 2011-03-17
408 loaded 2011-03-17
409 loaded 2011-03-17
410 loaded 2011-03-17
411 loaded 2011-03-17
412 loaded 2011-03-17
413 loaded 2011-03-17
414 loaded 2011-03-17
415 loaded 2011-03-17
416 loaded 2011-03-17
417 loaded 2011-03-17
418 loaded 2011-03-17
419 loaded 2011-03-17
420 loaded 2011-03-17
421 loaded 2011-03-17
422 loaded 2011-03-17
423 loaded 2011-03-17
424 loaded 2011-03-17
425 loaded 2011-03-17
426 loaded 2011-03-17
427 loaded 2011-03-17
428 loaded 2011-03-17
429 loaded 2011-03-17
430 loaded 2011-03-17
431 loaded 2011-03-17
432 loaded 2011-03-17
433 loaded 2011-03-17
434 loaded 2011-03-17
435 loaded 2011-03-17
436 loaded 2011-03-17
437 loaded 2011-03-17
438 loaded 2011-03-17
439 loaded 2011-03-17
440 loaded 2011-03-17
441 loaded 2011-03-17
442 loaded 2011-03-17
443 loaded 2011-03-17
444 loaded 2011-03-17
445 loaded 2011-03-17
446 loaded 2011-03-17
447 loaded 2011-03-17
448 loaded 2011-03-17
449 loaded 2011-03-17
450 loaded 2011-03-17
451 loaded 2011-03-17
452 loaded 2011-03-17
453 loaded 2011-03-17
454 loaded 2011-03-17
455 loaded 2011-03-17
456 loaded 2011-03-17
457 loaded 2011-03-17
458 loaded 2011-03-17
459 loaded 2011-03-17
460 loaded 2011-03-17
461 loaded 2011-03-17
462 loaded 2011-03-17
463 loaded 2011-03-17
464 loaded 2011-03-17
465 loaded 2011-03-17
466 loaded 2011-03-17
467 loaded 2011-03-17
468 loaded 2011-03-17
469 loaded 2011-03-17
470 loaded 2011-03-17
471 loaded 2011-03-17
472 loaded 2011-03-17
473 loaded 2011-03-17
474 loaded 2011-03-17
475 loaded 2011-03-17
476 loaded 2011-03-17
477 loaded 2011-03-17
478 loaded 2011-03-17
479 loaded 2011-03-17
480 loaded 2011-03-17
481 loaded 2011-03-17
482 loaded 2011-03-17
483 loaded 2011-03-17
484 loaded 2011-03-17
485 loaded 2011-03-17
486 loaded 2011-03-17
487 loaded 2011-03-17
488 loaded 2011-03-17
489 loaded 2011-03-17
490 loaded 2011-03-17
491 loaded 2011-03-17
492 loaded 2011-03-17
493 loaded 2011-03-17
494 loaded 2011-03-17
495 loaded 2011-03-17
496 loaded 2011-03-17
497 loaded 2011-03-17
498 loaded 2011-03-17
499 loaded 2011-03-17
500 loaded 2011-03-17

View File

@@ -0,0 +1,500 @@
1 original row 1 2012-03-29
2 original row 2 2012-03-29
3 original row 3 2012-03-29
4 original row 4 2012-03-29
5 original row 5 2012-03-29
6 original row 6 2012-03-29
7 original row 7 2012-03-29
8 original row 8 2012-03-29
9 original row 9 2012-03-29
10 original row 10 2012-03-29
11 original row 11 2012-03-29
12 original row 12 2012-03-29
13 original row 13 2012-03-29
14 original row 14 2012-03-29
15 original row 15 2012-03-29
16 original row 16 2012-03-29
17 original row 17 2012-03-29
18 original row 18 2012-03-29
19 original row 19 2012-03-29
20 original row 20 2012-03-29
21 original row 21 2012-03-29
22 original row 22 2012-03-29
23 original row 23 2012-03-29
24 original row 24 2012-03-29
25 original row 25 2012-03-29
26 original row 26 2012-03-29
27 original row 27 2012-03-29
28 original row 28 2012-03-29
29 original row 29 2012-03-29
30 original row 30 2012-03-29
31 original row 31 2012-03-29
32 original row 32 2012-03-29
33 original row 33 2012-03-29
34 original row 34 2012-03-29
35 original row 35 2012-03-29
36 original row 36 2012-03-29
37 original row 37 2012-03-29
38 original row 38 2012-03-29
39 original row 39 2012-03-29
40 original row 40 2012-03-29
41 original row 41 2012-03-29
42 original row 42 2012-03-29
43 original row 43 2012-03-29
44 original row 44 2012-03-29
45 original row 45 2012-03-29
46 original row 46 2012-03-29
47 original row 47 2012-03-29
48 original row 48 2012-03-29
49 original row 49 2012-03-29
50 original row 50 2012-03-29
51 original row 51 2012-03-29
52 original row 52 2012-03-29
53 original row 53 2012-03-29
54 original row 54 2012-03-29
55 original row 55 2012-03-29
56 original row 56 2012-03-29
57 original row 57 2012-03-29
58 original row 58 2012-03-29
59 original row 59 2012-03-29
60 original row 60 2012-03-29
61 original row 61 2012-03-29
62 original row 62 2012-03-29
63 original row 63 2012-03-29
64 original row 64 2012-03-29
65 original row 65 2012-03-29
66 original row 66 2012-03-29
67 original row 67 2012-03-29
68 original row 68 2012-03-29
69 original row 69 2012-03-29
70 original row 70 2012-03-29
71 original row 71 2012-03-29
72 original row 72 2012-03-29
73 original row 73 2012-03-29
74 original row 74 2012-03-29
75 original row 75 2012-03-29
76 original row 76 2012-03-29
77 original row 77 2012-03-29
78 original row 78 2012-03-29
79 original row 79 2012-03-29
80 original row 80 2012-03-29
81 original row 81 2012-03-29
82 original row 82 2012-03-29
83 original row 83 2012-03-29
84 original row 84 2012-03-29
85 original row 85 2012-03-29
86 original row 86 2012-03-29
87 original row 87 2012-03-29
88 original row 88 2012-03-29
89 original row 89 2012-03-29
90 original row 90 2012-03-29
91 original row 91 2012-03-29
92 original row 92 2012-03-29
93 original row 93 2012-03-29
94 original row 94 2012-03-29
95 original row 95 2012-03-29
96 original row 96 2012-03-29
97 original row 97 2012-03-29
98 original row 98 2012-03-29
99 original row 99 2012-03-29
100 original row 100 2012-03-29
101 original row 101 2012-03-29
102 original row 102 2012-03-29
103 original row 103 2012-03-29
104 original row 104 2012-03-29
105 original row 105 2012-03-29
106 original row 106 2012-03-29
107 original row 107 2012-03-29
108 original row 108 2012-03-29
109 original row 109 2012-03-29
110 original row 110 2012-03-29
111 original row 111 2012-03-29
112 original row 112 2012-03-29
113 original row 113 2012-03-29
114 original row 114 2012-03-29
115 original row 115 2012-03-29
116 original row 116 2012-03-29
117 original row 117 2012-03-29
118 original row 118 2012-03-29
119 original row 119 2012-03-29
120 original row 120 2012-03-29
121 original row 121 2012-03-29
122 original row 122 2012-03-29
123 original row 123 2012-03-29
124 original row 124 2012-03-29
125 original row 125 2012-03-29
126 original row 126 2012-03-29
127 original row 127 2012-03-29
128 original row 128 2012-03-29
129 original row 129 2012-03-29
130 original row 130 2012-03-29
131 original row 131 2012-03-29
132 original row 132 2012-03-29
133 original row 133 2012-03-29
134 original row 134 2012-03-29
135 original row 135 2012-03-29
136 original row 136 2012-03-29
137 original row 137 2012-03-29
138 original row 138 2012-03-29
139 original row 139 2012-03-29
140 original row 140 2012-03-29
141 original row 141 2012-03-29
142 original row 142 2012-03-29
143 original row 143 2012-03-29
144 original row 144 2012-03-29
145 original row 145 2012-03-29
146 original row 146 2012-03-29
147 original row 147 2012-03-29
148 original row 148 2012-03-29
149 original row 149 2012-03-29
150 original row 150 2012-03-29
151 original row 151 2012-03-29
152 original row 152 2012-03-29
153 original row 153 2012-03-29
154 original row 154 2012-03-29
155 original row 155 2012-03-29
156 original row 156 2012-03-29
157 original row 157 2012-03-29
158 original row 158 2012-03-29
159 original row 159 2012-03-29
160 original row 160 2012-03-29
161 original row 161 2012-03-29
162 original row 162 2012-03-29
163 original row 163 2012-03-29
164 original row 164 2012-03-29
165 original row 165 2012-03-29
166 original row 166 2012-03-29
167 original row 167 2012-03-29
168 original row 168 2012-03-29
169 original row 169 2012-03-29
170 original row 170 2012-03-29
171 original row 171 2012-03-29
172 original row 172 2012-03-29
173 original row 173 2012-03-29
174 original row 174 2012-03-29
175 original row 175 2012-03-29
176 original row 176 2012-03-29
177 original row 177 2012-03-29
178 original row 178 2012-03-29
179 original row 179 2012-03-29
180 original row 180 2012-03-29
181 original row 181 2012-03-29
182 original row 182 2012-03-29
183 original row 183 2012-03-29
184 original row 184 2012-03-29
185 original row 185 2012-03-29
186 original row 186 2012-03-29
187 original row 187 2012-03-29
188 original row 188 2012-03-29
189 original row 189 2012-03-29
190 original row 190 2012-03-29
191 original row 191 2012-03-29
192 original row 192 2012-03-29
193 original row 193 2012-03-29
194 original row 194 2012-03-29
195 original row 195 2012-03-29
196 original row 196 2012-03-29
197 original row 197 2012-03-29
198 original row 198 2012-03-29
199 original row 199 2012-03-29
200 original row 200 2012-03-29
201 original row 201 2012-03-29
202 original row 202 2012-03-29
203 original row 203 2012-03-29
204 original row 204 2012-03-29
205 original row 205 2012-03-29
206 original row 206 2012-03-29
207 original row 207 2012-03-29
208 original row 208 2012-03-29
209 original row 209 2012-03-29
210 original row 210 2012-03-29
211 original row 211 2012-03-29
212 original row 212 2012-03-29
213 original row 213 2012-03-29
214 original row 214 2012-03-29
215 original row 215 2012-03-29
216 original row 216 2012-03-29
217 original row 217 2012-03-29
218 original row 218 2012-03-29
219 original row 219 2012-03-29
220 original row 220 2012-03-29
221 original row 221 2012-03-29
222 original row 222 2012-03-29
223 original row 223 2012-03-29
224 original row 224 2012-03-29
225 original row 225 2012-03-29
226 original row 226 2012-03-29
227 original row 227 2012-03-29
228 original row 228 2012-03-29
229 original row 229 2012-03-29
230 original row 230 2012-03-29
231 original row 231 2012-03-29
232 original row 232 2012-03-29
233 original row 233 2012-03-29
234 original row 234 2012-03-29
235 original row 235 2012-03-29
236 original row 236 2012-03-29
237 original row 237 2012-03-29
238 original row 238 2012-03-29
239 original row 239 2012-03-29
240 original row 240 2012-03-29
241 original row 241 2012-03-29
242 original row 242 2012-03-29
243 original row 243 2012-03-29
244 original row 244 2012-03-29
245 original row 245 2012-03-29
246 original row 246 2012-03-29
247 original row 247 2012-03-29
248 original row 248 2012-03-29
249 original row 249 2012-03-29
250 original row 250 2012-03-29
251 original row 251 2012-03-29
252 original row 252 2012-03-29
253 original row 253 2012-03-29
254 original row 254 2012-03-29
255 original row 255 2012-03-29
256 original row 256 2012-03-29
257 original row 257 2012-03-29
258 original row 258 2012-03-29
259 original row 259 2012-03-29
260 original row 260 2012-03-29
261 original row 261 2012-03-29
262 original row 262 2012-03-29
263 original row 263 2012-03-29
264 original row 264 2012-03-29
265 original row 265 2012-03-29
266 original row 266 2012-03-29
267 original row 267 2012-03-29
268 original row 268 2012-03-29
269 original row 269 2012-03-29
270 original row 270 2012-03-29
271 original row 271 2012-03-29
272 original row 272 2012-03-29
273 original row 273 2012-03-29
274 original row 274 2012-03-29
275 original row 275 2012-03-29
276 original row 276 2012-03-29
277 original row 277 2012-03-29
278 original row 278 2012-03-29
279 original row 279 2012-03-29
280 original row 280 2012-03-29
281 original row 281 2012-03-29
282 original row 282 2012-03-29
283 original row 283 2012-03-29
284 original row 284 2012-03-29
285 original row 285 2012-03-29
286 original row 286 2012-03-29
287 original row 287 2012-03-29
288 original row 288 2012-03-29
289 original row 289 2012-03-29
290 original row 290 2012-03-29
291 original row 291 2012-03-29
292 original row 292 2012-03-29
293 original row 293 2012-03-29
294 original row 294 2012-03-29
295 original row 295 2012-03-29
296 original row 296 2012-03-29
297 original row 297 2012-03-29
298 original row 298 2012-03-29
299 original row 299 2012-03-29
300 original row 300 2012-03-29
301 original row 301 2012-03-29
302 original row 302 2012-03-29
303 original row 303 2012-03-29
304 original row 304 2012-03-29
305 original row 305 2012-03-29
306 original row 306 2012-03-29
307 original row 307 2012-03-29
308 original row 308 2012-03-29
309 original row 309 2012-03-29
310 original row 310 2012-03-29
311 original row 311 2012-03-29
312 original row 312 2012-03-29
313 original row 313 2012-03-29
314 original row 314 2012-03-29
315 original row 315 2012-03-29
316 original row 316 2012-03-29
317 original row 317 2012-03-29
318 original row 318 2012-03-29
319 original row 319 2012-03-29
320 original row 320 2012-03-29
321 original row 321 2012-03-29
322 original row 322 2012-03-29
323 original row 323 2012-03-29
324 original row 324 2012-03-29
325 original row 325 2012-03-29
326 original row 326 2012-03-29
327 original row 327 2012-03-29
328 original row 328 2012-03-29
329 original row 329 2012-03-29
330 original row 330 2012-03-29
331 original row 331 2012-03-29
332 original row 332 2012-03-29
333 original row 333 2012-03-29
334 original row 334 2012-03-29
335 original row 335 2012-03-29
336 original row 336 2012-03-29
337 original row 337 2012-03-29
338 original row 338 2012-03-29
339 original row 339 2012-03-29
340 original row 340 2012-03-29
341 original row 341 2012-03-29
342 original row 342 2012-03-29
343 original row 343 2012-03-29
344 original row 344 2012-03-29
345 original row 345 2012-03-29
346 original row 346 2012-03-29
347 original row 347 2012-03-29
348 original row 348 2012-03-29
349 original row 349 2012-03-29
350 original row 350 2012-03-29
351 original row 351 2012-03-29
352 original row 352 2012-03-29
353 original row 353 2012-03-29
354 original row 354 2012-03-29
355 original row 355 2012-03-29
356 original row 356 2012-03-29
357 original row 357 2012-03-29
358 original row 358 2012-03-29
359 original row 359 2012-03-29
360 original row 360 2012-03-29
361 original row 361 2012-03-29
362 original row 362 2012-03-29
363 original row 363 2012-03-29
364 original row 364 2012-03-29
365 original row 365 2012-03-29
366 original row 366 2012-03-29
367 original row 367 2012-03-29
368 original row 368 2012-03-29
369 original row 369 2012-03-29
370 original row 370 2012-03-29
371 original row 371 2012-03-29
372 original row 372 2012-03-29
373 original row 373 2012-03-29
374 original row 374 2012-03-29
375 original row 375 2012-03-29
376 original row 376 2012-03-29
377 original row 377 2012-03-29
378 original row 378 2012-03-29
379 original row 379 2012-03-29
380 original row 380 2012-03-29
381 original row 381 2012-03-29
382 original row 382 2012-03-29
383 original row 383 2012-03-29
384 original row 384 2012-03-29
385 original row 385 2012-03-29
386 original row 386 2012-03-29
387 original row 387 2012-03-29
388 original row 388 2012-03-29
389 original row 389 2012-03-29
390 original row 390 2012-03-29
391 original row 391 2012-03-29
392 original row 392 2012-03-29
393 original row 393 2012-03-29
394 original row 394 2012-03-29
395 original row 395 2012-03-29
396 original row 396 2012-03-29
397 original row 397 2012-03-29
398 original row 398 2012-03-29
399 original row 399 2012-03-29
400 original row 400 2012-03-29
401 original row 401 2012-03-29
402 original row 402 2012-03-29
403 original row 403 2012-03-29
404 original row 404 2012-03-29
405 original row 405 2012-03-29
406 original row 406 2012-03-29
407 original row 407 2012-03-29
408 original row 408 2012-03-29
409 original row 409 2012-03-29
410 original row 410 2012-03-29
411 original row 411 2012-03-29
412 original row 412 2012-03-29
413 original row 413 2012-03-29
414 original row 414 2012-03-29
415 original row 415 2012-03-29
416 original row 416 2012-03-29
417 original row 417 2012-03-29
418 original row 418 2012-03-29
419 original row 419 2012-03-29
420 original row 420 2012-03-29
421 original row 421 2012-03-29
422 original row 422 2012-03-29
423 original row 423 2012-03-29
424 original row 424 2012-03-29
425 original row 425 2012-03-29
426 original row 426 2012-03-29
427 original row 427 2012-03-29
428 original row 428 2012-03-29
429 original row 429 2012-03-29
430 original row 430 2012-03-29
431 original row 431 2012-03-29
432 original row 432 2012-03-29
433 original row 433 2012-03-29
434 original row 434 2012-03-29
435 original row 435 2012-03-29
436 original row 436 2012-03-29
437 original row 437 2012-03-29
438 original row 438 2012-03-29
439 original row 439 2012-03-29
440 original row 440 2012-03-29
441 original row 441 2012-03-29
442 original row 442 2012-03-29
443 original row 443 2012-03-29
444 original row 444 2012-03-29
445 original row 445 2012-03-29
446 original row 446 2012-03-29
447 original row 447 2012-03-29
448 original row 448 2012-03-29
449 original row 449 2012-03-29
450 original row 450 2012-03-29
451 original row 451 2012-03-29
452 original row 452 2012-03-29
453 original row 453 2012-03-29
454 original row 454 2012-03-29
455 original row 455 2012-03-29
456 original row 456 2012-03-29
457 original row 457 2012-03-29
458 original row 458 2012-03-29
459 original row 459 2012-03-29
460 original row 460 2012-03-29
461 original row 461 2012-03-29
462 original row 462 2012-03-29
463 original row 463 2012-03-29
464 original row 464 2012-03-29
465 original row 465 2012-03-29
466 original row 466 2012-03-29
467 original row 467 2012-03-29
468 original row 468 2012-03-29
469 original row 469 2012-03-29
470 original row 470 2012-03-29
471 original row 471 2012-03-29
472 original row 472 2012-03-29
473 original row 473 2012-03-29
474 original row 474 2012-03-29
475 original row 475 2012-03-29
476 original row 476 2012-03-29
477 original row 477 2012-03-29
478 original row 478 2012-03-29
479 original row 479 2012-03-29
480 original row 480 2012-03-29
481 original row 481 2012-03-29
482 original row 482 2012-03-29
483 original row 483 2012-03-29
484 original row 484 2012-03-29
485 original row 485 2012-03-29
486 original row 486 2012-03-29
487 original row 487 2012-03-29
488 original row 488 2012-03-29
489 original row 489 2012-03-29
490 original row 490 2012-03-29
491 original row 491 2012-03-29
492 original row 492 2012-03-29
493 original row 493 2012-03-29
494 original row 494 2012-03-29
495 original row 495 2012-03-29
496 original row 496 2012-03-29
497 original row 497 2012-03-29
498 original row 498 2012-03-29
499 original row 499 2012-03-29
500 original row 500 2012-03-29

View File

@@ -3,9 +3,9 @@ CREATE DATABASE pt_osc;
USE pt_osc;
CREATE TABLE t (
id int auto_increment primary key,
c char(16),
c char(32),
d date,
unique index (c(16))
unique index (c(32))
) ENGINE=MyISAM;
INSERT INTO pt_osc.t VALUES
(null, 'a', now()),

View File

@@ -4,9 +4,10 @@ use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use DBI;
use Time::HiRes qw(usleep);
use Time::HiRes qw(usleep time);
my ($host, $port, $db, $tbl, $pkcol, $sleep_time) = @ARGV;
my ($host, $port, $db, $tbl, $pkcol, $stop_file, $sleep_time) = @ARGV;
die "I need a stop_file argument" unless $stop_file;
my $dbh = DBI->connect(
"DBI:mysql:$db;host=$host;port=$port;mysql_read_default_group=client",
'msandbox', 'msandbox',
@@ -23,7 +24,7 @@ my $start_xa = "START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */";
$dbh->do($start_xa);
for my $i ( 1..5_000 ) {
last if -f '/tmp/query_table.stop';
last if -f $stop_file;
eval {
# We do roughly 25% DELETE, 25% UPDATE and 50% INSERT.
@@ -39,13 +40,15 @@ for my $i ( 1..5_000 ) {
elsif ($x == 2) {
my $id = int(rand(500)) || 1;
if ( !grep { $_ == $id } @del ) {
$dbh->do("update $db.$tbl set c='updated' where $pkcol=$id");
my $t=time;
$dbh->do("update $db.$tbl set c='updated row $t' where $pkcol=$id");
push @upd, $id;
}
}
else {
my $id = 500 + $i;
$dbh->do("insert ignore into $db.$tbl ($pkcol, c) values ($id, 'inserted')");
my $t=time;
$dbh->do("insert ignore into $db.$tbl ($pkcol, c) values ($id, 'new row $t')");
push @ins, $id;
}