perl SpeedyCGIでデータベースの接続を永続化する
perlスクリプトをSpeedyCGIスクリプトとして動作させる場合、グローバル変数の値は保持され続ける。なので、一度接続したデータベースハンドルを使い回すことでデータベースへの接続コストを削減できる。 テスト用スクリプト
perl、 MySQL、オープンソース系、ウェブ系ネタ。なぜか鯖管メモがほとんどを占めている…
perlスクリプトをSpeedyCGIスクリプトとして動作させる場合、グローバル変数の値は保持され続ける。なので、一度接続したデータベースハンドルを使い回すことでデータベースへの接続コストを削減できる。 テスト用スクリプト
接続時 my $dbh = DBI->connect('DBI:mysql:database=sandbox;host=localhost;mysql_read_default_file=/etc/mysql/my.cnf',qw/id password/,); または接続後に $dbh->{ mysql_enable_utf8 } = 1; この辺の記事http://www.geminium.com/chiba_blog/2009/02/
PERLでMySQLにデータを挿入する実験。 実験スクリプト INSERT を100万回繰り返す。 for(1..1000000){ $sql = <<"EOM"; INSERT INTO `table_name` (`col1`,`col2`,`col3`,`col4`) VALUES ('10','11','12','13'); EOM $sth = $dbh->do($sql)|| die $dbh->errstr; } 結果:途中でサーバエラー Server error! The server encountered an internal error and […]
$COUNT = $dbh->selectrow_array("SELECT COUNT(*) FROM `テーブル名` WHERE `カラム` = '条件'");
$sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth = $dbh->prepare( "$sql" ); $sth->execute(); $id = $sth->{mysql_insertid}; これで$idに「自分が追加した最新のauto_increment番号」が代入される ただし下記のようにdoでは使えない。 $sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth […]