2009/8/21 金曜日

osCommerceを軽快に2 テーブル分割

カテゴリー: MySQL, osCommerce — admin @ 2:35:14 晴時々曇

注文管理関連のテーブルは、何年もサイトを運営していると何十万件というデータが保存されることになる。1つのテーブルに大量のデータが保管されると、新規データの登録時に時間がかかる。そこで、テーブルを分割するというアイデアが浮かんでくるが、テーブルの分割をプログラム側で対応すると、手間がかかりすぎるし、切り替え時にサーバを止めるタイミングも難しい。

実は、MySQLにはこのような状況に対応するためのMERGEテーブルというものがある。データが多くなったらMERGEテーブルとUNIONで既存のテーブルと新規のテーブルを1つのテーブルとして扱うようにすればいい。検索を実行するときは新旧テーブル全体を対象にして、データを登録するときは新しいテーブルを対象にできるなど、非常に都合がいい。テーブルの作り方を工夫すると連番も前のテーブルを自動的に引き継ぐのでさらに安心だ。

お客様のサーバで複数のテーブルを分割したが、osCommerceを稼働させたまま瞬時に作業を終わることができた。
ただし、準備に時間はかかった。

http://dev.mysql.com/doc/refman/4.1/ja/merge.html

2009/8/17 月曜日

osCommerceを軽快に1 複合インデックス

カテゴリー: MySQL, osCommerce — admin @ 15:14:22 晴のち曇

osCommerceやZen Cartのバージョンによっては注文関連のテーブルにインデックスを設定するとパフォーマンスが改善される。
ただし、丁寧にすべてのカラムごとに1つのインデックスを設定すると、インデックスが効果的に機能しない。
「実践ハイパフォーマンスMySQL」の66ページに、「MySQLでは、1つのクエリを実行するとき、1つのテーブルにつき1つのインデックスしか使用できないのである」と書かれている。とすると、WHERE句で指定される検索条件に使用されるカラムが何個もある場合は、せっかく設定したインデックスが無駄になるということになる。
こんなときは、複合インデックスにすると効果的。MySQLでは、1つのインデックスに対して15カラムまで1つのインデックスに設定できる。
注文関連テーブルの場合も、クエリを確認して、検索条件中のカラムを同一のインデックスに設定するといい。
phpMyAdminなどを使って、EXPLAINで分析しながら調整するとわかりやすい。
あるとき、トップページだけ時間がかかるので調べてみたら、ベストセラー(ランキング)を表示しているモジュールの中のクエリに時間がかかっていた。「WHERE」以降にはカラムがひとつあり、「ORDER BY」以降にもカラムがひとつあって、同じテーブルに属していたのでこの二つのカラムで複合インデックスを作ったら、2秒近くかかっていた処理が0.024秒に短縮された。

詳細は以下のURLで確認してください。

http://dev.mysql.com/doc/refman/4.1/ja/mysql-indexes.html

http://dev.mysql.com/doc/refman/4.1/ja/multiple-column-indexes.html

2009/8/16 日曜日

休止状態

カテゴリー: フリーランス日記 — admin @ 12:00:36 曇時々晴

お盆で街は休止状態ですね。

さて、Aspire 5720Gは、ひとつひとつ不具合を解消していくことでフリーズしない時間が長くなってきた。しかし、まだ、フリーズする。
ノートPCなので当然のように作業を終わるとスリープにしていたが、スリープから復帰後にフリーズするようだ。何度か試してみたが復帰後にフリーズ。
以前は検索しても情報が数件程度しかなかったが、今は、似た例をいくつも見つけることができる。どうも、スリープでフリーズすることがあるらしい。
スリープではなく休止状態にして、何度か試してみると、フリーズしなくなった。

今度こそ大丈夫かな。
長時間動画を表示させても熱で止まることもないしAspire 5720G自体は良いマシンなのかもしれないが、正常に動作するまで手間がかかりすぎた。

2009/8/15 土曜日

レジストリ クリーナー

カテゴリー: フリーランス日記 — admin @ 2:01:13 曇時々晴

ノートPCが2台とも修復できてよろこんでいたら、また、同じ症状が復活してしまった。
完璧に直っていたのに、あの後に何をやったのか?

すぐに、思い出した。
いつも問題なく動作するようにフリーのソフトを使い、
不要なファイルの削除と不要なレジストリのゴミを取り、
レジストリのデフラグとハードディスクのデフラグを動作させていた。
快適に動作するようにと思ってやったことが裏目にでたらしい。
この中で原因になりそうなのがレジストリ クリーナーだ。
レジストリのゴミをとるといっても適切に分析して削除していないのかもしれない。
復元機能を使って数時間前の状態に戻したら、あっさりと復活。
両方のノートPCが正常に動作した。
レジストリはあまりいじらないほうが良さそうだ。

2009/8/13 木曜日

Acer Aspire 5720G 修理完了

カテゴリー: フリーランス日記 — admin @ 12:30:13 晴のち曇

修理に出すのが面倒でぐずぐずと机の片隅で埃をかぶっていたノートPC。Acerにメールで現状の様子をしらせたところこちらに送って欲しいというメールを受け取ったのが2008年11月頃で、なんとか2008年も終わりに近づいた頃に埼玉の配送センターに送付した。送料はこちら持ちで帰りの送料はAcerが支払うということだった。
年が明けて、AcerからFAXが届いた。
Windowsシステムに不具合があった(何それ?)という理由で、ハードディスクのデータを消していいかという内容だった。承諾のサインをして送り返して、数日後に、Aspire 5720G が返ってきた。
メモリーを4Gに変えるときに底面のシールを剥いだので保証が効くのかどうかも心配だったが無償で修理できた。
外部を点検してみるとピカピカの天板に数センチの縦の傷がついていた。がっかりしたが、内部が修正されていたらいいと自分を納得させ、起動してみた。すぐにWindowsのメモリテストを実行した。1度もうまくいったことがなかったが、購入してはじめて成功。テストのためYahooの映画を流してテストしてみたがボディガードを最後まで見ることができた。
ここまで1月に書いてブログを公開しようとしたところAspire 5720
Gがまたまた停止するようになった。手順どおり新しいドライバをインストールしたがフリーズする症状は解消しなかった。
面倒なのでそのままにしておいた。

最近、PC用の地デジチューナを購入したが、Let’snoteではパワー不足で快適に表示できない。仕方なくAspire 5720Gで見ているが、どこがわるいのかわからないくらいにフリーズするし、シャットダウンするようになった。

先日、Let’snoteの調子を見るときに使ったProcess ExplorerをAspire 5720Gにもインストールして調子をみることにした。フリーズするときの状況を確認できれば直せるような気がした。

全部外したはずだったのにまだAcer独自のアプリが動作していたことに気付いた。msconfigを使って起動しないようにした。
フリーズ直後に起動するとこのアプリが起動していたので気になっていた。
外部液晶用のソフトも邪魔だったので削除。削除したら、ブルーバックでエラーメッセージまでるようになった。
再度、Acerのサポートページでドライバをダウンロードした。
動画を見ているときによくフリーズするのでビデオ関連のドライバを更新するつもりだった。
以前は、ヨーロッパのサイトに接続して非常にわかりにくい一覧からダウンロードしなければならなかったが、今回はとてもわかりやすいインターフェースになっていた。BIOSのバージョンも上がっていたので、すべてのドライバをダウロードしてBIOSもふくめ全体をアップデートした。

アップデート後、動画を流して朝までそのままにしてみた。朝起きてこわごわ見てみると、地デジが表示されたままだった。フリーズしなくなった。Aspire 5720Gも修正できたようだ。

いま、考えてみると、公開されていたドライバにもバグがあったのかもしれない。

« 前ページへ次ページへ »

© 2003-2010 Yorinobu Nagata. This website powered by  Convert time: 0.377 sec.