apache2, PHP4.1, MySQL4でECサイトを構築しています。OSはLinux。
注文情報をMySQLのテーブルに格納した後、MySQL以外にも別にDBが存在しており、そちらにも同時にXML形式で渡して格納しています。
しかし負荷が上がると別DBへのアクセスがボトルネックになっているようで、ECサイト側のLoad Averageが高くなっているところまで判明しました。
MySQLと別DBは完全同期でなくてもかまわないので、できれば、ブラウザのアクセスとは切り離した形で、テーブル内の情報を別DBにポツポツアップしていきたいのですが、どのようなやり方が最適でしょうか。
No.1ベストアンサー
- 回答日時:
その別DBには何のために書き込んでいるんですかねぇ…、という疑問は置いておいて、後でゆっくり書き込めばいいというのであればブラウザからのアクセスはMySQLへのアクセスまでで閉じるようにして、定期的またはMySQLに変更があったときだけ別プロセスを起動してレプリケート(とはちょっと違いますけど)というか別DBへの書き込みをすればよいのではないでしょうか。
(オンデマンドでなく)定期的に差分バックアップをとるように別DBに移すというのが性能などを見積もりやすいかと思いました。
規模とかMySQLと別DBの関係がわからないので、そう簡単にはいかないことがあるのかもしれないですけれども。
dummyplug様 ご回答ありがとうございます。
まさに定期的、または変更があった場合に差分のみ移すというのが理想なのですが、具体的にどのように実現したらよいのでしょうか?
Cronでぐるぐる回すのがよいのでしょうか。それともMySQLの機能で、変更があったら何かをキックするなんてこともできるのかなぁ・・?
No.2
- 回答日時:
ちょっと時間が空いちゃいましたね。
ごめんなさい。cronで回すのもMySQLのイベントを使うのもどちらもありだと思います。
ただ、個人的にはレコードが更新されたらというイベント(トリガ)で起動するよりも定期起動の方がよいのではないかと考えています。後者の方がサーバの負荷を読めそうな気がするからなのですけれど、実際に設計してみてイマイチなようなら更新トリガを使って動かすというのももちろん構わないと思います。
更新があったら速やかに何か(この場合XMLを別サーバに送る)をしたいというならトリガを使うところですけど、そんなに焦る処理でもないのなら定期起動の方が動きを読みやすいし、監視もしやすいと思います。
処理方法の参考としてURLを挙げておきます。
【MySQLウォッチ】第39回 イベントによる定期実行処理の自動化
http://itpro.nikkeibp.co.jp/article/COLUMN/20080 …
【MySQLウォッチ】第16回 MySQL 5.0ベータ版リリース,新機能トリガーとビューを試す(こちらはちょっと前の記事ですけど)
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20 …
dummyplugさん
詳しい説明ありがとうございます。
MySQLにもトリガなどあるんですね。
おかげでCronやトリガのメリットデメリットもわかりやすかったです。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBで実行中のEXEファイルの情報...
-
VBAでOutlookを終了させたい Ex...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
ACCESS VBAで別のACCESS(mdb)を...
-
htmlからcgiを自動的に起動させ...
-
VBSから別のVBS起動するとき変...
-
WinSCPで画像のように puttyを...
-
エクセル起動時別プロセスで開く
-
ウィンドウを終了させたい・・・
-
プログラム2重起動処理の方法
-
AppActivateについて
-
VBSで起動したアプリが前面表示...
-
コマンドボタンをクリックする...
-
64bitで作ったEXEを32bitで起動...
-
プログラムからのブラウザ立ち上げ
-
フォームの最前面が効かない
-
Windows上のプログラム。「予め...
-
gccプログラムで複数の実行ファ...
-
VB6.0からエクセルを起動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
WinSCPで画像のように puttyを...
-
VBSから別のVBS起動するとき変...
-
Windows上のプログラム。「予め...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
EXCEL VBAから他アプリケーショ...
-
64bitで作ったEXEを32bitで起動...
-
exeファイルを実行するとすぐに...
-
リムーバブルディスクのフォー...
-
VB6で呼び出し元の情報を取得す...
-
VBAでIEが起動しているか...
-
フォームの最前面が効かない
-
VBAでSeleniumからChromeを起動...
-
エクセル起動時別プロセスで開く
-
VBSでExcelのUserFormをエクス...
-
ACCESS VBAで別のACCESS(mdb)を...
-
別アプリの起動、終了について
おすすめ情報