今回はSQLiteの速度が速いと言われているので、MariaDBと比較をしてみました。
他のサイトでは、相当速度差が出ているようです。
SQLiteが早かったり、MySQLの方が早かったりなので、本当はどっちなのでしょう・・・
実際にやってみると驚きの結果になりました。
SQLiteとMariaDBを比較してみた
【SQLiteへの登録処理】
$link = null;
try{
$link = new SQLite3("../db/test_db.sqlite");
$insSql = "INSERT INTO employee_tbl (id, name, gender, salary, notes) VALUES(";
for($i = 1; 10000 >= $i; $i++){
$res = $link->exec($insSql
. $i . ","
. "'TEST NAME_" . $i . "',"
. rand(0, 1) . ","
. rand(1000000, 10000000) . ","
. "''"
. ")");
if(!$res){
echo "登録に失敗しました。n";
$link->close();
exit();
}
}
$link->close();
} catch(Exception $ex) {
echo "DBへの接続エラーが発生しました。" . PHP_EOL ;
echo $ex->getTraceAsString();
}
【MariaDBへの登録処理】
$dbInfo = parse_ini_file('./config.ini');
$link = null;
try{
$link = mysqli_connect($dbInfo['URL'], $dbInfo['USER'], $dbInfo['PSWD'])
or dir('MariaDBへの接続に失敗しました。');
$db = mysqli_select_db($link, $dbInfo['DB'])
or die('DBの選択に失敗しました');
$insSql = "INSERT INTO employee_tbl (id, name, gender, salary, notes) VALUES(";
for ($i = 1; $i <= 10000; $i++) {
$res = mysqli_query($link, $insSql
. $i . ","
. "'TEST NAME_" . $i . "',"
. rand(0, 1) . ","
. rand(1000000, 10000000) . ","
. "''"
. ")");
}
mysqli_close($link);
} catch(Exception $ex) {
echo 'DBへの接続エラーが発生しました。' . PHP_EOL ;
echo $ex->getTraceAsString();
}
【設定ファイル】
URL=localhost USER=root PSWD=root DB=test_db
INSERT
1万件データを登録するPHPプログラムを作成し、3回繰り返した結果です。
| DB | 1回目 | 2回目 | 3回目 |
|---|---|---|---|
| SQLite | 61.217s | 61.768s | 62.976s | MariaDB | 27.388s | 24.483s | 20.659s |
(ー△ー;)エッ、マジ?!!!
と思いました。
いままで、さんざんSQLiteは早いと言っておきながら、2~3倍MariaDBの方が早かったです・・・ゴメンナサイ
UPDATE
1万件データを更新するPHPプログラムを作成し、3回繰り返した結果です。
| DB | 1回目 | 2回目 | 3回目 |
|---|---|---|---|
| SQLite | 72.629s | 65.496s | 60.059s | MariaDB | 33.099s | 27.683s | 27.336s |
更新についても、同様の結果でした。
大きなシステムで使用するには耐えきれないと思いますが、
通常のアプリケーションで使用するのであれば問題ないと思います。(そう信じています)
SQLが学べる 関連連載リンク
データベースの基礎が学べるSQL基礎講座
SQL基礎 連載
練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集