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

    元スレMySQL 総合 Part18

    mysql覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - megab + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    952 = :

    普通は3番でも、>>946がやる3番は、何か違うものになりそうな気がする・・・

    953 = :

    >>944
    実は必須ではないんだぜ。

    962 :

    バッチで30個のテーブルに1万件ずつほどのデータを登録しようと思っています。
    バッチで登録処理を行なっている間も他のプログラムからテーブルへの
    参照が行われる事が考えられるのでトランザクションを貼ろうと考えていますが、
    beginをバッチの開始直後,commitをバッチの終了時に行うと
    凄くパフォーマンスが悪いように思えます。
    テーブル単位でトランザクションを貼ると、
    他のプログラムから参照を行ったときに
    テーブル間のデータの不整合が発生することが考えられるのですが、
    みなさんはこういう場合はどの様に設計されますか?

    963 = :

    >>962

    > バッチで登録処理を行なっている間も他のプログラムからテーブルへの
    > 参照が行われる事が考えられるのでトランザクションを貼ろうと考えていますが、

    参照が行われるからトランザクションを使う?
    その発想にいたる背景がわからないので答え難い。

    安易にバッチ処理での登録と考える前に、
    登録処理中にテーブル参照されることで発生する不都合が何かを考慮してから、
    データ登録の方法を考えるべきだと思います。

    964 = :

    >>963

    言葉足らずで申し訳ありません。

    テーブルを参照するプログラムは
    データの集計を行うプログラムになります。
    Aというテーブルではバッチからの更新が終了しているけれど
    Bというテーブルではまだバッチで更新中となっている場合
    HOGEというプログラムが両方のテーブルの情報を集計するとなると
    テーブル間の不整合が発生するのでトランザクションを使用しています。

    そして今回はバッチで登録・更新をするテーブルの数が多いので
    >>962にあるような質問をさせていただきました。

    965 = :

    HOGE というプログラムが、テーブルAとテーブルBを参照するんですね?
    そのHOGEというプログラムが、テーブルAとテーブルBに登録処理をしている最中でも稼動するんですね?

    HOGE というプログラムがシステムの中で重要度が高いのであれば…

    テーブルAとテーブルBにデータを登録する際には、HOGEというプログラムを考慮して、
    テーブルAとBへのデータ登録は両テーブルの整合性が取れている状態として1件ごとに処理をする。

    そんな方法を検討する可能性も有ります。

    述べられている「参照するプログラム」が出力する結果が、そのシステムでどれだけ重要であるかを考慮する必要があります。

    逆の意味で述べれば、テーブル更新が終了する前に、システムとして重要な出力結果を出すHOGEを実行しない、これが適切だとも言えます。

    966 = :

    初歩的な質問ですが探してもわからなかったので質問します
    MySQL5.1をInnoDB Pluginで使っていますが、
    1つのテーブルのカラム数は大体このくらいまでにしておいた方が良い、ってのはありますか?
    扱うデータが多くて、素直に組むとカラム数が200ぐらいになるのですが
    これが1億レコードぐらいになると、パフォーマンスに結構影響しますか?
    経験がなくてわからないので、皆さんの意見を聞きたいです

    968 = :

    >>964
    別にバッチ処理中か確認するようにすれば?
    別テーブルにフラグみたいなもん立てるとか。

    969 = :

    素直にトランザクションで解決してなにが悪いのかワカラン。
    コミットに時間がかかってもバッチ処理なら問題ないだろうし。

    974 = :

    >>971

    > カーソルを使って、1件ずつ読みだして処理する。。
    > MySQLで同じような処理を行おうと思いましたが、
    > カーソルに対応していないことを知りました。

    あなたの言われている「カーソルに対応していない」とは、何を指しているのか理解できません。

    975 = :

    >>974
    カーソル知らないの?
    1行ずつフェッチして、更新したりできるんだよ、大量データを逐次処理できるの

    976 = :

    > カーソルに対応していない

    カーソルは知っているけれども、対応していないが漠然としているのでは?

    979 = :

    >>978
    http://dev.mysql.com/doc/refman/5.1/ja/cursors.html

    980 = :

    >>979
    それ、ストアドだって。
    もともと、Cライブラリでカーソルとかいうことじゃね?

    983 = :

    >>965
    レスありがとうございます。
    >HOGE というプログラムが、テーブルAとテーブルBを参照するんですね?
    そうです。
    >そのHOGEというプログラムが、テーブルAとテーブルBに登録処理をしている最中でも稼動するんですね?
    そうです。

    >テーブル更新が終了する前に、システムとして重要な出力結果を出すHOGEを実行しない、これが適切だとも言えます。
    こちらの方法を検討してみようかと思っています。
    ただ、バッチは30分近くかかりそうなので、
    その間HOGEが実行されないのが業務用件的にNGになりそうな気配もあります。


    >>968
    ありがとうございます。
    その方向で少し検討してみます。

    >>969
    大量のデータを登録・更新するときって
    トランザクションをずーっと貼りつづけていると
    すこぶるパフォーマンスが落ちることってありませんか?
    あ、バックグラウンドのバッチだからそんなの気にしなくてもいいじゃないかって
    ことでしょうか?

    984 = :

    >>983
    > >>969
    > 大量のデータを登録・更新するときって
    > トランザクションをずーっと貼りつづけていると
    > すこぶるパフォーマンスが落ちることってありませんか?

    InnoDBのMVCCはそこまでアホな実装じゃない。
    バッチだから仮に遅くても気にしなくていいってのはそう思うし。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - megab + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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