今回は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練習問題集