Part3:MySQL拡張サポート(2) (2/2)

まるごと PHP!
まるごと PHP!

Part3:MySQL拡張サポート(2)

著者:桝形誠二(MASUGATA, Seiji)   2005/3/18
前のページ   1   2
プリペアドクエリとバインド変数(3)

   結果は表2のようになりました(realは総処理時間、userはユーザーCPU時間、sysはシステムCPU時間)。少々ですが、実行効率の向上が確認できます。
表2:プリペアドクエリとバインド変数の有無による性能評価
条件 real user sys
プリペアドクエリとバインド変数を使った場合 12.41 3.25 0.74
プリペアドクエリとバインド変数を使わなかった場合 14.35 3.40 0.76
トランザクション

   MySQL 4.1.2は既定でInnoDBをサポートしており、トランザクション処理が可能です。これに伴い、改良版MySQL拡張サポートでもトランザクション処理の制御ができます(リスト9)。

リスト9:transaction.php
<?
include( "child.inc" );

try{

$ChildMySQLi = new CihildMySQLi( "localhost", "root", "", "testdb" );

$ChildMySQLi->autocommit( false );

$InsertStmt = $ChildMySQLi->prepare( "insert into hoge values( ?, ? )" );

$InsertStmt->bind_param( "is", $No1, $No2 );

for( $XX = 1; $XX {
$No1 = $XX;
$No2 = "test".$XX;
ChildStmt::execute( $ChildMySQLi,$InsertStmt );
}

$Result = $ChildMySQLi->query( "select no1, no2 from hoge order by no1" );

while( $Array = $Result->fetch_assoc( ) )
{
print_r( $Array );
}

$ChildMySQLi->rollback( );
// $ChildMySQLi->commit( );

echo "\n[reTry!!]\n\n";

$Result = $ChildMySQLi->query( "select no1, no2 from hoge order by no1" );

while( $Array = $Result->fetch_array( ) )
{
print_r( $Array );
}

} catch( Exception $Exception ) {

print_r( $Exception->getMessage( )."\n" );

}

?>

   当然ですが、制御できるのはテーブルの型がInnoDBである場合に限ります。テーブルの型をInnoDBにしたい場合は、テーブルを作成するCREATE文の一番最後に「TYPE = InnoDB」を付けます。

   トランザクション処理を破棄したい場合はrollback()メソッド、逆に確定したい場合はcommit()メソッドをそれぞれ利用します。autocommit()メソッドを使うと、自動コミットの有効・無効を定義できます。自動コミットを有効にすると、エラーが発生しない限り、実行した時点でトランザクション処理が確定します。

前のページ   1   2



著者プロフィール
桝形 誠二
様々な言語を経験していく中でPHPと出会い、初心者に易しいという魅力に惹かれ続けて早5年。色んな事をPHPで実装しようとしすぎて周囲の反感を買いやすいのが最近の悩み。


INDEX
Part3:MySQL拡張サポート(2)
  プリペアドクエリとバインド変数(2)
プリペアドクエリとバインド変数(3)
まるごと PHP!
Part1 PHP5のオブジェクト指向(1)
PHP5のオブジェクト指向(2)
PHP5のオブジェクト指向(3)
Part2 トライ!SQLite(1)
トライ!SQLite(2)
トライ!SQLite(3)
Part3 MySQL拡張サポート(1)
MySQL拡張サポート(2)
MySQL拡張サポート(3)
Part4 PDO(PHP Data Object)データベース抽象化レイヤクラス(1)
PDO(PHP Data Object)データベース抽象化レイヤクラス(2)
PDO(PHP Data Object)データベース抽象化レイヤクラス(3)
Part5 PHP5のXMLサポート(1)
PHP5のXMLサポート(2)
PHP5のXMLサポート(3)
Part6 PHP4からPHP5への移行のポイント

人気記事トップ10

人気記事ランキングをもっと見る