のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,305人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレMySQL 総合 Part14

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1 + - mysqldump + - rXBUq5sa + - share + - utf8_bin + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    202 : 198 - 2008/07/31(木) 14:05:21 ID:??? (-22,-28,-37)
    >>199
    生成時に圧縮してbinaryで格納すると、select するフィールドが複数ある場合は、それぞれ decompress することになる訳ですね。
    それでもいいけれど、できればDBサーバとの通信線自体を圧縮する方法がないものかと…。
    そうすれば、今使っている諸ルーチンは一切書き替えず、データベースもそのままで使えそうなので。
    203 : NAME IS - 2008/07/31(木) 14:18:07 ID:??? (+26,+29,-5)
    >>198
    いちおう、圧縮プロトコルがあります。
    http://www.mysqlperformanceblog.com/2007/12/20/large-result-sets-vs-compression-protocol/

    あとはSSHで圧縮かけてフォワーディングするとか。
    204 : 198 - 2008/07/31(木) 14:37:03 ID:??? (-26,-29,-58)
    おおお、早速有難うございます。php ではないけど、関連で探して早速テストしています。
    教えて頂いたページでは giga-bit ether だと圧縮のオーバヘッドの方が上回るとあるけど、
    うちのはCPUが暇してるせいか、giga-bit でも少し速くなっている気が… w
    有難うございました。
    205 : NAME IS - 2008/08/01(金) 03:18:33 ID:??? (+27,+29,-24)
    MySQLの認定資格を受けようと考えているのですが、
    参考書が原書(英語)しかないようです。
    試験対策になりそうな日本語の書籍がありましたら教えてくれませんか。
    208 : NAME IS - 2008/08/03(日) 15:20:27 ID:d02Ojyox (+11,+16,-4)
    データベースのハンドリングって何ですか?
    209 : NAME IS - 2008/08/03(日) 21:33:49 ID:??? (+18,+29,-3)
    >>207です。自己解決しました。どうもお騒がせしました。
    212 : NAME IS - 2008/08/04(月) 15:27:40 ID:??? (+38,+30,-217)
    実データでやってみないとわからないが、全然パフォーマンスが出ない場合もあるだろう。

    おそらくあらゆる引き方でインデックスが使われるように
    あらゆる複合インデックスを張っておこうという魂胆だろうが、
    それでうまくいく場合もあれば、行かない場合もある。
    この場合は12通りのインデックスになる。

    しかし、無闇にインデックスを増やすことで
    MySQLが使用するインデックスの決定に失敗して効率が落ちる場合もあるし、
    分散が少ないフィールドは変にインデックスを使わないほうが速い場合もある。
    あるいはテンポラリを避けるため、問い合わせを複数に分けなければならないかも知れない。
    書き込みパフォーマンスも悪化する。

    一つ一つのクエリについて、論理的に考え、テストしながら張り方を考えるべきです。
    考え方が逆なんだ。
    213 : 211 - 2008/08/04(月) 16:12:48 ID:??? (+38,+29,-124)
    >>212
    どうもありがとうございます。

    「あらゆる引き方でインデックスが使われるように」というより、値段以外のフィールドの
    組み合わせは一意じゃなきゃいけないので、複合プライマリーキーにしようと思ったんですけど、
    UNIQUEインデックスとかの方がいいんですか?

    検索は銘柄ID・時刻の組み合わせ+フェーズ値が最大、というクエリーがメインだと思います。
    通常は最新のデータしか興味がないので。
    217 : NAME IS - 2008/08/05(火) 20:25:52 ID:??? (+23,+29,-8)
    >>216
    あ、他にif文とかがあるのです。
    何が間違ってるんだろう…
    220 : NAME IS - 2008/08/06(水) 07:01:22 ID:ihVuWEE/ (+24,+29,-62)
    MySQLを最大5億件のレコードを扱うことを予定しているのですが、
    こんな大量のレコードを扱っている人いますか?
    インデックス付けても、検索が遅くて使い物にならないか懸念しています。

    Googleなどが、MySQLを使っているのは知っていますが、
    Googleの場合はMySQLの内部コードをいじっていると聞いています。
    私の場合、そこまでの技術力はないので、そのまま使います。

    ちなみに、InnoDBです。アドバイスよろしくお願いします。
    221 : NAME IS - 2008/08/06(水) 07:34:30 ID:??? (+40,+29,-13)
    恐らく無理。というか、データ捏造してやってみれ。
    差し支えなければ、何を扱ってそんなデータ量になるのかちょっとkwsk
    222 : NAME IS - 2008/08/06(水) 07:43:26 ID:??? (+30,+29,-14)
    ああ、ちなみに、無理っていうか、MySQLだけの問題じゃ済まない規模だから
    難しいという意味に修正してくだしあ。色々と検証すべきポイントがあると思う。
    223 : NAME IS - 2008/08/06(水) 07:56:08 ID:ihVuWEE/ (+35,+29,-179)
    >>221>>222
    アドバイスありがとうございます。

    >差し支えなければ、何を扱ってそんなデータ量になるのかちょっとkwsk
    クライアントが某研究機関(といってもスパコンを使うような規模じゃなくて、規模は中小)で、
    実験データを処理するために使うとのこと。

    そのための支援プログラムを作っているのですが、
    5億件入ったデータにUPDATEをガリガリ掛ける処理です。

    本当はメモリー上でやりたいのですが、さすがにメモリーオーバーです。
    で、DBを使ってというところなのですが・・・

    難しいというのは、例えばMySQLでtmporaryテーブルを作られてしまった時に、
    メモリーオーバーになるとかそういうことでしょうか?
    224 : NAME IS - 2008/08/06(水) 08:23:07 ID:??? (+41,+29,-62)
    >>223
    処理時間をあまり気にしなくていいローカルアプリケーションなんでしょ?
    だったら実装次第でなんとかなるんじゃないかな?
    まさかWEBアプリのリアルタイム処理の話じゃないよね?
    225 : 221 - 2008/08/06(水) 08:38:23 ID:??? (+41,+29,-85)
    >>224
    そんな感じっぽいですな。十分なメモリ(2GBもあれば)と、
    高速なディスクがあれば行けるような希ガス。

    DBぶん回しつつバックアップどうすんだとかそういう
    余計なことまで考えてしまったw

    何時間以内にどれだけのデータ処理を必要としてるのかとか、
    そこら辺の要件を詰めてサイジングすればいいのでわ・・・
    226 : NAME IS - 2008/08/06(水) 09:02:48 ID:ihVuWEE/ (+31,+30,-178)
    >>224>>225
    レス色々ありがとうございます。
    そうですローカルです。バッチ処理みたいなイメージです。
    なので、一度動かしたら、結果が数日後になるようなイメージです。

    以前の話ですが、innoDBで700万件が入ったテーブルにUPDATEやらINSERT処理やら
    やっていたところ、突然クラッシュしてデータを持って行かれました。

    なので、今回も5億件が入ったテーブルでクラッシュされたり、
    インデックスを張っているにも関わらず遅すぎると困るかなぁと思っています。

    とりあえず、アドバイス通りダミーの5億件を作ってやってみます。
    ただ、もし5億程度の件数を処理した経験がある方がいらっしゃいましたら、
    クラッシュの経験とか教えて下さると助かります。
    5億とまでいかなくても1億件でもいいです。

    処理時間は、ある程度待ってもらえるそうです。
    パソコンは数台用意して下さるそうなので、
    計算している間に他の計算をしていたりするそうです。
    227 : NAME IS - 2008/08/06(水) 09:38:03 ID:p7qhAkhK (+27,+29,-112)
    そのクラッシュの原因がMySQLのせいなのか
    ファイルシステムの問題だったのかわからないけど,
    念のため一方向レプリケーションしておくとかで
    バックアップ代りにならないかな?

    バックアップ目的ではないけど,
    Facebook では巨大なデータベースを
    西海岸側と東海岸側でレプリケーションしているみたいだよ.
    http://www.sqlplex.com/articles/mysql/announcements/keeping-up-facebook-scaling-and-replication-with-mysql.html
    ちょっと作りこみは入ってるみたいだけど.
    228 : NAME IS - 2008/08/06(水) 09:48:25 ID:??? (-25,-30,+0)
    >>227
    レプリケーションいいね。ちょっと、それも組んでみる。

    ちなみに、以前クラッシュした時のログが残っているから、一応貼っときます。
    自分にとっては意味がないけど・・・。突然クラッシュして、起動にも失敗するようになり、
    セーフモードで起動して、そのテーブルをdropして回復した。結局700万件のデータはパーになった。
    InnoDBだから、テーブルの安全性には信頼を置いていたんだが。
    趣味だからよかったけど(バックアップもあったし)、業務なら辛い。数時間停止したらクレーム対応が辛い。

    071102 9:58:29 InnoDB: Database was not shut down normally!
    InnoDB: Starting crash recovery.
    InnoDB: Reading tablespace information from the .ibd files...
    InnoDB: Restoring possible half-written data pages from the doublewrite
    InnoDB: buffer...
    071102 9:58:30 InnoDB: ERROR: We were only able to scan the log up to
    InnoDB: 12 1142088704, but a checkpoint was at 12 1142088979.
    InnoDB: It is possible that the database is now corrupt!
    071102 9:58:31 InnoDB: Error: page 2 log sequence number 12 1167329819
    InnoDB: is in the future! Current system log sequence number 12 1142088979.
    InnoDB: Your database may be corrupt or you may have copied the InnoDB
    InnoDB: tablespace but not the InnoDB log files. See
    InnoDB:http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
    InnoDB: for more information.

    原因わかります?
    229 : NAME IS - 2008/08/06(水) 11:08:10 ID:??? (+32,+29,-206)
    ローカルならロック機構とかいらねぇし、大抵MyISAMのほうがいいんじゃないの?
    インデックスをきちんと張って、メモリが足りてれば捌ける。問題なし。

    うちの会社ではMySQL4を改造してパラレル化してン100億レコード突っ込んでるけど、
    ディスクエラーが出るなんつーことはない。他に原因があるはずだ。

    億単位のレコードのレプリケーションはお勧めしない。
    時間がかかるし、レプリケーションが壊れたときの復旧や増築が大変すぎる。
    全部ダンプする羽目になるんだぜ?
    MyISAMにしてファイルコピーのほうが楽。
    231 : NAME IS - 2008/08/06(水) 12:10:34 ID:??? (-27,-29,-3)
    がりがりアップデートするのにMyISAM?
    232 : NAME IS - 2008/08/06(水) 12:22:44 ID:??? (+18,+29,+0)
    >>231
    だめな理由をどうぞ
    233 : NAME IS - 2008/08/06(水) 16:21:41 ID:??? (-26,-29,-63)
    バッチなら問題ないかも。すまん。
    ユーザのアクションに対して書き込むようなのだと、待ちが頻発して面倒だったんだ。
    あと、concurrent_insertsがfixedじゃないと駄目な気がしてた。違ったけど。
    dynamicだとoptimizeが大変だなーとか、そんな程度。
    237 : NAME IS - 2008/08/07(木) 00:33:41 ID:Ozd0b/vL (+29,+29,-44)
    すいません。

    リレーションを組む必要ってあるのでしょうか。
    JOINで対応することは設計する上では煩雑となるのでしょうか。
    238 : NAME IS - 2008/08/07(木) 08:49:41 ID:??? (+31,+29,-8)
    >>237 要件に合わせて好きにしれ。拡張性、保守性なんかも考えてね。
    239 : NAME IS - 2008/08/07(木) 08:52:25 ID:??? (+27,+29,-29)
    ヒント
    ・使われるインデックスは1テーブルにつき1つだけ
    ・一対多の結合
    ・矛盾の判定
    247 : NAME IS - 2008/08/08(金) 13:43:24 ID:9XXcJabs (-20,+29,-41)
    >>246
    有り難う御座います。英語のマニュアルは読んでいません。
    日本語のマニュアルはWebのは見ました。
    tableを触らないものでは更新されないよ、という意味でしょうか?

    ただ、解決しました。大変申し訳ありません。
    プログラムが漏れてました。ホントすみません m(_ _)m
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1 + - mysqldump + - rXBUq5sa + - share + - utf8_bin + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について