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

    私的良スレ書庫

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

    元スレMySQL 総合 Part15

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    151 : NAME IS - 2008/12/27(土) 00:19:53 ID:??? (-2,-30,-175)
    >>149
    空振りはしない前提です。
    UPDATE hoge (key,key) VALUES (val,val)という記法が使えないので、
    REPLACEでユニークなキーを指定してやり、UPDATEの代わりにします。
    INSERTはたくさん結合させてひとつのクエリにした方が早かったので類推しました。

    今は少し忙しいので、暇が出来ればちょっとベンチマークを組んでみます。
    誰かご存じの方がおられたらよろしくお願いします。

    >>150
    クエリが長すぎるのではないでしょうか。
    他にもいくつかの理由が考えられますが、
    Lost connection to MySQL server during queryで検索するといろいろ出てきます。
    152 : NAME IS - 2008/12/27(土) 19:21:15 ID:??? (+58,+29,+0)
    >>148
    できるよ。
    以上。
    はい、次。
    153 : NAME IS - 2008/12/27(土) 22:36:05 ID:??? (+36,+0,-5)
    全部変えたいならWHERE句はずせば1行ですむのでは
    154 : NAME IS - 2008/12/28(日) 00:55:41 ID:??? (+63,+29,-22)
    >>153
    すみません、書き方が悪かったです。
    ひとつひとつデータが違うので、その手は使えないのです。
    155 : NAME IS - 2008/12/28(日) 08:37:22 ID:??? (-1,-29,-18)
    データーベースのエンジンいっぱいあるけど、
    自分が調べた範囲ではINNODBが一番よさそうなんだけど、
    普通はINNOを選択しておけばいいの?
    156 : NAME IS - 2008/12/28(日) 09:57:30 ID:??? (+6,-29,-16)
    >>154
    だったら id IN() で1000個並べたら1行で済む。
    157 : NAME IS - 2008/12/28(日) 10:55:18 ID:??? (-3,-26,+0)
    InnoDBでよいよ
    158 : NAME IS - 2008/12/28(日) 13:50:43 ID:??? (+57,+29,-9)
    オレ、いまだにMyISAMなんだが
    時代にとりのこされてるのか?
    特に困ったことないけど。
    159 : NAME IS - 2008/12/28(日) 13:55:09 ID:??? (+52,+29,-1)
    困ってないなら、それでいいやん
    160 : NAME IS - 2008/12/28(日) 17:32:34 ID:??? (+48,+25,-17)
    トランザクションを使えないのでは?
    161 : NAME IS - 2008/12/28(日) 19:35:36 ID:??? (+57,+29,-12)
    トランザクションと全文検索が一緒にできるようには
    もうならないのかな
    結構待ってるんだけど…
    162 : NAME IS - 2008/12/29(月) 11:29:25 ID:??? (-1,-29,-82)
    @ITのDBセミナー(ORACLE)でMySQLはVerがすぐあがる
    そのたびにVerUp作業が入るから・・・と否定的な発言があったけど
    実際使ってる人どうですか?

    乗り換えを考えています
    163 : NAME IS - 2008/12/29(月) 11:51:40 ID:??? (-1,-29,-14)
    いまだに4.0.20aですが そろそろ乗り換えた方が良いですか?
    164 : NAME IS - 2008/12/29(月) 11:59:51 ID:??? (+57,+29,-24)
    テーブルを作り替えなきゃならないのかどうか、GRANT 関連が変わったかどうか、
    取り敢えずこの二つは、リリースノートの最初に大書して欲しいものだとは思う。
    165 : NAME IS - 2008/12/29(月) 18:43:27 ID:??? (-2,-30,-37)
    MySQLのバージョンアップは相当遅い部類だと思うけど。
    5.0 2005/10
    5.1 2008/11

    Oracle
    10.1 2004/04
    10.2 2005/06
    11.1 2007/10
    166 : NAME IS - 2008/12/29(月) 19:02:41 ID:??? (+57,+29,-25)
    マイナーバージョンアップだと思って痛い目に遭う事を言ってるんじゃないの?
    5.0.3 と 5.0.5 とで違うとか聞いたが。
    167 : NAME IS - 2008/12/29(月) 20:29:56 ID:??? (-1,-29,-25)
    誰かSSDをキャッシュとして利用したZFS上でMySQL動かした人いますか?
    http://blogs.yahoo.co.jp/chototsu_moushinp/44846634.html
    168 : NAME IS - 2008/12/29(月) 20:35:48 ID:??? (+57,+29,-59)
    SSD,安くなったとは聞いたがそんなことが出来るのか

    はてなの全文検索で、DB全部メモリに乗っけるのがこの前話題になってたな
    そりゃ早いわ
    169 : NAME IS - 2008/12/29(月) 21:01:23 ID:??? (+51,+23,-44)
    MySQLの定番ベンチマークって何がいいですか?
    DBエンジンによってはファイルシステム次第かもしれませんが。
    rawデバイスに乗せるっていうのを誰かやっていたような。
    170 : NAME IS - 2008/12/30(火) 03:54:54 ID:??? (+46,+28,+0)
    若葉マーク
    171 : NAME IS - 2008/12/30(火) 04:49:37 ID:??? (-2,-30,-60)
    Mysqlのある要素の最終行の値を取得するクエリがわかりません

    select [ある要素] from [table名] where ~;

    こんな感じで取得するクエリを教えてください
    172 : NAME IS - 2008/12/30(火) 05:00:09 ID:??? (+33,-30,-74)
    【質問テンプレ】
    ・MySQL5.0
    ・欲しい結果:最終行のある要素の値
    Mysqlのある要素の最終行の値を取得するクエリがわかりません

    select [ある要素] from [table名] where ~;

    こんな感じで取得するクエリを教えてください
    173 : NAME IS - 2008/12/30(火) 06:27:57 ID:??? (+59,+29,-21)
    最終行の定義を述べないと誰も答えられんと思う。
    174 : 172 - 2008/12/30(火) 09:34:40 ID:??? (+5,-29,-20)
    >>173
    最終行は未ソートの状態で、一番最後にくる行です
    select [ある要素] from [table名];
    で一番最後にくる行です
    175 : NAME IS - 2008/12/30(火) 10:47:23 ID:??? (+66,+29,-22)
    OracleでもMySQLでも未ソート時の並び順は決まってない。
    最後に何がくるかは分からない。
    176 : 172 - 2008/12/30(火) 12:53:28 ID:??? (+66,+29,-37)
    >>175
    少し条件を変えます
    [ある要素]はそのテーブル内での最大値が最終行にくるようになっています
    その場合に最大値の値が取得できるようにしたいです
    177 : 172 - 2008/12/30(火) 12:58:58 ID:??? (-1,-29,-7)
    すいません
    select max([カラム名]) from [table名];
    でいいのですね、ご迷惑をおかけしました
    178 : NAME IS - 2008/12/30(火) 18:12:21 ID:??? (+6,-21,-49)
    MySQLってもしかして、サーバーのIPアドレスと、
    ユーザーIDと、パスワードがばれると、
    全然関係ない人から、勝手にサーバーに
    アクセスされて、データーベースを使われてしまったりするの?
    179 : NAME IS - 2008/12/30(火) 18:21:04 ID:??? (+3,-29,-115)
    アクセス元(のIPアドレスとかFQDNとか)で制限掛けてあれば、全然関係ない人からはアクセスされない。
    その許可されているアクセス元の別のユーザが、ユーザID/パス盗めば、当然アクセスされる。
    でも、MySQL に限らないんじゃないの?
    180 : NAME IS - 2008/12/31(水) 16:42:15 ID:??? (+3,-30,-102)
    下記のエラーについて質問させてください。

    Disk is full writing /var/lib/mysql/db/CBSC.MYI

    LOGファイルなら削除で即解決だと思うのですが、
    MYIファイルなのでどのように対応したらいいか分かりません。
    出来ればMYIファイルを削除せずに下記のエラーが出ないようにしたいのですが、
    何か良い対応方法はありませんか?


    181 : NAME IS - 2008/12/31(水) 17:15:38 ID:??? (+3,-29,-95)
    それインデクスファイルだから、「出来れば削除せずに」どころではなく、そもそもインデクスができてない。
    もうディスク増設した方がいいと思う。
    どうしても現状のままというなら、まず *.MYI だけ他パーティションに移して、今の場所からは /bin/ln -s 新 旧 と
    シンボリックリンク張ってから、myisampack してみるとか。(してる途中で disk full になっても知りませんよ)
    182 : NAME IS - 2008/12/31(水) 17:43:28 ID:??? (+3,-29,-65)
    とりあえずdf -kでディスク状況を確認する事が先決だと思う。
    /var/lib/mysqlに別パーティションをマウントしているならともかく、
    /varが丸ごと一つのパーティションに乗っかっているとMySQL以外
    にも色々問題が出てきますよ。
    183 : NAME IS - 2009/01/02(金) 09:00:58 ID:??? (+12,-29,-118)
    HABTMリレーションを編集するときって
    トランザクション使って一度全部消してから追加します?
    それとも差分を求めて処理します?

    auto_incrementのidがどんどんあがっていくのが・・・。
    まあ1ユーザに1000回発行し直しても400万ユーザとかにならないと使い切らないんだけど。
    184 : NAME IS - 2009/01/02(金) 17:34:02 ID:??? (+59,+29,-16)
    >>183
    >トランザクション使って
    そういう方法もあったか、なるほろ
    185 : NAME IS - 2009/01/03(土) 01:14:49 ID:OWNTkQLX (-18,+29,-9)
    ここの人は頭良いんだなぁ
    俺はインストールすらできず、2日目だw
    187 : NAME IS - 2009/01/03(土) 18:35:19 ID:??? (-4,-29,-28)
    >>185
    ローカルならXAMPだかMAMPだか使えば
    188 : NAME IS - 2009/01/03(土) 19:22:32 ID:??? (+14,-30,-138)
    質問です。PHPからMySQLにクエリを送るとき。

    型が文字列の変数$hoge を,型が int のカラムに insert したいのだが,

    $sql = "INSERT INTO `table` (`column`) VALUES ('$source');"
    mysql_query($sql) or die(mysql_error());

    としたら,$hoge が""(空文字列)だと 0 が insert されるよね。

    空文字列なら NULL が insert されるようにしたいんだが,どうすればよい?
    189 : NAME IS - 2009/01/03(土) 20:14:01 ID:??? (+58,+29,-12)
    なんかすごくおっかない書き方なんだけど、PHPだとこれが普通なの?
    190 : NAME IS - 2009/01/03(土) 20:39:16 ID:??? (-1,-29,-16)
    普通はストアド
    それだと分かりにくくなるから直書きしてる
    全部mysql_real_escapeされてる前提だろ

    と信じたい
    191 : NAME IS - 2009/01/03(土) 20:41:46 ID:??? (+4,-30,-47)
    >>188
    とりあえずNULLにしたいだけなら

    if($hoge == 0)$hoge = "NULL";
    else $hoge = "'$hoge'";

    みたいなの書けば解決
    DB側からのアプローチは知らん
    192 : NAME IS - 2009/01/03(土) 20:50:17 ID:??? (+3,-30,-55)
    columnの型がintであるとわかっているのであれば、文字列から整数
    への変換はクエリに値を埋め込む前に行っておくべきだと思う。
    $sourceの値として空白文字列があり得るような実装がおっかない。
    193 : 188 - 2009/01/03(土) 21:18:28 ID:??? (+7,-30,-156)
    188です。3行目の $source は $hoge の間違い。

    >189>190
    ごめん,始めたばっかなんで。どうすればよりよい?
    ストアドプロシージャは一応勉強したけど,この場合どう使えばいい?
    >191
    できた。ありがとう。""と''の違いとsqlでの挙動がいまいち分かってなくて。
    >192
    フォームから入力を受け取ってDBに登録することを考えている。
    もし入力がなかったらNULLにしたい。
    そういうときは,$source に渡す前に空白文字列はNULLにしとけ,ってことかな。
    194 : NAME IS - 2009/01/03(土) 21:42:29 ID:??? (+4,-30,-198)
    >>193
    ユーザが入力した文字列を直接SQLに埋め込むのはとても危険。
    エラーやセキュリティホールの元なので基本的には禁じ手。

    なので、$sourceに渡す前に$hogeの内容を適切に処理する必要がある。
    色々方法があるけど、今回はcolumnがint型なので、is_numeric関数
    で文字列が数値表現かどうか調べて、intval関数でint型の値に変換。
    SQLに値を埋め込む時はこの変換したint型の値を、入力された文字列
    の代わりに用いる。
    これらの処理の合間に入力値が有効範囲か確認してエラーを返したり
    入力値が無かったらNULLをINSERTするなどの処理を書けばよい。

    さらにprepared statemementを使うと確実。
    195 : NAME IS - 2009/01/03(土) 22:06:32 ID:??? (+3,-30,-54)

    これ以上はスレチだからwikiなんかを当たって欲しいが
    http://ja.wikipedia.org/wiki/SQLインジェクション

    俺はXSS関連はめんどくさいから
    $_POST = array_map("hoge",$_POST);
    $_GET = array_map("hoge",$_GET);
    とかやってるお
    hogeでmysql_real_escapeやらhtmlspecialcharsやら処理
    196 : NAME IS - 2009/01/03(土) 22:11:09 ID:??? (+62,+29,-67)
    あ、ごめんストアドプロシージャならこのスレが正しい

    訂正ついでに
    プリペアドステートメントでもストアドプロシージャでも
    XSS対策には似たような効果を示す。(ただmysqliを使う必要があるが)
    http://php.s3.to/man/pdo.prepared-statements.html

    まあここらへんはだんだん慣れてくるとおもうお
    197 : NAME IS - 2009/01/04(日) 12:43:48 ID:??? (+6,-29,-19)
    質問です。
    phpMyadmin等ツールで一定の時間ごとにオーバーヘッドの解消を行いたいのですが、そのようなことは可能でしょうか?
    198 : NAME IS - 2009/01/04(日) 13:02:40 ID:??? (+55,+26,-8)
    オーバーヘッドの解消ってなんのこと?
    199 : NAME IS - 2009/01/04(日) 17:57:51 ID:??? (+2,-29,-39)
    >>198
    phpMyAdminで見ると、項目としてあるみたいね。
    http://oshiete1.goo.ne.jp/qa1155748.html

    >>197
    cronとかでoptimize tableしたら?
    200 : NAME IS - 2009/01/04(日) 18:02:23 ID:??? (+48,+30,+0)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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