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

    私的良スレ書庫

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

    元スレMySQL 総合 Part12

    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
    701 : NAME IS - 2007/12/30(日) 09:06:39 ID:??? (-17,-15,-1)
    そういうときはEXPLAINして違いを見ようぜ
    702 : 699 - 2007/12/30(日) 15:15:42 ID:??? (-26,-29,-44)
    理由が分かりました。結合先のtest_tbのaaa_id中に
    重複した値があったのが原因のようです。

    今まで勘違いしていたのですが、一意のデータが多いほど
    結合時の読み込みも早いんですね。前は逆だと思ってました・・。
    703 : NAME IS - 2007/12/30(日) 15:27:52 ID:??? (+17,+21,+1)
    >>697-698
    ありがとう 試してみます
    704 : NAME IS - 2007/12/31(月) 15:35:52 ID:5qw/Iwgf (+15,+30,+0)
    705 : NAME IS - 2008/01/04(金) 14:05:51 ID:??? (-27,-30,-92)
    Mysql 5.0.45
    alter table hogehoge change ~ でカラムをリネームしようとすると
    ERROR 1025 (HY000) Error on rename of '.\detabase\#sql-244_7' to
    ' .\database\hogehoge' (error: 150)

    というエラーメッセージが出るんですけど、ひょっとしてプライマリキーに
    なってたり外部制約に使われているカラムって名前の変更が出来ない?
    707 : NAME IS - 2008/01/05(土) 02:55:27 ID:??? (-6,-29,-57)
    メールサーバを管理しているのですが、
    監視ログにmysqlのエラーで

    Too many connections

    とメールが来ました。
    mysqlが外部から待ちかまえるデーモン数を少し増やして様子をみたいのですが、
    どこで調整できるのでしょうか?
    709 : NAME IS - 2008/01/05(土) 03:08:18 ID:??? (-27,-30,+0)
    A.2.6. Too many connections エラー
    MySQL に接続しようとして Too many connections エラーが発生する場合は、すでに mysqld サーバに接続している max_connections クライアントが存在しています。

    デフォルト(100)より多い接続を行う場合は、max_connections 変数の値を 100 より大きくして、mysqld を再起動する必要があります。

    実際は、mysqld では(max_connections+1)クライアントの接続が許可されています。最後の接続は、SUPER 特権のあるユーザ用に予約されています。
    一般ユーザにこの特権を与えないことによって(一般ユーザにこの特権は必要ありません)、
    この特権のある管理者はログインして、SHOW PROCESSLIST を使用して問題を見つけることができます。
    See 項4.6.8.6. 「SHOW PROCESSLIST」。

    MySQL 接続の最大数は、スレッドライブラリが特定のプラットフォームでどの程度まで有用であるかに依存します。
    Linux または Solaris では、使用している RAM のサイズと、クライアントが何を実行しているかによって、500 ? 1000 の同時接続をサポートできます。
    710 : 707 - 2008/01/05(土) 03:29:23 ID:??? (+27,+29,-6)
    ありがとうございます。
    早速変更して様子をみたいと思います。
    思ったより、スパムの接続数が多いみたいです。
    712 : NAME IS - 2008/01/05(土) 16:57:52 ID:5Gpulnqz (+28,+29,-126)
    すいません。バカな漏れをすくってください。
    以前、MySQLをインストールして、失敗し、やむなく消去して。
    XAMPPをいれたんですけど。
    MySQLにつなぐと。
    access violation なんちゃら~libmysql.dll~なんちゃら
    と、何回もエラーがでて、そのうち操作不能になります。
    コマンドでsc delete MySQLとかやってみたり、
    管理ツールとかもしてみたんですが、
    なおりません。
    ともだちに聞いたら、クリーンインストールしかないんじゃない
    とのことなんですが。
    ちょっと消しちゃまずいものもあったりするんで。
    バックアップに不安感もあって、ふみきれません。
    どうか、たすけてください。

    あと、5日前くらいからはじめたばかりなので。
    初心者すぎて、書いてることも、自分でもよくわかりきってないんで。
    そのへん、ほんとうに、すみません。
    713 : NAME IS - 2008/01/05(土) 17:00:41 ID:??? (+28,+29,-2)
    窓からパソコン投げれば良いと思う
    714 : NAME IS - 2008/01/05(土) 17:04:38 ID:5Gpulnqz (+31,+29,-2)
    >>713
    そうとうそういう衝動おさえてますww
    715 : NAME IS - 2008/01/05(土) 17:24:20 ID:??? (+33,+29,-37)
    親切な自分がいい方法を教えてあげよう。
    お年玉で新しいPCを買え(w
    716 : NAME IS - 2008/01/05(土) 17:34:51 ID:5Gpulnqz (+32,+29,-11)
    >>715
    ききたくなかったwwww
    そのもっとも正論を、ききたくなかったww
    717 : NAME IS - 2008/01/05(土) 18:05:21 ID:??? (-19,-29,-95)
    >>712
    XAMPPをまずアンインストールする

    次に、スタートメニューから検索を選んで
    ファイルとフォルダすべて を選び、libmysql.dllを探す
    見つかったlibmysql.dllは全て不要なので 全部ごみ箱に入れる

    そのあと、XAMPPをもう一度インストールする



    これで多分直るので、ちゃんと動いたのを確認したら
    Cドライブをフォーマットして窓からPCを投げ捨てろ
    718 : NAME IS - 2008/01/05(土) 20:42:54 ID:Ible2iRH (+18,+30,+0)
    719 : NAME IS - 2008/01/05(土) 21:35:56 ID:??? (-27,-30,-54)
    mysqlでPostgreSQLの
    Explain analyzeと同じような結果を得ることはできないでしょうか?

    phpでSelect文の実行速度をmysqlから得たいのですが、
    その方法がわかりません。
    720 : NAME IS - 2008/01/06(日) 00:57:20 ID:2gK1qWP1 (+29,+30,-32)
    >>717さん。
    本当に感謝します。
    今、ガチで地面に頭つけて土下座しました。
    これは、完全に本当です。ありがとうございます。
    そして>>718さん。
    すかさずのジョーク、笑わせていただきました。
    ありがとうございます。
    722 : NAME IS - 2008/01/06(日) 10:46:00 ID:??? (+29,+29,-18)
    そもそもの設計が間違ってるんじゃね? としかいいようがない。
    EXPLAINしてみた?

    ちなみにインデックス張ってると更新は重くなるよ。
    725 : NAME IS - 2008/01/06(日) 14:46:54 ID:??? (+1,-1,-6)
    SQLの勉強しろよ。
    IN を使えばいいでしょ。
    726 : NAME IS - 2008/01/06(日) 17:57:57 ID:??? (+32,+29,-84)
    複数のカラムでOrder Byするとインデックスが無視されてしまいますが
    どうやったって複数の項目でソートせざるを得ないときはどうしますか?

    単純な数値のキー二つなら足したりかけたりして一つのカラムに
    まとめたりすることも出来ますが、日時と数字だったりすると
    相当面倒くさいです。ソートだけに。
    727 : NAME IS - 2008/01/06(日) 18:09:16 ID:??? (-2,+4,-17)
    複数の項目のインデックスを張る
    728 : NAME IS - 2008/01/06(日) 18:12:17 ID:??? (+26,+28,+0)
    >>725
    すみません。勉強不足でした。
    INで出来ました。ありがとうございました。
    729 : NAME IS - 2008/01/06(日) 19:40:36 ID:??? (-19,-29,-61)
    >>721
    百万件以上、数百万件くらいになると、どう正規化しても遅くなる。
    あとメンテナンス性も落ちる。
    後半に書いているように、データの水平パーティショニングが必要。
    大規模なMySQL運用してるところならどこでもやってる。
    (例: mixi、Yahoo! J、livedoor、live Journal)
    730 : NAME IS - 2008/01/06(日) 21:56:49 ID:??? (+24,+23,-54)
    >>729
    参照主体ならレプリケーションでも十分対応できるんじゃね?
    更新主体だとそうもいかんけど。

    5.1使うとその辺楽できていいよね。
    731 : NAME IS - 2008/01/06(日) 22:23:46 ID:??? (+40,+29,-202)
    >>722>>723 >>729>>730
    アドバイスどうもありがとうございました。
    EXPLAINで最適化をしたのですが、どうしてもスピードが劣化してしまします。
    このペースで1000万件良くと大変なことになりそうなので、策を考えていました。

    >>729さんに教えて頂いたパーティション初耳だったのですが、マニュアルを見たらすごく便利ですね。
    私は同じテーブルを複製してPGで参照テーブルを決定することを考えていたのですが、
    DB側で透過的に負荷分散してくれるこのやり方は最高です。

    いま問題になっているのは、会員の購入履歴みたいなもので、会員IDと購入品目などが並んでいます。
    会員IDにINDEXを指定していて、会員IDをキーに購入履歴を参照しています。(実際には条件がもう少し複雑です)

    このような用途で、会員別にパーティションにしたいのですが、
    その場合は、「15.2.3. HASH 分割」がベストということで宜しいでしょうか?
    http://dev.mysql.com/doc/refman/5.1/ja/partitioning-hash.html
    732 : NAME IS - 2008/01/06(日) 22:27:33 ID:??? (+36,+29,-58)
    >>730
    アドバイスありがとうございました。
    >参照主体ならレプリケーションでも十分対応できるんじゃね?
    残念ながら両方なんです。
    参照もしながら更新もするテーブルでして、参照も更新も半々で、
    それでいてデータ数も2年後には1000万件いく勢いなので・・・
    733 : NAME IS - 2008/01/06(日) 22:54:32 ID:??? (+43,+29,-78)
    >>731
    思うんだけど、購入履歴は「過去○件まで」として
    それ以上は削除したら良いんじゃないか?
    で、購入履歴からこれまでの注文金額を割り出しているのなら
    それを止めて、購入合計金額テーブル+購入履歴にするとか。

    俺はそうしてるよ。じゃないと、履歴のログがたまりすぎる。
    734 : NAME IS - 2008/01/06(日) 23:19:24 ID:??? (+43,+30,-104)
    >>733
    返事ありがとうございます。
    そうですね、確かにそうしたいのですが、そのテーブルが過去の取引記録を修正する必要がある特殊なもので、
    更にその取引履歴がないと他の処理の際に非常に困るケースがありまして、
    そのテーブルを今の形以上に最適化?するのが難しいんです。

    なので、将来的にそれが1億件とか溜まったらどうするの?って問題もあるのですが、
    それに対応するのは、同じ構造のテーブルを複製して負荷分散するしかないのかなぁ、と思ったのが最初の考えだったんです。
    735 : NAME IS - 2008/01/07(月) 01:36:20 ID:??? (+33,+29,-31)
    >>734
    例え1億件溜まったとしても、それに全件対象で
    検索なんてまずしないでしょうし、回避方法いくらでもあるでしょう。
    しかもその9割以上はもう更新されない固定データのはずです。
    736 : NAME IS - 2008/01/07(月) 01:38:54 ID:??? (-9,-7,-46)
    パーティションは5.1新機能で、5.1はまだβなので
    使うなら人柱の覚悟が必要。
    mixiとかは自前でパーティション相当の機能を実装してる。
    737 : NAME IS - 2008/01/07(月) 03:53:34 ID:??? (+31,+29,-54)
    最適化云々の前に、どう考えても設計にミスがあると思うんだが・・。
    mixiほどの会員数でもないだろうし。せいぜい1万人前後だろ。
    738 : NAME IS - 2008/01/07(月) 03:54:51 ID:??? (+22,+29,-1)
    単位は人じゃないと思う
    739 : 729 - 2008/01/07(月) 11:54:16 ID:??? (+33,+24,-106)
    >>731
    まいったな。
    5.1新機能の『水平パーティショニング』じゃなくて、MySQLサーバ複数に
    同じテーブル用意して、プログラムで参照先を変える、
    手動(?)水平パーティショニングのつもりで書いた。
    その場合、ユーザテーブルにデータクラスタidのカラムを増やすことになる。
    736の言うように、5.1はまだRC1だからなぁ。

    >>737
    会員数じゃない。
    745 : NAME IS - 2008/01/08(火) 13:14:22 ID:??? (+13,+30,+0)
    748 : NAME IS - 2008/01/08(火) 19:06:40 ID:??? (-11,-30,-110)
    mysqlを3.23→4.1.x→5.045にアップデートしたのですが
    --skip-grant-tablesをオプションをつけないと
    起動しても今までのがうまく動きません
    多分ユーザーパスワード関連の問題だとは思うのですが・・・

    ユーザーテーブルの拡張は4.1系にアップデートした時に変換しました

    --skip-grant-tablesを付けずに起動させて
    ちゃんと動くようにするにはどうすればいいのでしょう?
    因みに1ユーザーだけパスの変更ができないのがあります
    あと、[mysqld]にold-password=1を指定してみてもだめでした
    749 : NAME IS - 2008/01/08(火) 23:44:58 ID:??? (+25,+29,-17)
    >>748
    「うまく動きません」の内容を詳しく。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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