2008年9月アーカイブ

では、さっそく mod_perl 2.0 Documentation を読みながら

 

ヘッダに追加していきます

 

ソースと、Apache conf は、こんな感じ

 

ほぇ??

 

なんで、今まで普通だったのに??っということで調査してみた

 

該当のプログラム抜粋

 

sub login {
    my $self = shift;
    my ($user, $pass) = @_;
    my $loginForm = "https://www.google.com/accounts/ServiceLoginBox?service=analytics&nui=1&hl=en-US&continue=http://ww
w.google.com/analytics/home/%3Fet%3Dreset%26hl%3Den-US";

        my $ua = $self->{ua};
        my $req = HTTP::Request->new (GET => $loginForm);
        my $res = $ua->request ($req);

    die "Request failed" if (!$res->is_success);

 

あー、analyticsのpluginで、is_successで、こけてるのね

 

URL変わった??ってことで、URLを直にブラウザで叩いてみると・・・

 

ちゃんと表示される・・・あれ??

 

Request failedだけじゃ、わからん!!

 

レスポンスコードも出してみる

 

    die "Request failed(". $res->code. ")" if (!$res->is_success);

 

結果は、「Request failed(501)」

 

501?????

 

ということで、チャチャっとググった感じで、以下のパラメータを変更してみた

 

SQL> ALTER SYSTEM SET SGA_TARGET=32M SCOPE=SPFILE;

システムが変更されました。

SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET=8M SCOPE=SPFILE;

システムが変更されました。

 

そんで、SHUTDOWNして、STARTUPすると・・・

 

SQL> STARTUP
ORA-00093: pga_aggregate_target must be between 10M and 4096G-1

 

おーーーーーぃ、10Mないとダメなんかいな・・・

 

じゃぁ、最初から設定させんでくれよ・・・orz

 

ということで、色々試してみたww

 

ということで、実際にinnodbと、myisamで実験開始!!

 

実験サーバスペック

 

Intel(R) Celeron(R) CPU 2.93GHz
Memory 1GB

 

使ったのは、この2つのテーブル

 

mysql> SHOW CREATE TABLE innodb_test\G
*************************** 1. row ***************************
       Table: innodb_test
Create Table: CREATE TABLE `innodb_test` (
  `id` int(11) NOT NULL auto_increment,
  `string` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql> SHOW CREATE TABLE myisam_test\G
*************************** 1. row ***************************
       Table: myisam_test
Create Table: CREATE TABLE `myisam_test` (
  `id` int(11) NOT NULL auto_increment,
  `string` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1000001 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

 

レコード数は、2テーブルともに100万件です

 

mysql> SELECT SQL_NO_CACHE COUNT(id) FROM innodb_test;
+-----------+
| COUNT(id) |
+-----------+
|   1000000 |
+-----------+
1 row in set (4.40 sec)

mysql> SELECT SQL_NO_CACHE COUNT(id) FROM myisam_test;
+-----------+
| COUNT(id) |
+-----------+
|   1000000 |
+-----------+
1 row in set (0.00 sec)

 

ちなみに、100万件投入したPerlスクリプトはこれ

 

#!/usr/bin/perl

use strict;
use warnings;
use String::Random;
use DBI;

my $dbh = DBI->connect('DBI:mysql:test2', 'user', 'pass');
my $str = String::Random->new();
my $sth = $dbh->prepare('INSERT INTO innodb_test(string) VALUES(?)');

for (1..1000000) {
    my $rnd = $str->randregex('.{128,255}');
    $sth->execute($rnd);
}
$sth->finish();
exit;

 

128~255byteまでのランダムな文字列を入れる簡単なスクリプトです

 

Perl 勉強本

Oracle 勉強本

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

ブログ管理人

SE perler@29

アドパートナー

tooland

Pingo!

boox