I have another simple version, which affect UNIQUE KEY with UTF8 column too.
CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `c` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `c` (`c`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
$ cat insert.php <?php
$db = new PDO('mysql:host=db-test-1;dbname=t', 'test', 'test');
$p = $db->prepare('INSERT INTO test (c) VALUES (?);');
for ($i = 0;; $i++) { $p->execute(array('中文測試' . rand(1, 10000))); if (0 == $i % 1000) { printf("%d\n", $i); } }
$ps = $db->prepare('SELECT COUNT(*) FROM `test`;');
$ cat delete.php <?php
for ($i = 0;; $i++) { $ps->execute(); list($c) = $ps->fetch(PDO::FETCH_NUM);
if ($c > 100) { $sql = sprintf('DELETE FROM `test` ORDER BY `c` LIMIT %d;', $c / 2); $db->query($sql); printf("%d: %s\n", $i, $sql); }
sleep(1); }
I have another simple version, which affect UNIQUE KEY with UTF8 column too.
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`c` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
$ cat insert.php
<?php
$db = new PDO('mysql: host=db- test-1; dbname= t', 'test', 'test');
$p = $db->prepare( 'INSERT INTO test (c) VALUES (?);');
for ($i = 0;; $i++) { >execute( array(' 中文測試' . rand(1, 10000)));
printf( "%d\n", $i);
$p-
if (0 == $i % 1000) {
}
}
$ps = $db->prepare( 'SELECT COUNT(*) FROM `test`;');
$ cat delete.php
<?php
$db = new PDO('mysql: host=db- test-1; dbname= t', 'test', 'test');
$ps = $db->prepare( 'SELECT COUNT(*) FROM `test`;');
for ($i = 0;; $i++) { PDO::FETCH_ NUM);
$ps->execute();
list($c) = $ps->fetch(
if ($c > 100) {
$db->query( $sql);
$sql = sprintf('DELETE FROM `test` ORDER BY `c` LIMIT %d;', $c / 2);
printf("%d: %s\n", $i, $sql);
}
sleep(1);
}