Tips

2014.12.02

SQLite SQLiteを触ってみよう 【第4回 速度測定編】

今回はSQLiteの速度が速いと言われているので、MariaDBと比較をしてみました。
他のサイトでは、相当速度差が出ているようです。
SQLiteが早かったり、MySQLの方が早かったりなので、本当はどっちなのでしょう・・・
実際にやってみると驚きの結果になりました。

SQLiteとMariaDBを比較してみた

【SQLiteへの登録処理】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$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への登録処理】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$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();
}

【設定ファイル】

1
2
3
4
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練習問題集

Recent News

Recent Tips

Tag Search