さくらのレンタルサーバ(さくらインターネット)の大幅機能アップしたデータベースのInnoDBを使ってみた
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
前回、さくらのレンタルサーバ(さくらインターネット)のデータベース機能アップしたので以前の処理速度と比較してみた でデータベースの処理速度について簡単に記述しました。
今回は、さくらのレンタルサーバ(さくらインターネット)の大幅機能アップしたデータベースのInnoDBを使ってみます。
InnoDBを使ってみるとといっても処理速度を計ったりはしません。
単純にInnoDBの特徴であるトランザクションを使ってRollBackとCommitを使って、ちゃんとトランザクションが使えているか確認するだけです。
InnoDB とは、
MySQLのストレージエンジンの一種で、標準ストレージエンジンのMyISAMと違いは以下の通りと言われています。
トランザクション機能
- SQLの発行をCOMMITが発行されるまで一時的に保留状態にできます。MyISAMでは、常にSQLは実行されます。
フェイルセーフ
- クラッシュした際に、安全に復旧できることです。
行単位ロック
- テーブルの更新時にテーブルの行単位でロックします。MyISAMでは、テーブル単位でロックします。
その他にもいろいろと違いはあります。SELECTがInnoDBが遅いと言われていますが、最新バージョンでは、かなり改善されていて、その差は、ほとんど無いといわれています。
さくらのレンタルサーバ(さくらインターネット)でInnoDBを使ってみる
データベースを作成する
データベースの作成自体は、今までと変わりません。
左メニューの [ データベースの設定 ] をクリックし、画面上部の [ データベースの新規作成 ] をクリックします。
続けて、以下のようにデータベースの新規作成画面が表示されます。
データベースバージョン は、5.5を選択します。(現状、5.5のみです)
データベース名 を入力します。 データベース名 = ユーザ名+(ここで指定した)ユニークな名前 となります。
データベースユーザ名 は、ユーザID固定です。
データベース接続用パスワード を入力します。 1個目のデータベース作成時のみです。
データベース文字コード は、一般的なCMS(WordPress,Joomla!など)を利用する場合は、UTF8 でOKです。
最後に [ データベースを作成する ] ボタンをクリックします。
以下のように画面が表示されればOKです。
ここで、必ず、以下の項目をメモしておきましょう。
サーバ
データベース名
データベース ユーザ名
データベース パスワード
SSHから、データベースをアクセスしてみる
さくらのレンタルサーバ(さくらインターネット)の最も良い点の一つは、SSHによるシェルを提供している点です。
このシェルを利用しない手はありません。TeraTermで簡単に接続できます。
登録時のメールに中の契約サービスの接続情報のFTPサーバー名 、FTPアカウント 、サーバパスワード でSSHのログインができます。
《 契約サービスの接続情報 》
FTPサーバ名 : xxx.sakura.ne.jp
FTPアカウント : xxx
FTP初期フォルダ : www
サーバパスワード: yyyyyyyyy
POP3(受信)サーバ: xxx.sakura.ne.jp
SMTP(送信)サーバ: xxx.sakura.ne.jp
TeraTerm(フリーのSSH対応ソフトです。)でログインしてみましょう。
サーバー名:上記のFTPサーバー名 を入力します。
TCPポート:22 と入力します。
サービス:SSH2 を選択します。
設定を終えたら、OK ボタンをクリックします。
ユーザ名:上記のFTPアカウント を入力します。
パスフレーズ:上記のサーバパスワード と入力します。
設定を終えたら、OK ボタンをクリックします。
以下の画面が表示されればOK(ログイン状態)です。
MySQLサーバーへログインしてみましょう。
$ mysql - hサーバ - uデータベースユーザ名 - pデータベースパスワード - Dデータベース名
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3118714
Server version : 5.5.15- log Source distribution
Copyright ( c) 2000 , 2010 , Oracle and / or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and / or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h ' for help . Type '\c ' to clear the current input statement.
mysql>
上記の
サーバ
データベース名
データベース ユーザ名
データベース パスワード
は、データベースを作成する際にメモした情報です。
InnoDB , MyISAM それぞれテーブルを作成します。
InnoDB の特徴であるトランザクションの違いを確認するためにInnoDB , MyISAM それぞれのストレージエンジンを使ったテーブルをそれぞれ作成します。
InnoDB を使ったテーブル`test_innodb`を作成します。
mysql> CREATE TABLE `test_ innodb` (
-> `id` int NOT NULL auto_increment ,
-> `name` varchar ( 50 ) NOT NULL ,
-> PRIMARY KEY ( `id` )
-> ) ENGINE = InnoDB DEFAULT CHARSET = utf8
-> ;
Query OK, 0 rows affected ( 0.00 sec)
mysql>
MyISAM を使ったテーブル`test_myisam`を作成します。
mysql> CREATE TABLE `test_ myisam` (
-> `id` int NOT NULL auto_increment ,
-> `name` varchar ( 50 ) NOT NULL ,
-> PRIMARY KEY ( `id` )
-> ) ENGINE = MyISAM DEFAULT CHARSET = utf8
-> ;
Query OK, 0 rows affected ( 0.01 sec)
mysql>
InnoDB , MyISAM それぞれテーブルを作成方法の違い は、
CREATE TABLE 文の最後に
ENGINE=InnoDB とするか、ENGINE=MyISAM とするかのによって それぞれのストレージエンジンを選択することができます。
トランザクションを使ってテーブルへのレコードを作成します。
3レコードを `test_innodb` , `test_myisam` へ insert します。
ただし、2番目だけは、rollback でトランザクションを破棄するようにします。
mysql> START Transaction ;
Query OK, 0 rows affected ( 0.00 sec)
mysql> insert into test_innodb( `name` ) values ( 'foo1' ) ;
Query OK, 1 row affected ( 0.00 sec)
mysql> insert into test_myisam( `name` ) values ( 'foo1' ) ;
Query OK, 1 row affected, 1 warning ( 0.01 sec)
mysql> commit ;
Query OK, 0 rows affected ( 0.00 sec)
mysql>
mysql> START Transaction ;
Query OK, 0 rows affected ( 0.00 sec)
mysql> insert into test_innodb( `name` ) values ( 'foo2' ) ;
Query OK, 1 row affected ( 0.00 sec)
mysql> insert into test_myisam( `name` ) values ( 'foo2' ) ;
Query OK, 1 row affected, 1 warning ( 0.00 sec)
mysql> rollback ;
Query OK, 0 rows affected, 1 warning ( 0.00 sec)
mysql>
mysql> START Transaction ;
Query OK, 0 rows affected ( 0.00 sec)
mysql> insert into test_innodb( `name` ) values ( 'foo3' ) ;
Query OK, 1 row affected ( 0.00 sec)
mysql> insert into test_myisam( `name` ) values ( 'foo3' ) ;
Query OK, 1 row affected, 1 warning ( 0.00 sec)
mysql> commit ;
Query OK, 0 rows affected ( 0.00 sec)
mysql> select * from test_innodb;
+----+------+
| id | name |
+----+------+
| 1 | foo1 |
| 3 | foo3 |
+----+------+
2 rows in set ( 0.00 sec)
mysql> select * from test_myisam;
+----+------+
| id | name |
+----+------+
| 1 | foo1 |
| 2 | foo2 |
| 3 | foo3 |
+----+------+
3 rows in set ( 0.00 sec)
mysql>
test_innodb では、InnoDBの特徴でトランザクションの機能がちゃんと働いて2番目のレコードは、破棄されています。
逆にtest_myisam では、MyISAMなのでトランザクション機能は働きませんから、rollback しても2番目のレコードは、そのままinsert が実行されています。
どうでしたか?
InnoDB は、更新処理が頻繁に行われるサイトや、厳密な顧客管理などをやっているサイトには、必要でしょう。
(複数のテーブルを同時に更新しないといけない場合は、このトランザクション機能は、非常に有効的な機能です。)
ただ、一般的なCMSで、それほど必要とはされていません。Wordpressについて言えば、MyISAMでOKです。Wordpressは、トランザクション機能を必要としていません。
いずれにしても機能アップで、利用範囲の幅は広くなったと言えますね。
まずは、お試し期間で試してみましょう。
さくらインターネット の さくらのレンタルサーバ を試してみたい方は、http://www.sakura.ne.jp/ からどうぞ。お試し期間は、2週間あります。
※お試し期間中は、共有SSLは利用できませんから注意してください。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事
口コミ・評判
口コミ・評判を投稿 :