Gå til innhold

Anbefalte innlegg

Har gjort en test på MyISAM vs InnoDB på MySQL 5.0.15

 

Test program: (Kjør selv)

 

 

<?php

set_time_limit(600);

$Link = mysqli_connect('localhost', 'root', 'root', 'wep', 3306, 'mysql');

 

$Time = microtime(1);

for($i=0;$i<=100;$i++)

{

mysqli_query($Link, "CREATE TABLE `mytest_$i` (`name` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;");

}

echo 'Create 100 MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

$Time = microtime(1);

for($i=1;$i<=100;$i++)

{

mysqli_query($Link, "DROP TABLE `mytest_$i`");

}

echo 'Delete 99 MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=100;$i++)

{

mysqli_query($Link, "CREATE TABLE `intest_$i` (`name` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;");

}

echo 'Create 100 InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

$Time = microtime(1);

for($i=1;$i<=100;$i++)

{

mysqli_query($Link, "DROP TABLE `intest_$i`");

}

echo 'Delete 99 InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "INSERT INTO `intest_0` VALUES('$i', 'this is a value')");

}

echo 'Insert 1000 times varchar, InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "DELETE FROM `intest_0` WHERE 'name' = '$i'");

}

echo 'Delete 1000 times varchar, InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "INSERT INTO `mytest_0` VALUES('$i', 'this is a value')");

}

echo 'Insert 1000 times varchar, MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "DELETE FROM `mytest_0` WHERE 'name' = '$i'");

}

echo 'Delete 1000 times varchar, MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

 

mysqli_query($Link, "ALTER TABLE `intest_0` CHANGE `name` `name` LONGTEXT, CHANGE `value` `value` LONGTEXT");

 

echo 'Alter table, InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

 

mysqli_query($Link, "ALTER TABLE `mytest_0` CHANGE `name` `name` LONGTEXT, CHANGE `value` `value` LONGTEXT");

 

echo 'Alter table, MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "INSERT INTO `intest_0` VALUES('$i damdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdam', 'this is a value damdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdam')");

}

echo 'Insert 1000 times longtext, InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "DELETE FROM `intest_0` WHERE 'name' = '$i damdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdam'");

}

echo 'Delete 1000 times longtext, InnoDB tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "INSERT INTO `mytest_0` VALUES('$i damdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdam', 'this is a value damdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdam')");

}

echo 'Insert 1000 times longtext, MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

 

$Time = microtime(1);

for($i=0;$i<=1000;$i++)

{

mysqli_query($Link, "DELETE FROM `mytest_0` WHERE 'name' = '$i damdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdamdam'");

}

echo 'Delete 1000 times longtext, MyISAM tables: ' . round(microtime(1) - $Time, 8) . '<br />';

?>

 

 

 

Resultat (Første runde):

Create 100 MyISAM tables: 5.1421

Delete 99 MyISAM tables: 0.23851

Create 100 InnoDB tables: 7.7413

Delete 99 InnoDB tables: 3.4548

Insert 1000 times varchar, InnoDB tables: 28.491

Delete 1000 times varchar, InnoDB tables: 10.464

Insert 1000 times varchar, MyISAM tables: 0.60418

Delete 1000 times varchar, MyISAM tables: 1.6718

Alter table, InnoDB tables: 0.28765

Alter table, MyISAM tables: 0.053533

Insert 1000 times longtext, InnoDB tables: 29.007

Delete 1000 times longtext, InnoDB tables: 19.623

Insert 1000 times longtext, MyISAM tables: 0.98658

Delete 1000 times longtext, MyISAM tables: 16.244

 

Resultat (Andre runde):

Create 100 MyISAM tables: 5.2466

Delete 99 MyISAM tables: 0.27002

Create 100 InnoDB tables: 7.981

Delete 99 InnoDB tables: 3.7003

Insert 1000 times varchar, InnoDB tables: 29.408

Delete 1000 times varchar, InnoDB tables: 22.762

Insert 1000 times varchar, MyISAM tables: 0.61715

Delete 1000 times varchar, MyISAM tables: 15.544

Alter table, InnoDB tables: 1.5376

Alter table, MyISAM tables: 0.13463

Insert 1000 times longtext, InnoDB tables: 30.787

Delete 1000 times longtext, InnoDB tables: 34.762

Insert 1000 times longtext, MyISAM tables: 0.99635

Delete 1000 times longtext, MyISAM tables: 28.476

 

Ser du som MyISAM er 50 ganger raskere en InnoDB på INSERT varchar og 30 ganger på INSERT longtext. MyISAM og InnoDB er ganske jevene på DELETE, men også her er MyISAM raskere. MyISAM er også 10 ganger raskere på ALTER

 

Råd: slutt å bruk InnoDB.

Lenke til kommentar
Videoannonse
Annonse

Det er vel ikke fult så enkelt som du fremstiller det her. I motsetning til hva som er tilfelle med MyISAM, så støtter InnoDB referential integrity, noe som fort blir kritisk dersom du skal ha en databasemodell av en viss størrelse. Derfor synes jeg det er synd at du kategorisk fraråder bruk av InnoDB, for det viser bare at du ikke klarer å se behovene til databaseapplikasjoner varierer.

Lenke til kommentar
Er vel kanskje ment for web servere med enkle spørringer.

 

Skal få opp en test med bruk av litt vanskeligere spørringer.

5889229[/snapback]

Du misforstår totalt. MySQL prøver å kapre en litt større del av markedet, med å utvide med tyngre funksjonalitet som ofte kreves av databaseløsnigner. Det er ingen som helst tvil om at databasemotorer som støtter forskjellig type integritetssjekk er tyngre enn en uten. Det blir helt galt å sammenligne kun ytelsen på disse, siden de har forskjellige bruksområder.

 

Det blir akkurat som å sammenligne Word og Wordpad. Klart, wordpad vil vinne på ytelse, men det hjelper ikke når jeg trenger funksjonalitet fra Word. (En helt annen ting er at Word 2007 faktisk ikke ligger langt etter Wordpad i ytelse).

Lenke til kommentar

Beklager å måtte si det, men det er rett og slett for simpelt. For den vanlige bruker er det et fett hva man bruker og stort sett basert på hva man vil og ikke vil ha. Skal du derimot ha litt størrelse på ting så er det vitalt hva man velger, og bare får å si det men en gang, nei det er ikke så enkelt som MyISAM.

 

Først og fremst, databaser er aldri så enkelt som at ting kjøres seriellt og at spørringene kommer seriellt inn. En databasemotor kan være raskest på hver ting alene, men tregest når det kommer til å kjøre ting samtidig. Det er nettopp der MyISAM er dårlig. Den har låsing på tabell-nivå mot rad-nivå i InnoDB. I praksis vil dette (sammen med andre faktorer) si at InnoDB er betraktelig raskere enn MyISAM hvis man har en god blanding av select og insert/update/delete, mens MyISAM normalt vil være raskere hvis det er en betydelig overvekt av select.

 

Her er forøvrig litt lesestoff:

Del 1

Del 2

Del 3

Endret av Ernie
Lenke til kommentar
Har gjort en test på MyISAM vs InnoDB på MySQL 5.0.15

 

Ser du som MyISAM er 50 ganger raskere en InnoDB på INSERT varchar og 30 ganger på INSERT longtext. MyISAM og InnoDB er ganske jevene på DELETE, men også her er MyISAM raskere. MyISAM er også 10 ganger raskere på ALTER

 

Råd: slutt å bruk InnoDB.

5888298[/snapback]

 

Lyst aa se mine resultat fra naar jeg sammenliknet MySQL (med MyISAM) og PostgreSQL!? Raad: Slutt aa bruk MySQL.

 

Og MyISAM "stoetter" ikke en gang fremmednoekler!

Lenke til kommentar
Lyst aa se mine resultat fra naar jeg sammenliknet MySQL (med MyISAM) og PostgreSQL!?  Raad: Slutt aa bruk MySQL.

 

Og MyISAM "stoetter" ikke en gang fremmednoekler!

5907326[/snapback]

Jeg trodde jeg allerede hadde påpekt at det er en grunn til å bruke InnoDB istedenfor MyISAM. :) Det er beklagelig å måtte si det, men jeg synes ikke at MySQL holder mål. Det er mulig jeg kommer til å bruke noe tid på å sette meg bedre inn i MySQL, men jeg tviler på at jeg noensinne kommer til å bruke det, bortsett fra om jeg blir tvunget til det.

Lenke til kommentar
Ellers er det jo litt kjedelig at InnoDB ikke støtter FULLTEXT, slik MyISAM gjør. Men som nevnt, radnivålåsing (row-level locking) er en _god_ grunn til å bruke InnoDB.

5907784[/snapback]

Vel, det finnes jo ulemper ved InnoDB også da. Spesielt plassbruken ...

Endret av Ernie
Lenke til kommentar
  • 3 uker senere...
Gjest Slettet+9871234

Hvorfor ikke lage en TilKoplingsKlasse (ConnectionClass) med samme grensenitt for hver database? Da er det uvesentlig hvilken database du bruker. En del mener vel PosgreSQL er en bedre databaseserver enn MySQL.

 

Slutten av denne posten, phpBB Tweaks for large communities er aktuell.

 

Today Gaia has a about 150 web servers behind our load balancer, and about 20 databases handling different features. Many of our old servers had been either de-commissioned or converted to storage servers. The new servers we're installing are all Opteron servers that are 4 times faster than older machines with the same power requirement. Since the ISP charges a lot for power, it's much more economical for us to upgrade.

 

We don't really believe in clustering. Rather we changed our database structure and the database abstraction layer to divide up data into seperate physical databases. That way we only need to add more of the same servers when upgrading, and we don't have to spend money on expensive clustering solutions and risk supporting a complex system.

 

We've just gotten another 20 database servers to replicate the existing ones for redundency. No replication is used for scalability or handling bandwidth. We still use MyISAM for small logs and data that doesn't get updated more than once a second, otherwise everything else is InnoDB.

Kilde: Lenken ovenfor, Posted: Fri Apr 14, 2006 8:54 am av lancer.

 

 

Et av de største forumene på nettet Gaia Online finner dere øverst på serverlisten til Big Boards.

 

Med en meget sterk økning i bruk av internett vil noen av de mest trafikkerte sidene på nettet kunne oppleve problemer, om de ikke oppgraderer fort nok.

 

Andre aktuelle lenker finnes under MySQL Storage Engines på MySQL's eget forum.

 

Ofredstie, jeg vil gjerne se på hovedoppgaven din. Du finner kontakt informasjon på min side, http://www.digitalpunkt.no/. Du finner mer om min bakgrunn nederst i venstre hjørne på BlogNorway.com som du kan gå inn til via DigitalPunkt.

 

Så kan man jo lure på kapasiteten på Microsofts hotmail servere og Google sine Gmail servere. Men det er nok en annen historie.

Endret av Slettet+9871234
Lenke til kommentar
Hvorfor ikke lage en TilKoplingsKlasse (ConnectionClass) med samme grensenitt for hver database?  Da er det uvesentlig hvilken database du bruker.  En del mener vel PosgreSQL er en bedre databaseserver enn MySQL.

6021610[/snapback]

Dette er nok en god idé dersom du har mange forskjellige databaseservere, og koden må kunne fungere på samtlige, men et slikt abstraksjonslag har sine begrensninger, spesielt med tanke på optimalisering av spørringer.

 

Jeg har ikke veldig lang erfaring med slike connection classes, men av det jeg har sett så blir cursorer flittig brukt, noe som kan føre til en seriøs degradering av ytelsen. Jeg har også sett opprettelse av midlertidige views, uten at jeg skjønner hvorfor de ble opprettet.

 

Når man ser på ytelsen til databaser, og ønsker at disse skal yte optimalt, er det nok ingen ting som kan komme i nærheten av inngående kunnskap om den aktuelle databaseplattformen.

 

Kommentarer mottas gjerne :)

Lenke til kommentar
Gjest Slettet+9871234

Jeg vet ikke hvor godt du kjenner MySQL / PosgreSQL og PHP, spesielt den nye objekt modellen i PHP 5.

 

Anbefalt litteratur:

 

Harry Fuecks: The PHP Anthology: Object Oriented PHP Solutions!

 

De første kapitlene kan lastes ned gratis. Kapittel 2 i den første boken er viktigst. Der påpekes det nettopp hvordan en tilkoblingks klasse kan lages, slik at man kan bruke samme PHP kode uavhengig av databaseserver. Regner med at de to bøkene var skrevet mens PHP 4 var den gjeldende versjonen. PHP manualen har et nytt kapittel 19 om Classes and Objects (PHP 5) som sikkert er enda krafigere (flere OO muligheter).

 

Jeg kan også anbefale en annen SitePoint bok,

 

Kevin Jank: Build Your Own Database Driven Website Using PHP & MySQL som vel må sies å være en klassiker og nå kommet i tredje utgave. Den har blant annet et meget godt kapittel 8 om administrasjon av MySQL, et godt avsnitt om Regulære uttrykk ("Regular Expressions") som er så viktig ved parsing av tekst samt viser hvordan man skal lage sitt eget CMS system etc. Boken anbefales på det varmeste om du ikke er speisalist. phpBB er jo et eksempel på et slikt CMS system.

 

Dersom du vil ha den aller siste versjonen av Apache + (Linux / Windows) + MySQL + PHP + + kan du jo lage din egen testserver. Jeg har skrevet hvordan dette gjøres på DinITside. Nedlasting og installering gjorde jeg på 5 minutter.

 

Dersom du administrerer pbpBB, kan jeg også anbefale verktøyet Starfoxtj som jeg selv har installert på mitt forum.

 

For øvrig er forumene på Sitepoint meget bra.

 

Vet ikke hvor mye du kjenner til OOP. Du finner det meste du trenger av informasjon på OopSchool. Jeg har skrevet en veldig kompakt tråd om en myk introduksjon til OOP på WebProWorld sitt forum.

 

Siste del om parametrisering av (genirisk) kode i C++ er svært generell. Har selv meget stor sans for Borland C++ builder. Det er et av de kraftigste verktøyene jeg vet om. Som et eksempel kan du på DinSpillSide laste ned eget sjakkspill laget i Borland C++ Builder 3.0 eller lavere. Det kan benyttes av nybegynnere til viderekomne sjakkspillere.

 

Håper dette ikke gjorde deg mer forvirret. Som en konklusjon på din merknad vil jeg derfor anbefale at du som et minimum laster ned de gratis kapitlene fra de tre bøkene nevnt ovenfor og leser dem om du da ikke er en spesialist som vet mer enn de felste. Da vil jeg gjeren vite hva du vet som ikke de som skriver bøker for SitePoint ikke vet.

 

"Also, should we later wish to have the script fetch the result from a differetn database, such as PostgreSQL, we could use the relevant class that provide the same application programming interface (API) as the MySQL class -- and, to do so, we.d only need to change a single line of the above example. We'll do exactly that in Volume II, Chapter 7."

Kilde: The PHP Anthology: Object Oriented PHP Solutions! volum I side 25.

Endret av Slettet+9871234
Lenke til kommentar

Den testen som er gjort av hotstian ser ut til å være gjort uten transaksjoner, mao at databasen står til autocommit.

 

Prøv å bruk transaksjoner, som er noe av poenget med å bruke en skikkelig database engine, og se hvordan ytelse du får da.

 

De fleste tester jeg har sett, gjort av på f.eks www.anandtech.com viser 2x høyere ytelse med myisam enn innodb, men den ytelsesforskjellen blir mindre jo kraftigere server du har, ettersom innodb skalerer bedre med flere prosessorer og flere brukere.

 

Jeg kunne aldri tenke meg å jobbe på en database uten foreign key constraints eller serializable* transaksjonsstøtte.

 

Om postgres har longtext støtte? tjah, den har ihvertfall støtte for en type kallt text som tar stringer på opptil 1gb. Hvis du skal lagre data kan du bruke byte[] typen.

 

Angående måter å gjøre deg uavhengig av databaseløsning, så anbefaler jeg Hibernate hvis du programmerer i java. Du trenger ikke skrive sql i det hele tatt, du bruker noe som heter hql istedet, eller så bruker du en mer normal java-basert løsning som er basert på kriterier - genialt for dynamiske spørringer, f.eks søk.

 

*Når du jobber så blir det virtuellt som å jobbe alene mot databasen.

Endret av blackbrrd
Lenke til kommentar
Jeg kunne aldri tenke meg å jobbe på en database uten foreign key constraints eller serializable* transaksjonsstøtte.

6050608[/snapback]

Akkurat det kommer nå helt an på hva du skal bruke databasen til, men normalt sett er jeg selvfølgelig enig. Databaser som kun bedriver inserts, og hvor duplikate records ikke er noe problem har for eksempel veldig mye å tjene på et transaksjonsnivå med mindre streng låsing.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...