2007年9月アーカイブ

mysql の innodb_flush_log_at_trx_commit を誤解してたので

訂正しようと思ふ。

 

ちなみに、innodb_flush_log_at_trx_commit って? っていう方は

こちらをみてちょうらい

 

で、今まで誤解してたこと

innodb_flush_log_at_trx_commit を 2 で設定した場合、

一度、メモリに書き込んでから、1秒後にディスクに書くのだけど

1秒間で書き込むサイズが大きいと、逆にパフォーマンスが落ちてしまう・・・・と

思ってました><

 

実測してみたら、全然ちがってたよ~

 

googleのanalyticsを入れてるのですが、「perl 排他制御」で

検索されてることが多いので、ちゃんと書いてみようと思いますww

ソースを書いちゃえばこんな感じ~

コメントはソースに書いたので、適宜見てくださいな

 

sub create { # 共有するセマフォキーを作る(プログラムが動く前に作っとく)
    my $lockey = XXXXXX; # セマフォキー(使ってないところであればどこでも)
    my $lockat = 0001000;
    my $lock   = semget($lockey, 1, 0666 | $lockat);
       $lock   = semget($lockey, 0, 0);
    my $semop  = pack("sss", 0, 1, 0); # セマフォを取得するコード
    semop($lock, $semop);
}

sub exclusion { # 排他かけて、処理する子
    my($lock, $semop);
    $lock = semget($lockey, 0, 0);
    if (defined($lock)) { # セマフォあった
        $semop = pack("sss", 0, -1, 0);
        semop($lock, $semop);
    } # 排他制御をかける

    ....色々処理書く

    $semop = pack("sss", 0, 1, 0);
    semop($lock, $semop); # 排他解除
    return;
}

 

こんな感じですが、どうでしょう??

参考になるとよいですがww

 

Perl 勉強本

Oracle 勉強本

J2EE 勉強するなら、これしかなくね?

ブログ管理人

SE perler@29

アドパートナー

tooland

Pingo!

boox