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

    私的良スレ書庫

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

    元スレMySQL 総合 Part17

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    653 : NAME IS - 2010/03/28(日) 18:51:10 ID:??? (-22,-30,-49)
    jikoku は TIME型、
    今日の日付とデータベースの時刻から日時を作り出したいんだけど

    SELECT ADDTIME( CURDATE(), jikoku ) FROM unko;
    ってやったら 0000-00-00 00:00:00 になっちゃう。なんでだ?
    654 : NAME IS - 2010/03/28(日) 20:04:39 ID:??? (+24,+29,-6)
    >>653
    第1引数は、時刻型か日付時刻型だど。
    655 : NAME IS - 2010/03/28(日) 20:43:55 ID:??? (+32,+29,-48)
    データを保持してるテーブルに対して、カラム名を変更したり型を変えると中身のデータはどうなるのでしょうか?
    カラムを削除したらそのカラムに関するデータが失われるだけですか?
    656 : NAME IS - 2010/03/28(日) 20:47:57 ID:??? (+37,+28,-12)
    >>655
    ALTERでMODIFYしてる分には失われないよ
    サイズとか種類とか変えるとそれにあわせて
    欠損したりするけど大体はまあいける。
    657 : 0 - 2010/03/28(日) 21:02:27 ID:??? (+37,+29,-47)
    >>656
    ありがとうございます。
    データの型を変えてもデータが失われないというのは意外でした。
    実は会社のデータベースをいじる業務を任されましてテーブルの型を変えるのが怖かったのです。
    動作中のWebサービスのテーブル構造を変えるのはよく行われることなのでしょうか?
    658 : NAME IS - 2010/03/28(日) 21:47:48 ID:??? (+32,+29,-48)
    型変更中はテーブルロックがかかりシステムが停止しますので、
    行われません。

    別のところできちんとテスト、リハーサルをして
    データのバックアップを取って何が起こってもいいようにしてから
    取り組みましょう。
    659 : 0 - 2010/03/28(日) 21:52:20 ID:??? (+27,+29,-24)
    おおなるほど…アドバイスありがとうございました。
    カラムを変える時はバックアップ取って慎重に行うようにします。
    661 : NAME IS - 2010/03/29(月) 05:06:35 ID:??? (-26,-29,-58)
    Bash等で、ディレクトリやファイルの引数リストを */*とかにした場合は、
    コマンドに渡る前にbashが各ディレクトリ/ファイルに展開してからコマンドに渡す。
    662 : NAME IS - 2010/03/29(月) 05:23:06 ID:??? (-29,-30,-42)
    質問させてください。
    3つのフィールドfieldA,fieldB,fieldCがあるとします。
    fieldAとfieldBはINT型です。
    fieldC = fieldA +fieldB
    としたい場合、fieldCはどのようにCREATEしたら良いでしょうか?
    663 : NAME IS - 2010/03/29(月) 05:45:27 ID:??? (+24,+29,+1)
    >>661
    そういうことだったのですか
    ありがとうございました
    665 : NAME IS - 2010/03/29(月) 14:23:33 ID:??? (+33,+30,-93)
    テーブル考えるのも難しいね。
    できるだけ幅広く対応できるようにリレーショナル組むと
    ばっらばらで、どこに何のデータがあるのかわからなくなるし、一気に複数のテーブルを
    読み込んで最終的にデータが重くなる。

    かといってシンプルに組もうと思うとあとで拡張するのがしんどくなる。
    テーブルの組み方もやっぱりセンスなのかな?

    みんなはどう?
    一度組んであーしとけばよかったー・・・って思うときある?
    667 : NAME IS - 2010/03/30(火) 08:49:39 ID:??? (-17,-30,-113)
    5.1.42 WinXP
    my.iniで

    [mysqld]
    transaction-isolation = SERIALIZABLE

    にしたんだけど、それが指定されたことってコマンドではどうやって確認出来ます?

    show variables;

    だと件数が多すぎて判らんっすw
    669 : NAME IS - 2010/03/30(火) 18:19:01 ID:??? (-19,-29,-95)
    会社のシステムのMySQLのパフォーマンス調査をしています。
    ログを調べてみると大量のデータが入ったテーブルから
    SELECT * FROM ~~~ LIMIT 1
    というSQLでデータを取得しているクエリがたくさんあったのが気になりました。
    LIMIT 1という指定は対象テーブルに含まれるデータ量に関係なく
    1件のデータを読むだけの処理になるのでしょうか?
    あるいは重い処理になりますか?
    670 : NAME IS - 2010/03/30(火) 18:41:12 ID:??? (+4,+6,-24)
    クエリーの重さはWhere次第、データ通信量は1件のみだから減る、でいいんじゃね?
    671 : NAME IS - 2010/03/30(火) 19:02:27 ID:??? (+32,+29,-61)
    >1件のデータを読むだけの処理になるのでしょうか?

    そうですよ。

    ORDER BY併用のときはかなり軽くなる可能性。
    最小値、もしくは最大値だけ算出されれば、後は何億件該当があっても関係無いはずだもんね。
    672 : 669 - 2010/03/30(火) 19:42:57 ID:??? (+27,+29,-21)
    回答ありがとうございました。すっきりしました。
    違う箇所を調査してみることにします。
    673 : NAME IS - 2010/03/30(火) 22:14:40 ID:??? (-29,-30,-178)
    >>669
    slow ログと profile を有効活用すべし

    version や環境によるけど一定時間 slowlog を 0秒にして、
    全クエリを取得し、それを myslowdump で解析したら
    改善すべきクエリが見えてきやすくなる。
    # -s オプションの 「t: query time」 などを利用

    0.1 秒程度だから大丈夫とか思ってるようなクエリでも、
    それが全処理時間の 50% をしめるならば、そいつを半分の
    時間で処理できるようにするだけで全体としては 25%稼げる。

    クエリによっては半分にするのもそれほど大変じゃないしね。
    674 : NAME IS - 2010/03/31(水) 07:13:38 ID:??? (+34,+29,-205)
    MySQLサーバに接続回数が何回あったとか確認する方法はありますでしょうか?
    今アプリケーションを作っていて、
    オーバヘッドを少なくするために、できるだけ接続回数を少なくして処理するよう組もうと思ってるのですが、
    アプリケーション側の挙動(関数などの)がイマイチ理解できていないもので、
    実際にどのくらい接続してるのか目で確かめることができれば、試行錯誤できるのですが、
    FTPサーバのようにリアルタイムでユーザの接続状況がわかるような機能や、
    外部アプリケーションがあったら教えてください。
    675 : NAME IS - 2010/03/31(水) 12:38:46 ID:??? (-24,-29,-29)
    >>674
    show global status;
    を数秒おきに取得して差分を見る
    676 : NAME IS - 2010/03/31(水) 15:15:03 ID:??? (-23,-30,-141)
    >>674

    675 でも書いてあるけど
    「show global status like 'Connections';」
    でmysqld起動後の接続合計が出るのでそれの差分をとる。
    うちでは、1分毎に cron で取得して秒で割ってグラフ化してる。
    専用のAPIがあれば負荷やMax_Connectionなどを気にしなくていいので
    もっとうまい方法考えるんだけど、恐らくない。

    あとは、「show processlist;」をみれば現在の接続数がわかる。
    677 : NAME IS - 2010/04/01(木) 01:31:57 ID:??? (-15,-30,-82)
    >>674
    DTrace が使える環境なら connection-start プローブを拾えば
    リアルタイムで観測出来るよ。

    http://dev.mysql.com/doc/refman/5.4/en/dba-dtrace-ref-connection.html

    DTrace は Solaris, Mac OS X, FreeBSD なんかで使えるので、
    解析用に一台用意しておくと重宝します。
    678 : 674 - 2010/04/01(木) 02:25:00 ID:??? (+29,+29,-33)
    レス遅くなってすみません。

    >>675-676
    どうもありがとうございます。
    早速その方法でテストしてみたいと思います。

    >>677
    どうもありがとうございます。
    開発環境はWindows、本番環境もLinuxなのでちょっと無理ですが、
    こういうのもあるんだということを今後のために頭に入れておきたいと思います。

    レスくださったお三方ありがとうございました。
    679 : NAME IS - 2010/04/01(木) 10:01:36 ID:??? (+20,+29,-14)
    >>677
    あ、日本男児がいるぞ。
    680 : NAME IS - 2010/04/01(木) 10:55:13 ID:??? (+27,+29,-22)
    違うってw
    この間マニュアルを眺めてて発見しただけ。使ってみると便利だよ。
    681 : NAME IS - 2010/04/01(木) 18:58:46 ID:??? (-29,-29,-231)
    root権のない共用レンタルサーバにおいてエンジンがイノデービーのテーブルのバックアップをとりたいのですが、
    調べても停止させることが前提の記事が多く、
    公式で停止させないで取れるツールみたいなのが紹介されてましたが、
    有料な上リンクぎれだったりと、なかなか有用な情報にたどり着けませんでした。
    そこで、
    show tablesでテーブル一覧を取得後に、
    show create table テーブル名で返ってきた値からSQLの部分を取り出したのをバックアップし、
    select * from テーブル名(たくさんデータが入ってるテーブルはlimitをつけて分割して)で返ってきた値を、
    insert文に加工したものをバックアップっていうように考えているのですが、おかしいですか?
    もっと適切な方法がありますでしょうか?
    686 : NAME IS - 2010/04/04(日) 11:28:12 ID:??? (-28,-30,-52)
    select flag, count(*) as ct from table group by flag;
    でflagでグループ分けした件数をctで取得できるんですが、このctが3以上の結果のみを出そうと、where句にctを使うとエラーになります。
    どうすればやりたいことができるでしょうか?
    687 : NAME IS - 2010/04/04(日) 13:31:08 ID:??? (-21,-10,+2)
    >>686
    having
    689 : NAME IS - 2010/04/05(月) 12:13:06 ID:??? (+4,+21,-5)
    >>688
    どうやって入れたの?
    690 : NAME IS - 2010/04/06(火) 01:42:07 ID:xi7G4+Bq (+39,+29,-208)
    会社のシステムのMySQLを運用して3ヶ月になります。
    一つのDBサーバで4つのサービスを動かしているため、かなり負担がかかっています。
    状況改善を指示されたため自分なりにネットで調べたところ、レプリケーションを行うのが良さそうだという結論になりました。

    しかし、サーバをいじる経験が乏しい上、データベース自体の経験も3ヶ月です。
    レプリケーションを行うことで既存のデータが壊れてしまうのがとても怖いです。

    サーバを追加してレプリケーションを行うのは、素人に毛が生えたような技術者でも行える作業でしょうか?
    あるいはリスクがあるのであれば他の対処法を教えていただけないでしょうか。

    宜しくお願いします。
    691 : NAME IS - 2010/04/06(火) 03:30:31 ID:??? (-22,-28,-102)
    クエリーやサーバーのチューニングは十分行っているのかな
    重い原因は判ってる?
    レプリケーションしても参照系しか分離出来ないよ
    5、6台並べてClusterとかもあるけど、ベンダー呼んだ方が良い
    単純にサーバーのメモリ増やすだけでも良いかもしれないし
    マスターを複数にすると同期処理が面倒だし
    そもそも、業務アプリ自体の改修が可能なのかな
    692 : NAME IS - 2010/04/06(火) 03:39:47 ID:??? (+24,+24,-44)
    ストレージ負荷とかメモリ負荷とかCPU負荷とかまず調べないとわからんちん

    下手にレプリするより、より強力なサーバーに適切なチューニングして動かしたほうがいいんでねーの?
    693 : NAME IS - 2010/04/06(火) 08:57:13 ID:??? (+30,+29,-26)
    1つのサーバで4つのサービス動かすのやめて
    2つないし4つのサーバで動かせばいいじゃん
    レプリケーションいらないじゃん
    694 : 690 - 2010/04/07(水) 01:24:40 ID:??? (+31,+30,-96)
    アドバイスありがとうございます。

    >>691
    >>692
    重い原因は分かっておりません。
    1日のページビューが4つ合わせて20万ぐらいなのですが、
    マシンの性能はかなりハイスペックなのでどうして重くなってしまうのかが分かりません。
    4つのサービスのうち2つが重くて残りの2つは快適に動くのが不思議なんです。
    とりあえずレプリケーションは大変そうですね。
    頂いたアドバイスを考慮すると時期早々な気がするので違う方法を考えてみることにします。

    >>693
    ごもっともなのですが、サービスは絶対に止めるなと言われてるのでデータ移行するのは少し怖いですね
    695 : NAME IS - 2010/04/07(水) 02:06:29 ID:??? (+27,+29,-33)
    どういった対策をするにしても、まず重い原因を調べるのが先だろう
    696 : NAME IS - 2010/04/07(水) 04:46:19 ID:??? (+27,+29,-6)
    ・・・負荷が何にかかってるか調べるのが先でねーのw
    697 : NAME IS - 2010/04/07(水) 04:50:21 ID:??? (-27,-29,-32)
    >>694
    mrtgなり何なりでサーバーのハードウエア負荷状態を調べる。
    slowqueryを調べる

    あとサーバーの構成も晒してみたら?
    698 : NAME IS - 2010/04/07(水) 09:40:27 ID:??? (+7,-29,-143)
    MySQLにinsertしたはずのレコードが入っていないという現象が
    時々起こります。

    具体的には、ブラウザからFORMで10個ほどの自然数のデータを送り、
    PHPで、データ処理をして正誤を表示します。
    送った10個のデータは、ひとつのレコードとしてMySQLに格納します。

    通常は正常に動作しますが、一見正常に動作しているように見えて、
    データベースに、この10個のデータのレコードが残っていないことがあります。
    60~70回やって3回起こりました。

    特にエラー表示などはなく、ブラウザには結果が正常に表示されます。
    また、同時にデータベースとは他のやり取りもしており、これらも正常に動作し、
    そのレコードも残っているので、データベースとの接続には問題ないようです。

    このようなことはよく起こるのでしょうか?
    対策としてinsertしたデータを、MySQLから再度呼び出して確認するなどの
    機能を加えた方が良いのでしょうか?
    699 : NAME IS - 2010/04/07(水) 09:58:56 ID:??? (+27,+29,-4)
    トランザクションにしててコミットしてないんじゃ?
    700 : 698 - 2010/04/07(水) 12:34:25 ID:??? (+27,+29,-44)
    いえ、トランザクションにはしていません。
    ごくごく単純なシステムです。

    大抵は順調に動作しています。
    たまにレコードの挿入だけがされていないという現象です。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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