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

    私的良スレ書庫

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

    元スレMySQL 総合 Part20

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    501 : NAME IS - 2011/08/24(水) 08:06:57.39 ID:??? (+3,-30,-125)
    temporaryが遅いとな。
    ストレージエンジンはMYISAM、MEMORY?

    テンポラリーテーブルに限った話ではないけれど
    InooDBPlugingが標準になったので
    初期状態で立ち上げると確かに重くはなってる気がしますね。
    (DEFAULT_STORAGE_ENGINEは相変わらずMISAM?だけど)

    今のハードに併せてきたんじゃないかなと予想。

    502 : NAME IS - 2011/08/24(水) 09:29:14.04 ID:??? (-1,-29,-16)
    ほんとにTEMPORARY遅いなら調べるけど。
    再現ケース欲しいな
    503 : NAME IS - 2011/08/24(水) 21:05:30.33 ID:??? (+3,-30,-92)
    結局皆MySQL5.5導入してるの?
    俺は一応Linuxにcmakeでインストールして単純な動作確認だけはしたけど、まだ5.1使ってる
    マイナーだろうけどmMeasure使ったりしてるんで
    これ5.0、5.1、とインストール方法が変わるので、おそらく5.5では利用できないんだろうなと思って
    cacti、munin等は試していないけれど
    あと、バージョンの問題だったかもしれないけれど、ソースからインストール後起動時に何度かエラーが出て解決できなかった事もあった
    5.1では一度も無かったけれど
    504 : 500 - 2011/08/25(木) 00:59:23.78 ID:??? (+34,-30,-238)
    500です。
    チェーン店の日別店別の商品売り上げテーブルなんだが、

    date date
    store_id smallint
    item_id mediumint
    sales mediumint

    って感じ。
    10店舗くらいあって、指定商品が各店の売上ランキング何位にあるのかを割り出すのに

    指定期間の商品別の売上順に集計したtemporary tableを作って
    @i=0;
    create temporary table `t1` select (@i:=@i+1)as`rank`,SUM(`sales`)as`sales`,`item_id` form `table` where `date` between 'A' and 'B' and store_id=1 group by `item_id` order by `sales` desc;
    って感じで。
    で、そこから指定のitem_idを条件に rank を出す。
    これを店舗回繰り返す。
    505 : 500 - 2011/08/25(木) 01:02:09.08 ID:??? (+3,-30,-158)
    テンポラリテーブル作成を繰り返すから、5.1よりめちゃめちゃ時間かかってしまった。
    5.1だと1秒未満で5.5だと5秒以上かかった。

    日付指定が変動したり、カテゴリで絞ったりで、事前に値を出しておけないので、このようなことをしてたけど、
    今は日付の期間指定させないで、日別、週別、月別のサマリテーブルに順位いれて、そこから選ばせるようにしてる。

    まぁ、設計や方法がアホだったと思うけど、ようは5.5のテンポラリーテーブルは遅い、ってのはここで強く感じたわけです。

    ちなみに、5.1、5.5ともにInnoDB plugin でbuffer poolは5GBくらい。
    tmp_table_sizeもmax_heap_table_sizeも 512MBくらい割り当ててた。
    506 : NAME IS - 2011/08/25(木) 01:12:28.91 ID:??? (+57,+29,-15)
    5.5のテンポラリーテーブルが遅いってのは本当なのか?
    何か回避策があるんじゃないのか?
    507 : NAME IS - 2011/08/25(木) 08:00:14.32 ID:??? (+8,-20,-15)
    OSとファイルシステムは同じ?
    508 : NAME IS - 2011/08/25(木) 11:22:51.47 ID:??? (+67,+28,+0)
    >>504
    indexの付け方が悪いんだろ。
    509 : NAME IS - 2011/08/25(木) 12:00:46.70 ID:??? (+9,-30,-182)
    >>507
    ファイルシステムはubuntuだとext4で、
    Macはデフォルトです。

    >>508
    Indexは、
    date=index
    store_id,date=index
    item_id,date,store_id=primary
    にそれぞれついてます。

    たとえなにかおかしくても、5.1と5.5でまったく同じ環境でやってるので、
    どちらにも同じように事象は起きるはずですが。

    5.1はOSのパッケージ管理でインストール。
    5.5は遅かったので、パッケージ管理と公式サイトからバイナリ、の2種類で試しました。が、結果は同様でした。

    あと、5.1で作ったテーブルをそのまま5.5で共用しました。5.5で何か変更があって互換性に問題が起きてるんでしょうかね。
    ファイルフォーマットはBarracuda。
    510 : NAME IS - 2011/08/25(木) 21:37:31.39 ID:??? (-6,-29,-17)

    my.cnfのdiffを晒してくれ
    511 : NAME IS - 2011/08/25(木) 23:25:05.78 ID:??? (+52,+29,-18)
    個人情報を晒すのは御勘弁ください。
    512 : NAME IS - 2011/08/26(金) 17:20:44.67 ID:??? (+7,-29,-63)
    key_buffer_size というのはMyIsam用にあるインデックスを保存しておくバッファ
    の大きさを指定するパラメータみたいですけど、Innodb用にはそれに該当する
    パラメータは無いのでしょうか?

    513 : NAME IS - 2011/08/26(金) 19:32:04.95 ID:??? (+24,-30,-18)
    >>512
    innodb_buffer_pool_size
    インデックスもテーブル本体もこれ
    514 : NAME IS - 2011/08/26(金) 19:58:34.25 ID:??? (+45,+18,+3)
    >>513
    ありがとうございます
    515 : NAME IS - 2011/08/27(土) 17:29:18.93 ID:??? (+3,-30,-45)
    日付についての質問です。
    year,month,dayで3つのIntegerフィールドを定義するのと、Dateフィールドを1つ定義するのとでは、
    年+月または年+月+日でSelectする場合どちらが高速にできるのでしょうか?

    できるだけ高速にSelectしたのです
    516 : NAME IS - 2011/08/27(土) 17:33:15.32 ID:??? (+49,+26,-3)
    試した方が早くね?
    517 : NAME IS - 2011/08/27(土) 17:50:18.06 ID:??? (+13,-9,+2)
    Dateフィールドを1つ
    518 : NAME IS - 2011/08/27(土) 19:01:55.02 ID:??? (-1,-29,-12)
    year,month,dayの数字を各桁ごとに分解し、それぞれを2進数化してTextフィールドに納めるのが良い
    519 : NAME IS - 2011/08/27(土) 19:34:29.26 ID:??? (-6,-29,-2)
    time_t だろ常考
    520 : NAME IS - 2011/08/27(土) 20:09:52.23 ID:??? (+57,+29,-14)
    DATE型の内部表現は3バイトの整数なんでしょ
    他の型で代用するとかえって遅くならね?
    521 : NAME IS - 2011/08/27(土) 21:30:02.18 ID:??? (+36,-30,-46)
    DATEだと、毎年2月とか、毎月5日とか飛び飛びのデータを集計するのがつらい。
    Y/M/Dだと、2010/12/25~2011/1/15といった、月またがり、年またがりの
    データを集計するのがつらい。
    どういう集計をしたいのかによって考えるべき。両方つけてもよい
    522 : NAME IS - 2011/08/27(土) 21:53:26.60 ID:??? (-6,-29,-3)
    固定文字列8桁でいいじゃん
    523 : NAME IS - 2011/08/27(土) 22:50:35.76 ID:??? (+51,+24,-2)
    8桁の数値にしてるわ。スッゲー楽。
    524 : NAME IS - 2011/08/27(土) 23:06:16.21 ID:??? (+4,-29,-39)
    >>523
    毎月5日とか10月とかは、文字列ならsubstrとかrightで抽出できそうだけど、数値のときはどうやるの?
    525 : NAME IS - 2011/08/28(日) 03:25:49.87 ID:??? (+62,+29,-34)
    >>521
    > DATEだと、毎年2月とか、毎月5日とか飛び飛びのデータを集計するのがつらい。
    5日締め毎に集計って事ですか?
    何が辛いのか分からないので詳しく教えて下さい
    526 : NAME IS - 2011/08/28(日) 03:53:49.21 ID:??? (+56,+28,-26)
    2月29日の有無とか11月31日とか
    3月3日の一週間前とか

    クライアントソフト側できっちり丸められれば良いねぇ
    527 : NAME IS - 2011/08/28(日) 09:19:42.91 ID:??? (+3,-29,-37)
    day of monthで検索するなら、フィールドを分けておけば(日,月,年)なんてindexを張れて便利。
    DBMSによっては関数インデックスが使えるからその場合はdateでもいけるけど、
    MySQLだとたしか使えない。
    529 : NAME IS - 2011/08/29(月) 12:17:31.58 ID:??? (-1,-29,-14)
    insert updateを3つかく
    530 : NAME IS - 2011/08/29(月) 13:04:17.44 ID:??? (+41,+18,+0)
    トリガーでも使えば
    531 : NAME IS - 2011/08/29(月) 14:15:48.09 ID:??? (-11,-29,-36)
    >>528
    どんなデータいれるんだ?
    KeyValueでいいならhandlersocketで幸せになるんじゃね?
    532 : NAME IS - 2011/08/29(月) 14:34:24.88 ID:??? (-1,-29,-16)
    insert updateを4つかく
    533 : NAME IS - 2011/08/29(月) 17:17:51.01 ID:??? (+57,+29,-2)
    トリガでできそうですね!勉強してみます。
    ありがとうございます。
    534 : 忍法帖【Lv= - 2011/08/29(月) 17:30:19.06 ID:??? (+59,-29,-24)
    MySQLは100万件程度のレコードでの運用は問題ないでしょうか?
    ユーザは20名程度です。
    535 : NAME IS - 2011/08/29(月) 19:23:10.00 ID:??? (+57,+29,-12)
    とりあえず、
    訪問者数、日に300人前後。
    収録データ数は800万ちょい超え
    というショボ目のwebサイトは普通に動いてるよ。
    536 : NAME IS - 2011/08/29(月) 20:21:32.73 ID:??? (+49,-29,-6)
    innodbも定期的にoptimize tableやったほうがいいの?
    537 : NAME IS - 2011/08/29(月) 21:23:29.89 ID:??? (+92,+29,-17)
    >>536
    大量DELETEした場合はやっておいてもいい。
    やらんでも困ることはまずない
    538 : NAME IS - 2011/08/29(月) 21:46:24.05 ID:??? (+49,+17,+1)
    >>534
    MS製品以外は普通大丈夫
    539 : 536 - 2011/08/29(月) 21:57:45.10 ID:??? (+48,+20,+1)
    >>357
    ありがと!
    540 : 536 - 2011/08/29(月) 21:58:57.84 ID:??? (+63,+27,+0)
    ごめん>>537
    541 : NAME IS - 2011/08/29(月) 22:00:04.07 ID:??? (+47,+29,+0)
    絶対に許さない
    543 : NAME IS - 2011/08/30(火) 09:02:01.88 ID:??? (-1,-29,-2)
    数千件レベルならMSAccessでもなんとか
    544 : NAME IS - 2011/08/30(火) 10:10:36.49 ID:??? (-1,-29,-2)
    ちなみにSQL Serverだとどんなもん?
    545 : NAME IS - 2011/08/30(火) 10:28:10.01 ID:??? (-1,-29,-25)
    542はMySQLの管理をAccessでっていう意味だと思ってたが違うのか
    546 : NAME IS - 2011/08/30(火) 10:59:10.65 ID:??? (+91,+29,-6)
    MySQLってなんだよ
    さっぱり解からん
    サルにも解かるように教えてくれ
    547 : NAME IS - 2011/08/30(火) 12:13:44.04 ID:??? (+50,+27,+0)
    サルには必要ねーよ
    548 : NAME IS - 2011/08/30(火) 13:48:31.73 ID:??? (+69,+29,-11)
    >>546
    MySQLってのは、MySQLの作者の娘(まいちゃん)から取った名前だよ
    549 : NAME IS - 2011/08/30(火) 15:28:15.38 ID:??? (-1,-29,-6)
    MariaDBみたいなもんか
    MAISQLに改名しる
    550 : NAME IS - 2011/08/30(火) 15:34:50.25 ID:??? (+65,+29,-30)
    >>534
    運用というか分析系には弱いね
    そういう用途ならSQLServerのほうが向いているかと
    予算がカツカツとかいう事情があるならPostgresでも入れるべし
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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