2008-12-11(木) 晴のち曇 安静時心拍数 53 [長年日記]
_ Microsoft Update on Windows 2000
- Windows 2000 用セキュリティ更新プログラム (KB954600)
- Windows 2000 用セキュリティ更新プログラム (KB956802)
- Windows 2000 用セキュリティ更新プログラム (KB952069)
- Internet Explorer 6 Service Pack 1 用の累積的なセキュリティ更新プログラム (KB958215)
- Windows 悪意のあるソフトウェアの削除ツール - 2008 年 12 月 (KB890830)
_ PostgreSQL 8.3.5 でパフォーマンス調査(2)仕様確認
昨日の仕事の続きをやりました。
まず、最大カラム数の調査です。PostgreSQL に関する FAQに答えが載っているのですが、念のためやってみました。testdbを作っておいて
#!/usr/local/bin/ruby
require "postgres"
def ct
ct = <<-EOS
CREATE TABLE testtable (
key INTEGER
);
EOS
end
def at(n)
at = <<-EOS
ALTER TABLE testtable ADD COLUMN hoge#{n} INTEGER;
EOS
end
def dt
dt = <<-EOS
DROP TABLE testtable;
EOS
end
conn = PGconn.connect("localhost", 5432, "", "", "testdb")
res = conn.exec(ct)
i = 1
while i <= 1610
res = conn.exec(at(i))
i += 1
end
res = conn.exec(dt)
な感じのスクリプトを実行してみました。すると、
./maxcolumn.rb:33:in `exec': ERROR: tables can have at most 1600 columns (PGError)
from ./maxcolumn.rb:33
となり、FAQにあるとおりでした。次に、VIEWを作ったときの最大カラムはいくつになるかを調べるために
#!/usr/local/bin/ruby
require "postgres"
class Table
attr_reader :name
def initialize(name='hoge')
@name = name
end
def ct
ct = <<-EOS
CREATE TABLE #{@name} (
key INTEGER
);
EOS
end
def at(n)
at = <<-EOS
ALTER TABLE #{@name} ADD COLUMN #{@name}#{n} INTEGER;
EOS
end
def dt
dt = <<-EOS
DROP TABLE #{@name};
EOS
end
end
class View
def initialize(name='foo')
@name = name
end
def cv(*tb)
s = tb.join(",")
cv = <<-EOS
CREATE VIEW #{@name} AS
SELECT * FROM #{s};
EOS
end
end
hoge = Table.new('hoge')
fuga = Table.new('fuga')
conn = PGconn.connect("localhost", 5432, "", "", "testdb")
res = conn.exec(hoge.ct)
res = conn.exec(fuga.ct)
i = 1
while i <= 1499
res = conn.exec(hoge.at(i))
res = conn.exec(fuga.at(i))
i += 1
end
view = View.new('view')
res = conn.exec(view.cv(hoge.name, fuga.name))
こんな感じのやっつけスクリプトを実行してみました。
./view.rb:64:in `exec': ERROR: target lists can have at most 1664 entries (PGError)
from ./view.rb:64
1つのテーブルで最大カラム数が1600で、結合しても最大が1664ということですね。まぁ、そもそも1つのテーブルでカラム数が20以上になる時点で設計が怪しいと素人の私でも気付くのですが。そして、念のためJOINではどうか調べることに。
#!/usr/local/bin/ruby
require "postgres"
class Table
attr_reader :name
def initialize(name='hoge')
@name = name
end
def ct
ct = <<-EOS
CREATE TABLE #{@name} (
key INTEGER
);
EOS
end
def at(n)
at = <<-EOS
ALTER TABLE #{@name} ADD COLUMN #{@name}#{n} INTEGER;
EOS
end
def dt
dt = <<-EOS
DROP TABLE #{@name};
EOS
end
end
class Join
def initialize(name='foo')
@name = name
end
def fullouterjoin(a, b)
# beta-gaki
cv = <<-EOS
SELECT * FROM #{a} FULL OUTER JOIN #{b} USING(key);
EOS
end
end
hoge = Table.new('hoge')
fuga = Table.new('fuga')
conn = PGconn.connect("localhost", 5432, "", "", "testdb")
res = conn.exec(hoge.ct)
res = conn.exec(fuga.ct)
i = 1
while i <= 1499
res = conn.exec(hoge.at(i))
res = conn.exec(fuga.at(i))
i += 1
end
join = Join.new('join')
res = conn.exec(join.fullouterjoin(hoge.name, fuga.name))
結果は
./join.rb:63:in `exec': ERROR: target lists can have at most 1664 entries (PGError)
from ./join.rb:63
でした。くっつけても最大で1664っていうことでOK?
パフォーマンスは調べる必要がなくなりました。こんなことを調べる動機を作ったDBを設計した人だれよ?
_ Microsoft Update on Windows XP
- Windows XP Windows XP 用の更新プログラム (KB955839)
- Windows XP Windows XP 用 Internet Explorer 7 の累積的なセキュリティ更新プログラム (KB958215)
- Windows XP Windows 悪意のあるソフトウェアの削除ツール - 2008 年 12 月 (KB890830)
- Windows XP Windows XP Service Pack 3 用セキュリティ更新プログラム (KB952069)
- Windows XP Windows XP 用セキュリティ更新プログラム (KB954600)
- Windows XP Windows XP 用セキュリティ更新プログラム (KB956802)
_ 住民票の写しの取得
宇都宮市役所で住民票の写しを取って来ました。印鑑登録をしたときにうつのみや市民カード・印鑑登録証を受け取っている筈ですが、探しても見当たらなかったのであきらめて窓口で手続きしました。うつのみや市民カードがあれば自動交付機でできるので、態々市役所まで行く必要もなく手数料も200円で済んだのですが、まあいいか。
_ hi-ho 退会手続完了
昨日インフォメーションデスクにつながらなかった件で再度手続きを試みました。MyサポートではメールアドレスとPOP3のパスワードがあればログインできるので、.fetchmailrcでPOP3のパスワードを確認してログインできました。そうしたところ、接続IDが画面に表示されていたのでそれを控え、接続パスワードは古いパスワードを尋ねられることなく新しいものに変更できてしまいました。結局、インフォメーションデスクに問い合わせることなく退会手続きを済ませることができました。