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:プリペアドクエリとバインド変数の有無による性能評価
条件realusersys
プリペアドクエリとバインド変数を使った場合12.413.250.74
プリペアドクエリとバインド変数を使わなかった場合14.353.400.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!
Part1PHP5のオブジェクト指向(1)
PHP5のオブジェクト指向(2)
PHP5のオブジェクト指向(3)
Part2トライ!SQLite(1)
トライ!SQLite(2)
トライ!SQLite(3)
Part3MySQL拡張サポート(1)
MySQL拡張サポート(2)
MySQL拡張サポート(3)
Part4PDO(PHP Data Object)データベース抽象化レイヤクラス(1)
PDO(PHP Data Object)データベース抽象化レイヤクラス(2)
PDO(PHP Data Object)データベース抽象化レイヤクラス(3)
Part5PHP5のXMLサポート(1)
PHP5のXMLサポート(2)
PHP5のXMLサポート(3)
Part6PHP4からPHP5への移行のポイント

人気記事トップ10

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

企画広告も役立つ情報バッチリ! Sponsored