MySQL 総合 Part13

このエントリーをはてなブックマークに追加
838NAME IS NULL
搭載物理メモリ48Gのサーバーで、大きな単一テーブル(80G程度)を上手く扱う方法って無いですか?
(そのテーブル対して、更新&参照&集計が頻繁に発生すします。)

my.conf-hugeを元にいろいろチューニングを試してみたんですが、
io-waitが100%に刺さったまま、ハングしたようになり困っています。

開発当初はoracle案件で、ありきたりのチューニングだけで、問題なく動作していたのですが、
クライアントの方針変更で、急にMySQLで開発することになり、非常に難儀しています。
(ちなみに案件規模は、楽天クラスの商品在庫管理です。)
839NAME IS NULL:2008/05/24(土) 02:15:08 ID:/LSToqrf
その規模になると、MySQLでは、どうやっても無理。パフォーマンスや安定性の面でもお薦めしない。
クラに泣き付いてでも、オラクルに戻してもらえ。
840NAME IS NULL:2008/05/24(土) 02:20:15 ID:???
単一tblって時点で何だかな〜…
大規模すぎてMySQLの範疇じゃないだろ
841NAME IS NULL:2008/05/24(土) 02:36:57 ID:???
>>839-840
ありがとうございます。でも、それは無理っぽいです。

クライアントのライバル会社が全社的にOpenOfficeを採用したとかで、新聞に載ったらしく、
クライアントの経営トップがそれに対抗して、バックエンドにオープンソース採用の方針を
打ち出したいらしく、私が土下座するくらいでは受け入れられそうにも無いです。
842NAME IS NULL:2008/05/24(土) 02:49:35 ID:/LSToqrf
かなり痛いトップだな。
コッド博士クラスの優秀なDB開発者を雇ってMySQLを改造してもらえ。
843NAME IS NULL:2008/05/24(土) 03:34:26 ID:VAruVHOx
バカ相手してても身体壊すだけだから辞めちゃえw
844NAME IS NULL:2008/05/24(土) 03:39:53 ID:???
>>841
土下座て。
やるだけの事はやってちゃんと検証データとボトルネック、仕組み的に無理ですって事を踏まえた上で
それでもなんとかしろと言うならやりますが、紆余曲折、最悪こういう想定事態になりますが
よろしいですか?ってクライアントと折衝する人に言ってもらえばどうでしょうか。
自分の仕事は最低限筋の通った理屈を報告して折衝担当者に理解してもらうこと。
もちろん前向きにね。
自分の仕事を理解し、精一杯やるだけやってしっかりとこなした上で無理難題言う上司や客に必要以上の負担を強いられる道理はないでしょ?
ただその事を丁寧にビジネス用語で当たり障り無く表現して相手に理解、納得してもらうよう「伝える」努力は必要ですけど。

私もそこまでのデータの運用経験はないけど、微力ながら言わせてもらうと
■ハード面
・SASでRAID0+1 ファイバーチャネル使えるならそれに越したことはないけど。
=> ディスクの読み込み速度が上がって結果的にMySQLの更新・参照・集計早くなります。
=> バックアップできます。三世代管理くらいまではしたほうが幸せになれるかも。
=> RAIDはライトキャッシュとBBUのついているものを使用 なるべくキャッシュは多い方がいいです。
2GとかつけれるのもあるけどRAIDカード選びは慎重にね。
ディスクはシークタイムがあるから10000rpmのもので秒間16コミットしかできない
ライトキャッシュ積むといっぱいコミットできます

・レプリケーション
=> レプリケーションしているとは思うけど、なんとなくしてなさそうな節があるのでやって見て下さい。
スレーブサーバに参照を掛けるとスレーブの台数分だけ参照はバンバン早くなります。
ただし、マスターと完全同期ではないので入金処理等精度の必要な部分はマスターを使って下さい。
アプリケーション側でのスレーブ参照制御が面倒なら間にLVSでもなんでもいいからロードバランサー仕込むと吉

・memcacheサーバ
=> 80G程度ならサーバ10台以内で構築できると思う
更新はライトスルーでMySQLにも書いて単純参照はmemcacheからすると涙でるほど早い。
但しきちんと両方更新されたか確認、制御する仕組みは必要。

ソフト面に続く
845NAME IS NULL:2008/05/24(土) 04:32:39 ID:???
■ソフト面
・設計の見直し
=> 詳細知らないので絶対とは言えませんが、MySQL用にテーブル設計、運用設計見直した方がいいと思います。
単一テーブル80Gは異常に思えます。
同一テーブルを複数作って分割・分散したり非正規化してみたり。
内部の詳しい人に相談して下さい。詳細知らないと設計はできません。

・インデックスの見直し
=> 当然ですがインデックスの付け方と発行クエリでMySQLの速度は1000倍違うこともあります。
複合インデックス、プライマリ、単一ユニーク、複合ユニーク気を付けながらexplainしてチューニング。

・クエリの見直し
=> これもexplainしながらチューニング 色々調べてみてください。
=> 拡張インサート、INSERT IGNORE等を使うと便利な局面もあるかもしれません。
=> 集計は、トリガを使ってインサート時に集計値をインクリメントしたりすると負荷がさけれます。
=> DELETEは実行コストが高いので、削除フラグを付けて対応する。一日一回纏めてDELETE処理する等

・MyISAM、InnoDB
=> 参照はMyISAM、更新はInnoDB。
ライトスルー、レプリケーションと合わせて使えばパフォーマンス全然違います。
MyISAMはライトロックが有効かもしれません。デッドロックに気をつけて。

・コンパイル
=> MySQLはソースからICCでコンパイル。速いっす。

・文字コード
=> できればUTF-8。一番苦労しなくて済みます。MySQLの内部コードもUTF-8。

・チューニング
=> ケースバイケースなんでなんとも言えませんが
tmp_table_size
max_heap_table_size
は同じ値にしないとダメですよー
query_cacheをしてみてください
禁断のチューニング
innodb_support_xa = OFF
innodb_flush_method = O_DIRECT
sync_binlog = 0
innodb_flush_log_at_trx_commit = 2
innodbを使用している場合上記設定だとディスクIOがガンガン減るので更新負荷がガクンと下がります。
ただし、データの保存性は最悪。
予期せぬマシンダウンがあれば復旧できない場合もあります。

・専門のコンサル
=> 実現までの早さと質が必要ならMySQLに習熟してる会社にコンサル依頼するのが一番早いような気が・・・
KLABさんにでも頼んでみたら?とふと思いました。
私も規模が大きくなるに連れて運用に悩まされ、夢の中のトイレで自分のションベンの放物線を眺めている時でさえMySQLの事を
考えていた時期が三ヶ月ほどありました。
データもいっぱい壊しました。いっぱい怒られました。あぁ思い出したらトイレに行きたくなってきたのでこれくらいで。
846NAME IS NULL:2008/05/24(土) 04:38:50 ID:???
追記:あっSUNが買収してオープンソースでなくなるんじゃなかったっけ?
847NAME IS NULL:2008/05/24(土) 08:15:30 ID:???
>>844-846
実例を入れて膨らませて、本にしてくれませんか。絶対買います。
848NAME IS NULL:2008/05/24(土) 08:50:47 ID:???
( ;∀;) イイハナシダナー
849NAME IS NULL:2008/05/24(土) 13:53:59 ID:???
>>844
ありがとう、めっさ参考になった。
850NAME IS NULL:2008/05/24(土) 20:05:43 ID:???
>>844-845
ちょっと、ブログかなんかに書いておくれよ
851NAME IS NULL:2008/05/24(土) 21:17:02 ID:???
 
852NAME IS NULL:2008/05/25(日) 11:54:18 ID:G//yp2T+
テーブルの結合に関しての質問です。

MySQLでテーブルを結合する方法として以下の二つがあります。
1.select * from HOGE as a, FOO as b where a.id = b.id
2.select * from HOGE as a inner join FOO as b on a.id = b.id

この二つの方法のうち、どちらが人気でしょうか?
また、性能の違いはありますでしょうか?
853NAME IS NULL:2008/05/25(日) 13:58:22 ID:CfdJAAug
まぁ単に
結合条件をFROM句に書いたか
WHERE句に書いたかの違いだけだと思うけど。
性能の違いはないんじゃないかな?
1のように結合条件をWHERE句にごちゃごちゃとかくよりも
2みたいにFROM句に書いたほうが
テーブルとの関係が分かりやすいのはあるかもね。
でも自分は1の方法が多いかな。

以上、末節ながら。。。
854NAME IS NULL:2008/05/25(日) 15:30:43 ID:???
MySQL5.1で2GBほどのデータベースをインポートしているんですが、すでに170時間以上経過しています
DB元のサイトによると予想時間が八時間ということですが、同じように予想時間二時間のファイルをインポートした時は16時間かかりました
170時間以上経過というのは異常でしょうか? また原因はどこにあるでしょうか?
スペックはCPU:Celeron2.2G,Mem:DDR333の512MB,HDD:UltraATA/100の40GB、Ubuntu8.04上で動かしています
855NAME IS NULL:2008/05/25(日) 15:50:29 ID:???
>>854
MySQL詳しくないんだが、インポートの途中経過とかログに出せないの?
CPU使用率とかディスクアクセス見るしかない?
856NAME IS NULL:2008/05/25(日) 15:54:12 ID:???
>>855
作業を始めてからGUIの動作を受け付けなくなりましたorz
さっき調べたら途中経過を出すステートメントを見つけましたが、作業中でコマンド入力不能……

一度落としてデータベースを空にしてから再開しようかと迷ってます
857NAME IS NULL:2008/05/25(日) 17:20:47 ID:???
>>854
メモリーが少なすぎないか?
せめて1GBは無いと、その規模では予想時間の倍の時間がかかるイメージ。
858NAME IS NULL:2008/05/25(日) 18:14:09 ID:???
>>854
データベース区切った方が早いよ
自分の場合、1GBちょっと約700万のデータを50万レコードごと区切って入れたら1時間くらいだった。
あと基本だけど
・リモートよりサーバにUPしてから、コマンド打って入れたほうが数倍早い
・INSERT文はマルチインサートの方が数十倍早い
・インデックス貼ってるなら削除してからの方が早い

因みに環境はCPU:Athlon 3200 ,Mem:1GB
859NAME IS NULL:2008/05/25(日) 21:50:45 ID:???
charとvarcharが拡張されて65535バイトまで格納できるようになった今
text型を使う意義ってあるのでしょうか?
860NAME IS NULL:2008/05/26(月) 08:30:12 ID:anlWXK4f
text型は例えば「備考」とか「理由」とかいう長文が入る可能性のカラムに対して
明示的に使うことがあるよね。
861NAME IS NULL:2008/05/26(月) 08:35:58 ID:???
txtにしないと内部検索できねーだろ
862NAME IS NULL:2008/05/26(月) 14:24:40 ID:???
お忙しいところ恐れ入ります。下記のように設定したいのですが、
syntaxエラーが出てしまい困っております。
どのように改修したら宜しいでしょうか?
アドバイス頂ければと思います。

create table m_user(
No integer PRIMARY KEY AUTO_INCREMENT,
ID char(8) UNIQUE KEY,
password varchar(20),
name varchar(20),
mail_address varchar(50),
authority varchar(2) NOTNULL);

エラー内容は下記です。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'NOTNU
LL)' at line 7
863862:2008/05/26(月) 14:42:08 ID:???
追記で申し訳ありません。
MYSQLのVerは5.0です。
宜しくお願いいたします。
864NAME IS NULL:2008/05/26(月) 14:46:05 ID:???
NOTNULL じゃなくて NOT NULL でしょ。
865854:2008/05/26(月) 14:51:12 ID:???
メモリ増設してきました!
一気に三倍の1.5GBにして、HDD領域も少し増やして、改めてテーブルを用意して流し込んでます
結果が出たらまた報告しますね
866862:2008/05/26(月) 14:53:13 ID:???
>>864
ありがとうございました。
なんという・・・俺バカ><
ありがとうございました!
867NAME IS NULL:2008/05/26(月) 21:30:33 ID:+Ce61WTV
怒られそうな質問なんですけど、
コマンドプロンプトでmysql -u root -pって入力した時に入れるパスワード
ってなんですか?
xamppでphpと一括でインストールして始めてやってみようとしたんですけど・・・
868NAME IS NULL:2008/05/26(月) 21:51:49 ID:+Ce61WTV
>>867です
サイトで調べて、mysqladmin -u root password パスワード
と入力したら、
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost (using password: NO)
と出たんですけどどうゆう意味ですか?
869NAME IS NULL:2008/05/26(月) 21:52:09 ID:???
とりあえず -p なしにしてみたら、どうなる ?
870NAME IS NULL:2008/05/26(月) 22:02:48 ID:MQWbRVv1
mysqladmin -u root
っていれたら、英語がいっぱい出てきました!
871NAME IS NULL:2008/05/26(月) 22:12:38 ID:???
とりあえず -q つけてみたら、どうなる?
872NAME IS NULL:2008/05/26(月) 22:18:08 ID:t8RRxsu7
-pって付け足しても同じようなのが出てきました。
873NAME IS NULL:2008/05/27(火) 02:23:53 ID:mN2Gb71B
インスコした時のぱ素ワード入れろよ
874NAME IS NULL:2008/05/27(火) 03:55:09 ID:???
商品テーブルにある、商品単価*数量の結果を
注文明細テーブルにある金額カラムに
自動でインサートしたいんですが何か方法はありますか?

たとえば、
商品単価=100
数量=3
だったら、自動で金額カラムに300とインサートしたいです。
数量を4に変更したら金額が400になって欲しいです。
875NAME IS NULL:2008/05/27(火) 03:58:05 ID:???
サブクエリでいいのでは?
876NAME IS NULL:2008/05/27(火) 03:58:35 ID:???
バージョン書いてないから、解らんけど、トリガー使えば?
877NAME IS NULL:2008/05/27(火) 05:31:49 ID:???
明細インサート、アップデート時に、その計算項目入れれば
878NAME IS NULL:2008/05/27(火) 10:59:28 ID:???
Oracleのストアドプロシージャだと、
INSERT文の中に、算術記号も使えた。

INSERT INTO tbl (金額) VALUES (商品単価*数量);

MySQLも似たようなことが出来るはず。
879NAME IS NULL:2008/05/27(火) 13:35:56 ID:???
「はず」じゃなくて、5.0からできる
880NAME IS NULL:2008/05/27(火) 19:03:30 ID:???
皆さんテーブル名やカラム名は、普通どんなフォーマットにしてる?
「TABLE_NAME」とか大文字とアンダバー組み合わせて統一?

本やググっても「これが定番」という資料がみつからないんで、ちと困ってます。
881NAME IS NULL:2008/05/27(火) 19:05:03 ID:???
itirou とか matui とか matuzaka とかにしてる
882NAME IS NULL:2008/05/27(火) 19:08:35 ID:???
>>880
別に特に気にしてない。気分次第かな。
カラム名については、外部参照するようなidなんかは、
"なんたら_id"みたいな感じ。
ちなみに、大文字小文字については、Unix環境だけでなく、
まったく同じ構成のDBをWin環境でもテストとかするから、小文字で統一。
883NAME IS NULL:2008/05/27(火) 19:14:31 ID:???
SQLの予約語を大文字で書く習慣があるからテーブルやカラム名は小文字
884880:2008/05/27(火) 19:34:23 ID:???
>>881-883
なるほど。参考になります。
小文字に統一しとこう。ありがとうございます。
885NAME IS NULL:2008/05/27(火) 21:15:40 ID:???
>>880
2byteだけはやめとけ。
英語でもローマ字表記でもいいから、ASCII文字の方がOSが変わっても扱いやすい。
886NAME IS NULL:2008/05/28(水) 00:37:08 ID:???
hoge
-----------------------------------
id int
name VARCHAR(128)
priority TINYINT(2) DEFAULT 1
-----------------------------------

こんなテーブルがあったとして以下の条件でデータをとるにはどうすればいいでしょうか?

カラムは5つ
ランダムでとる
priority(優先度)が高いものが選ばれる可能性を高くする


5つとる・ランダムは以下でできますが
SELECT * FROM `hoge` Order By rand() limit 0,5;
優先順位を考慮に入れるとり方が思いつきません。
正確(完璧なアルゴリズム)ではなくてもいいのでご鞭撻のほどお願いします。
テーブルのつくりに問題がある場合もおっしゃっていただけると助かります。

今考えているのは
先に優先順位でソートして上位数件取得
そこからランダム取得
です。
887NAME IS NULL:2008/05/28(水) 02:27:58 ID:???
>>886
優先順位が高いと当たる確立が上がる という意味でしょうか。
その場合でしたら、やり方はいろいろあるでしょうけど、
シンプルなのは優先順位の値に従い該当レコードを
重複させたリストを作り、それに対してランダム取得など。
888NAME IS NULL:2008/05/28(水) 03:40:11 ID:???
>>886
今即席で考えてみた。
priority の値を1〜5として、
select *,(rand()*5 + priority) as rand_col from hoge order by rand_col desc limit 1;
みたいな感じでどうか。(実際はpriorityの数値と、rand()*nのnを適切に与えてやらないといけないが・・)

上の例を、レコード5件、priorityを1.2.3.4.5としてやってみて、10000回の結果(それぞれのidが最大になった回数)
(priorityの値が大きいほうが選ばれやすい。言葉の意味的には逆なような気が??)
1 = 28
2 = 259
3 = 1058
4 = 2767
5 = 5888

割合的には、(約)1:10:40:100:200
もっときれいに分かれるかと思ったけど、微妙だな・・・。
(文系脳ではここら辺が限界、スマソ)
889NAME IS NULL:2008/05/28(水) 09:11:48 ID:l7349jpG
文字コードの変更方法がわからないです。
my.cnfファイルの
[mysqldump]と[client]部分にdefault-character-set=utf8
と記述したんですが、コマンドプロンプトで
Show VARIABLES LIKE 'CHAR%'; と入力し確認したんですが、
latin1のままになってます。
どうすれば変更できますか?
890NAME IS NULL:2008/05/28(水) 10:49:33 ID:???
init-connect='SET NAMES utf8'
891NAME IS NULL:2008/05/28(水) 15:09:44 ID:OeWwUjG2
max_connection ってデフォルトで 100 だったのか・・・
確認せずにボロボロこぼしてしまった.
まぁローカルのサービスだったからよかったけど.
892NAME IS NULL:2008/05/28(水) 15:40:03 ID:NgaxVuoB
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
死ぬとき このレスの事思い出してから地獄いけよ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
893889:2008/05/28(水) 17:31:34 ID:xeQEQXZc
>>890
どこの部分に書き込めばいいんですか?
894NAME IS NULL:2008/05/28(水) 18:18:08 ID:???
[mysqld] で
895NAME IS NULL:2008/05/28(水) 18:48:13 ID:???
>>892
落ち着けw
896NAME IS NULL:2008/05/28(水) 19:38:46 ID:???
MySQLでPHPのアプリ作ったら、アプリのソース公開しなきゃいけないっていうのは本当ですか?
GPL汚染とはいえ、SQL叩いただけでというのは意味が分からないんですが・・
897NAME IS NULL:2008/05/28(水) 20:05:24 ID:???
レプリケーションについて、MySQLのマニュアルに、
「MySQL 4.0.2 はレプリケーション目的には適しません」
とありますがこれは何故なんでしょうか?
現在4.027を使っています。
898NAME IS NULL:2008/05/28(水) 20:15:15 ID:???
主キーを追加するのに
ALTER TABLE address ADO PRIMARY KEY (NUMBER);と入力したら、

ERROR 1064 (42000): You habe an error in your SQL syntax; check the manulal that
corresponds to your MySQL serber version for the right syntax to use near
'ADO PRIMARY KEY(number)' at line 1

とゆうエラーが出たんですけどどうゆう意味ですか?
899NAME IS NULL:2008/05/28(水) 20:15:38 ID:???
>>896
アプリ販売するなら一応そうだけど、MySQL+PHPの場合は回避されるはず。それで一回MySQLのサポート外したから>PHP
900ほい!:2008/05/28(水) 20:51:36 ID:3lvkdlof
ほい!
「にっこっこ掲示板」ヤフーで検索してみ!「にっこっこ」でOK
新しいの誕生したよ
まだ規制ないし、色々貼れる
901NAME IS NULL:2008/05/28(水) 20:56:27 ID:???
>>899
そうですかありがとうございます :]

902854:2008/05/28(水) 22:46:11 ID:???
データベースインポート中だった854です。
無事に60時間で作業完了しました!
メモリの増設は効果覿面だったみたいです。
903NAME IS NULL:2008/05/28(水) 23:18:52 ID:???
>>902
結局、どういう方法でインポートしたの?
他の人間の為にも、報告よろ
904NAME IS NULL:2008/05/29(木) 01:27:03 ID:???
>>902
おつかれw
そこの環境だと予想の8倍かかると覚えておけばよいのかなw
905NAME IS NULL:2008/05/29(木) 11:47:29 ID:???
>>898
ADOがTYPOでは?
906NAME IS NULL:2008/05/29(木) 11:51:28 ID:???
>MySQL serber version for

これエラーメッセージからのコピペ?
907NAME IS NULL:2008/05/29(木) 11:51:36 ID:???
>>905
察してやれ。なにしろ you habe に serber だ。
908NAME IS NULL:2008/05/29(木) 11:55:27 ID:???
>>903
MySQLは初めて触れたので、入れたいプログラム
http://www.perseus.tufts.edu/hopper/)の指示通りに
mysql -uユーザー -p データベース名 < importfile.sql
でやりました

>>904
ですねー
一万円で買ったパソコンならこのスピードでも大満足ですwww
909NAME IS NULL:2008/05/29(木) 12:28:55 ID:???
>>908
やっぱりそうか。実は>>854の時から気にはなってたんだが、

http://bugs.mysql.com/bug.php?id=33057

このバグに関係ありかもしれない。
5.0では5.0.52〜5.0.54まで、5.1でも5.1.22とかはコレに該当しそう。

ウチでも、5.0.51ではほんの数秒で完了するインポートが、5.0.52で数分〜十分位かかったから
調べてみて発見した。ちなみに、5.0.56以降、5.1.23以降はFixされてる。
910名無しさん@Vim%Chalice:2008/05/29(木) 17:01:38 ID:VDNC7sY4
mysql workbenchについて質問です。
このソフトってmysql以外のRDBMSに接続することって可能でしょうか?
可能な場合、その種類について教えてください。
リバース、フォワードエンジニアリングができればよいと考えています。

よろしくお願いします。
911NAME IS NULL:2008/05/30(金) 01:21:05 ID:???
ttp://mainichi.jp/enta/geinou/graph/200805/21/?inb=yt
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。



ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/
912NAME IS NULL:2008/05/30(金) 03:26:51 ID:???
val_table
number int auto_increment,
title VARCHAR(100) NOT NULL

tag_table
number_tag int auto_increment,
number int,
title VARCHAR(100) NOT NULL


タギングテーブル(tag_table)と商品テーブル(var_table)から検索する際の取り方なのですが、
val_table.titleとtag_table.title(複数の場合や存在しない場合もある)からlikeで調べたいのです。

ただ、タグが複数ある場合、存在しない場合などの際、うまくとれません。
複数ある場合はCONCATで結合、タグが存在しない場合はval_tableのtitleのみから調べて返してほしいのですがどうすればいいでしょうか?

SELECT a.title from hoge_table a,tag_table b where a.number = b.number;
913NAME IS NULL:2008/05/30(金) 06:49:37 ID:???
>タグが複数ある場合、存在しない場合などの際
LEFT JOIN

select a.number,a.title,b.title from val_table as a LEFT JOIN tag_table as b on (a.number = b.number_tag);

>複数ある場合はCONCATで結合
GROUP_CONCAT() # mysql 独特なので注意

select min(a.number),min(a.title),GROUP_CONCAT(b.title) from val_table as a LEFT JOIN tag_table as b on (a.number = b.number_tag) GROUP BY a.number;
914NAME IS NULL:2008/05/30(金) 13:16:38 ID:???
>>897
4.0.2はわからんが、
数年前の4.0.xx(忘れた)のころはレプリケーションにバグがあって
マスターとスレーブの内容が一致しないなんてことが起こった。
その後なおったはずだけど…
915NAME IS NULL:2008/05/30(金) 13:29:24 ID:eZR1pwPY
>>914
そんなので何のために使えるんだろうか・・・
参照系の不完全な負荷分散専用?
916965:2008/05/30(金) 16:36:34 ID:???
>>913さん
ありがとうございます!
結合はそれでいけました。

ただ、GROUP_CONCAT(b.title)をlike 検索できません。
GROUP_CONCAT(b.title) As tags
にして
tags like "%test%"
してみたのですが
unknown column になります。
917912:2008/05/30(金) 16:48:56 ID:???
名前間違えました。。。
そしてHAVING でできました。
913さんほんとうにありがとうございます。
918NAME IS NULL:2008/05/30(金) 19:56:01 ID:Z2jF5HUG
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
死ぬとき このレスの事思い出してから地獄へ行けよ
ニヤ(・∀・)ニヤ(・∀・)
919NAME IS NULL:2008/05/30(金) 21:17:36 ID:XvuF1EUT
XAMPPのmysqlについての質問です。

rootのmysqlのパスワードをリセットしようとしているのですが、
うまくいきません。

xamppに付属のバッチファイルでパスワード削除できるとFAQに書いてあるのですが、
mysql\resetroot.bat がエラーで動作しません orz

apache friends - xampp windows版faq
http://www.apachefriends.org/jp/faq-xampp-windows.html#password2

エラー内容は、下記です。

ERROR: 1136 Column count doesn't match value count at row 1
080530 21:10:06 [ERROR] Aborting

080530 21:10:06 [Note] bin\mysqld.exe: Shutdown complete


Passwoerter fuer Benutzer "root" und "pma" wurden geloescht.
Passwords for user "root" and "pma" were deleted.

続行するには何かキーを押してください . . .


また同じエラーの下記の対処をしても同じエラーがでてしまました。

リアルシステムズ/IT化・情報化・ホームページの企画・設計・開発:xamppのmysqlでrootパスワードがresetroot.batでリセットできない
http://blog.livedoor.jp/real_systems/archives/51166848.html

どうにかパスワードをリセットする方法はないでしょうか?
920NAME IS NULL:2008/05/30(金) 22:49:27 ID:???
コマンドプロンプトから直接mysqlを叩く
921919:2008/05/31(土) 03:43:29 ID:P9Fe+Y8M
てか、よく考えたらものすごい環境依存っぽいのでxamppのBBSで聞いてきます。
解決しましたらこちらに報告に来ます。
お騒がせしました。
922NAME IS NULL:2008/05/31(土) 10:54:59 ID:w17RNyoM
mysqlで
絶対に打ち込んではいけないコマンドを
私に伝授してください!!!!!!
923NAME IS NULL:2008/05/31(土) 11:52:21 ID:???
DROP TABLE tbl
924NAME IS NULL:2008/05/31(土) 11:54:53 ID:???
select
925NAME IS NULL:2008/05/31(土) 11:55:21 ID:???
>>922
drop database mysql
926NAME IS NULL:2008/05/31(土) 12:01:48 ID:???
exit
927NAME IS NULL:2008/05/31(土) 12:57:23 ID:w17RNyoM
>>925
こら〜!
とんでもないことなってもうたやないかい!
928NAME IS NULL:2008/05/31(土) 13:13:36 ID:yOEBInyW
しかし管理用のデータベースまで普通に見えるのはどうかとも思う。
ファイルシステムでもおなじか
929NAME IS NULL:2008/05/31(土) 13:18:08 ID:???
そうか?
包み隠さないことはいいことだ。
930NAME IS NULL:2008/05/31(土) 13:31:42 ID:???
>>928
まったくだ。 grant なんとか on *.* が mysql.* まで含んでしまうのは、まずいと思う。
まあ *.* するのがまずいんだろうけど。
931NAME IS NULL:2008/05/31(土) 13:36:25 ID:???
>>928
いい加減さもウリの1つです。
932NAME IS NULL:2008/06/01(日) 17:46:19 ID:???
305 Query SHOW COLLATION
305 Query SET NAMES ujis
305 Query SET character_set_results = NULL
305 Query SET autocommit=1
305 Query SET sql_mode='STRICT_TRANS_TABLES'
305 Query SET NAMES sjis <-------これは誰が発行しているのかわかりません

305 Query UPDATE tab1 SET name = 'jdbc 修正 myjava3.java', note = 'myjava   jdbc 修正 ' WHERE number = 70
305 Quit

java のコードに sjis に設定しているってこと?
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_results | ujis |
| character_set_server | ujis |
933NAME IS NULL:2008/06/01(日) 20:57:44 ID:???
自己解決
934NAME IS NULL:2008/06/01(日) 21:26:07 ID:???
解決案も書かないと。
935NAME IS NULL:2008/06/01(日) 23:39:26 ID:???
ブラウザを立ち上げて
2chを開いて「自己解決しました」
と書き込む
936NAME IS NULL:2008/06/02(月) 16:59:47 ID:???
MySQL4.1.2のテーブル結合について質問させてください。

test テーブル
| id | name | group_id |
+-----------------------+
| 1 | test1 | 0 |
| 2 | test2 | 1 |
| 3 | test3 | 0 |
| 4 | test4 | 1 |
| 5 | test5 | 2 |
| 6 | test6 | 2 |

group テーブル
| id | name |
+-------------+
| 1 | group1 |
| 2 | group2 |

上記のテーブルを結合し、下記結果のように
testテーブルのgroup_idが1以上のデータのみ、
group_idでグループ化して表示させることは可能でしょうか。

| test_name | group_name |
+-----------+------------+
| test1 | NULL |
| test2 | group1 |
| test3 | NULL |
| test5 | group2 |

下記のSQL文を実行してみるも、
group_idを持たないデータまでグループ化されてしまいます。

select test.name as test_name,group.name as group_name
from test
left join group on test.group_id = group.id
group by test.group_id

| test_name | group_name |
+-----------+------------+
| test1 | NULL |
| test2 | group1 |
| test5 | group2 |
937NAME IS NULL:2008/06/02(月) 17:12:43 ID:???
自分だけで解決したのに、なんで役立たずの君たちに教えてあげなくちゃならんのだ
938NAME IS NULL:2008/06/02(月) 17:38:59 ID:???
>>937
面白い発想だ
939NAME IS NULL:2008/06/02(月) 18:02:25 ID:???
思い切って質問させていただいたのですが間違いのようでした。
失礼いたしました。
940NAME IS NULL:2008/06/02(月) 18:35:28 ID:???
>>936
group by の値をユニークにしてやればいいのだから、たとえばこんな感じ?

select min(a.name),b.name from test as a left join group as b on (a.group_id = b.id)
group by case when a.group_id > 0 then a.group_id else a.id -100 end;

-100 はユニークにするためのいい加減な値なので、適当に。
group のような予約語はテーブル名にしない方がいいような気がする。
941NAME IS NULL:2008/06/02(月) 18:57:44 ID:???
4.1.2ではなく5.0を使っているからちょっと判らんけど
left join での接続方法を変えてみたらどうなんだろう

SELECT test.name,group.name,test.id,group.id FROM group LEFT JOIN test ON test.id = group.id GROUP BY group.id HAVING test.group_id > 0

テストテーブル作るのが面倒だったから直書きだから動かなかったらスマン
942NAME IS NULL:2008/06/02(月) 19:01:45 ID:???
あーケアレスミス

SELECT test.name,group.name,test.group_id,group.id FROM group LEFT JOIN test ON test.group_id = group.id GROUP BY group.id HAVING test.group_id > 0
943NAME IS NULL:2008/06/02(月) 19:52:21 ID:???
恥ずかしながら再度確認しに来てしまいましたが、
レスをいただいており、大変感謝いたします。

>>940
>>group のような予約語はテーブル名にしない方がいいような気がする。

例としてわかりやすいテーブル名にしようと思い、
とんだミスをしてしまいました…。気を付けます。

>>select min(a.name),b.name from test as a left join group as b on (a.group_id = b.id)
>>group by case when a.group_id > 0 then a.group_id else a.id -100 end;

この方法で解決できました!
テスト用でも本DBでも正常に動作しました。ありがとうございます。

>>942
>>SELECT test.name,group.name,test.group_id,group.id FROM group LEFT JOIN test ON test.group_id = group.id GROUP BY group.id HAVING test.group_id > 0

この方法も試させていただきました。
すると、group_idを持たないデータは表示されなくなるようです。

| test_name | group_name |
+---------+-----------+
| test2 | group1 |
| test5 | group2 |

しかしながら、大変勉強になるレスをいただきまして
ありがとうございました。
944NAME IS NULL:2008/06/03(火) 20:53:33 ID:9lp1uw3k
mysqlマスターでさえ
打つのをしり込みする
コマンドを
もしあれば
伝授してください!
945NAME IS NULL:2008/06/03(火) 21:28:22 ID:???
>>944
マスターじゃないけど rm -rf でディレクトリを削除するのはやっぱり
不安だよ。何回も確認する。
946NAME IS NULL:2008/06/04(水) 11:22:18 ID:???
 質問させていただきます。
最近、パーティショニングを使い始めました。
やりたいことはPARTITION BY KEY()を使用したパーティショニングをし、
分割したデータやインデックスをdisk分散させるということなのですが、
これを実現させるには個々のパーティションに対し、DATA DIRECTORYと
INDEX DIRECTORYを地道に指定していくしかないのでしょうか?
947NAME IS NULL:2008/06/04(水) 16:53:49 ID:sTUXwMfM
UPDATE test SET name='aaa' WHERE id='1'
UPDATE test SET name='bbb' WHERE id='2'
UPDATE test SET name='ccc' WHERE id='3'

と言うように、各レコードを更新するに辺り
上記のように3回のSQLを実行せずに、まとめて1回で実行する
方法はありますでしょうか?
948NAME IS NULL:2008/06/04(水) 17:20:59 ID:???
UPDATE test SET
 name=IF(id=1,'aaa),
   IF(id=2,'bbb',
    IF(id=3,'ccc', 'xxx')
   )
 )
WHERE id in (1,2,3)
949NAME IS NULL:2008/06/04(水) 17:44:01 ID:???
それで速くなるの?
950NAME IS NULL:2008/06/04(水) 17:46:30 ID:???
試せばわかるんじゃね?
951NAME IS NULL:2008/06/04(水) 19:41:26 ID:???
ぐぁぁああぁ…replace into って、delete → insert だから、
autoincrement のフィールドの値が変わるじゃねぇか…。
952NAME IS NULL:2008/06/04(水) 23:33:29 ID:R8ngxTCT
mysqlで誰にも知られていない
秘密のコマンドがあると聞いた
そのコマンドとは?
953NAME IS NULL:2008/06/04(水) 23:46:50 ID:???
とりあえずマニュアル読めば誰にも知られていないわけではないけれど
>>952が知らないコマンドは出てくるんじゃないの?
954NAME IS NULL:2008/06/05(木) 01:51:04 ID:???
>>952
またかよ…。 だからSELECTだっつってんだろが
955NAME IS NULL:2008/06/05(木) 11:41:51 ID:???
秘密のコマンドはあります。
でも誰も知らないから誰も答えられません。
956NAME IS NULL:2008/06/05(木) 16:34:39 ID:539Qwkef
WebARENA SuitePRO V1を使っていて
mysql-3.23.58-16.FC3.1から
アップデートしたいのですが、
どうすればよいのでしょうか?
957NAME IS NULL:2008/06/05(木) 18:55:13 ID:???
素直にV2 に移行する。
958NAME IS NULL:2008/06/05(木) 20:17:33 ID:539Qwkef
>>957
やはりそれが一番簡単ですかね。
ドメインとメールアカウントが
けっこうあるので移転がめんどうだ・・・
959NAME IS NULL:2008/06/07(土) 02:13:41 ID:YKItF8pv
ここで質問してもいいのかな?
もし、スレ違いだったら誘導してくれると嬉しいです。

服の検索をするためのテーブル設計について行き詰まっています。
同じ服だけど、他種類のサイズがある場合、
どういうテーブル設計にすればいいか考えあぐねています。

現状では、
 (1) 服のサイズ以外の基本情報テーブル
 (2) 服の型番で、各サイズごとに記載したテーブル
を用意しています。

サイズで検索し、当てはまった商品の基本情報と全サイズ一覧を出す場合、
一度のリクエストで、何度もクエリを送信しなければならず、非効率です。

何とか良い方法はないでしょうか?

あるいは、そういう目的別のテーブル設計事例集などがあればいいのですが、
テーブル設計でAmazon検索しても、なぜか魔法瓶が羅列されてしまって、参考になりませんw
お薦めの本、あるいは、複数サイズの洋服の最適なテーブル設計があれば、
ヒントだけでも頂けませんでしょうか?
960NAME IS NULL:2008/06/07(土) 03:54:16 ID:???
JOINしたら一発ででね?
961NAME IS NULL:2008/06/07(土) 07:45:35 ID:???
JOINでもVUEでも一発で出すことはできるんですが、
型番ごとに各サイズを格納するという作業をプログラム側でやってしまうのは、
良い方法なのでしょうか? なんか泥臭い感じがして。
962NAME IS NULL:2008/06/07(土) 09:19:41 ID:???
>型番ごとに各サイズを格納するという作業をプログラム側でやってしまうのは、

あのね、「服の型番」と「サイズ」がどういう関係にあるか自体、業界外の人間には分からないんだ。
「型番」が決まればサイズが決まるのか、それとも、型番→サイズというハイアラーキーになっているのかとか…。

「型番」=「商品の基本情報」(のプライマリキー)で、「型番」→「サイズ」がハイアラーキーなのなら、
「型番ごとに各サイズを格納するという作業」は単なるJOINだから、プログラム側では何もしなくてよいのでは。
963NAME IS NULL:2008/06/07(土) 09:48:42 ID:???
なんだかシステム・エンジニアの要件定義そのもだな。

業界や会社の物事を、いかにコンピューター上で実現するか。
964NAME IS NULL:2008/06/07(土) 10:50:32 ID:???
>>962
例えば、型番「hoge」の中にS(15)、M(20)、L(25)があるというイメージです。
言われているハイアラーキーな関係になるかと思います。

>>959で言うと、
(1) テーブルに、型番「foo」の基本情報のフィールドがあり、
(2) テーブルに、S、M、L というサイズのフィールドが、
型番「foo」に対してそれぞれあります。

上記前提で、
例えばサイズ検索をして、hogeのMが引っ掛かった場合、
「foo」の全サイズ情報も出力したいので、SとLのフィールドが必要になります。

しかし、型番「bar」のサイズ展開は、L、XL、XXLであるため、
型番を元に、サイズをひとつのフィールドにまとめてしまうと、
検索するのに問題が生じます。

よって、それぞれのサイズのフィールドに、
各型番の基本情報をまとめるようなビューを作成しなければならないのです。
この方式だと、検索結果に一致したサイズの型番で
改めてクエリを投げて、結果をまとめるという処理が必要になります。

未熟なので、もっと効率的な方法はいくらでもあるのでしょうし、
指摘されている方法であっけなく片付けられる手順があるのかも知れませんが、
それを学ぶ手段や書籍を見つけられずに試行錯誤しているのが現状です。

MySQLに関してチューニングや入門書はいくらでも見つけられるのですが、
こういう事例に関しての設計例は、一切見つけられなくて困っています。

何とかお知恵あるいは書籍の情報を頂ければと思うのですが。
965NAME IS NULL:2008/06/07(土) 11:14:02 ID:???
>それぞれのサイズのフィールドに、各型番の基本情報をまとめる

の意味が分からん。

単純に、これじゃだめなの?
基本情報に「bar」があり、サイズがMかLのものを取得。

create table dress (RID int primary key auto_increment, ID varchar(24), sz varchar(8));
create table info (RID int primary key auto_increment, ID varchar(24), body text);

insert into dress (ID,sz) values ('foo','S'),('foo','M'),('foo','L),('bar','S'),('bar','M'),('bar','L'),('bar','LL'),('bar','LX');
insert into info (ID,body) values('foo','dress type foo'),('bar','dress type bar');
select distinct D.ID,D.sz,I.body from dress as D left join info as I using (ID) where (I.body like '%bar%' and( D.sz = 'M' or D.sz = 'L'));
966964:2008/06/07(土) 11:14:09 ID:???
・サイズ情報テーブル size
n,type,size,length,width
1,'foo','S',15,40
2,'foo','M',20,45
3,'foo','L',25,50
4,'bar','L',24,52
5,'bar','XL',28,58
6,'bar','XXL',32,64

・商品情報テーブル item
n,type,name,info
1,'foo','ふー','フーな感じです。'
2,'bar','ばー','バーな感じです。'

かなりシンプルにしましたが、
テーブルのイメージとしてはこんな感じです。

ここからsize.lengthで検索し、
一致したtypeの商品情報と他のサイズの情報を取り出したいのです。

良い設計あるいは最適な取り出し方について事例を知っていれば
教えて頂けると嬉しいです。
967964:2008/06/07(土) 11:26:12 ID:???
>>965
すいません、入れ違いました。
ご回答ありがとうございます。
ただ、>>966のようなイメージなのです。

>>965だと、barのLに関するdress, info情報は返ってきますが、
同時に(同時じゃなくてもいいですが)、barのLLとXLのdress情報も欲しいのです。
968NAME IS NULL:2008/06/07(土) 11:30:15 ID:???
サブクエリ exists の定番。

試してないけど
select distinct I.type,I.name,S.size,S.length,S.width from item as I left join size as S using(type)
where exists (select X.type from size as X where (X.size = 'M' and X.length= 15 and X.type = I.type);
969NAME IS NULL:2008/06/07(土) 11:31:40 ID:FRaL8y0I
winmysqladminnとやらは
5.0や6.0のバージョンではないの?
コマンドからしかできないのですかね?
970NAME IS NULL:2008/06/07(土) 11:56:22 ID:???
>>968
ありがとうございます。
非常に参考になります。
かなり欲しい結果に近い部分を得られました。

select distinct I.type,I.name,S.size,S.length,S.width from item as I left join size as S using(type)
where exists (select X.type from size as X where (X.length=15 and X.type=I.type));
で、fooのsize「S」が一致し、fooの全ての情報が取り出せました。

これに、X.length=15にあてはまるS.sizeがどれなのかも合わせて欲しいのです。
やはり、その場合は2回クエリを投げる必要がありますか?

実際のテーブルは規模がもっと大きいので、
検索結果が100件あるとすると、
ひとつのリクエストなのに1+100回クエリを投げないといけなくなり、
どうにか上手にまとめられればと思います。
971964:2008/06/07(土) 12:03:39 ID:???
すいません。>>970は私です。

よく考えると、>>968さんのクエリと、
通常のサイズ検索クエリ(select size from size where length=15;など)の2回やれば、
欲しい結果が全て得られることが分かりました。
1回では不可能な気がするので、現状最善の方法が見つかりました。

これでどうにかなりそうです。
大変勉強になりました。ありがとうございます。
972NAME IS NULL:2008/06/07(土) 20:56:12 ID:???
>>969
GUI tools
973NAME IS NULL:2008/06/08(日) 09:11:08 ID:???
configureについて質問です。ターゲットのプラットホームは Windows XP Pro SP3 で、
mysql-5.1.24-rc-win32.zip をダウンロード&解凍し、インストール自体は問題無くできたのですが、
その後に行う Server Instance Config Wizard の最後のでエラーとなってしまいます。

ttp://sylphys.ddo.jp/upld2nd/pc3/src/1212883375565.png
ttp://sylphys.ddo.jp/upld2nd/pc3/src/1212883466326.png

(恐らく、推測、妄想…)パスワードを設定したのにも関わらず、
パスワードなしでログインしようとしてエラーになっているのでしょうか?だとしたら、バグ?

結局、この最後に行う "Apply Security Settings" って何を行うのでしょうか?
974NAME IS NULL:2008/06/08(日) 13:16:18 ID:???
mysql5で最初から作られている
information_schema
っていうデータベースって削除してよい?
本家の解説読んでもイマイチワカランカッタ
975NAME IS NULL:2008/06/08(日) 13:42:57 ID:???
manual 29.7.5 には、「触るな」と書いてあるが。
976NAME IS NULL:2008/06/09(月) 02:47:03 ID:???
>>974
それVIEWみたいなもんだろ。
各テーブルの情報がテーブルっぽく見えてるだけのような。
消す意味が分からん。
977NAME IS NULL:2008/06/09(月) 02:54:10 ID:???
>>974
おまいは testデータベースも残しておけ
978NAME IS NULL:2008/06/09(月) 22:10:35 ID:???
>>974
information_schemaはRDBMSにとって必須なものだよ。
Windowsのレジストリってよくわからない設定しか書いてないから
消してよい?って言ってるようなもん。
つまり、「それを消すなんてとんでもない。」
979NAME IS NULL:2008/06/10(火) 01:29:46 ID:???
CREATE VIEW v AS SELECT * FROM t;
みたいにしてビューを作ると「*」が展開された形で作成されてしまい、
元のテーブルtのカラムが増減したときビューを作り直さなければならない
のですが、「*」を展開しない状態でビューを作ることはできないのでしょうか?
980NAME IS NULL:2008/06/10(火) 03:18:18 ID:dXdBkxZR
phpMyAdminのクエリ統計で、
? /秒の数値を見ているのですが、
「52.55」になっています。
起動してから一秒当たり52.55回SQLが発行されたという意味だと思いますが、
MYSQLでどの程度まで耐えられるのでしょうか?
これから、アクセスが伸びていくサイトなので、どの辺までが限界が読めなくて困っています。

max_connectionの設定を1000にしてあるので、最大接続数エラーになったことはないのですが、
サーバーのこの数値がここまでいくと、そろそろ限界っていったものがありますか?

宜しくお願いします。
981NAME IS NULL:2008/06/10(火) 08:33:45 ID:???
>>980
そうゆうのは、本番環境に投入する前にベンチなりとっとくもんじゃね?
それに、当然CPU,Memにもよるだろうし、ほかのプロセス(httddとかphpとか)状況にもよるし、
なにより、どんなクエリが発行されるかによって、(同一ハード環境でも)はっきり言って100倍違う。

ちなみにウチの環境だと、
cpu Core Duo 2.0Ghz Men 1GB で、
ごく軽いクエリをmysqldが100%cpu使って20000/s以上出るけど、
ちょっと複雑なクエリにすると、途端に1000/s位になるし、
Apache + mod_perl で実環境に近い状態でやると250/s位。
だからウチの場合ではその近辺まではなんも手ぇ打たんでいいかなと判断してる。(現状 20-25/s位で推移してるし)

もちろんこれはウチの環境に限っての話であって、これらの数値は全く意味をなさないけど。
サーバマシンの構成やデータ量、どんなクエリ投げてるかは、君しか知らんから、一概にいくらとは言えないよ。
982NAME IS NULL:2008/06/10(火) 12:02:34 ID:gwmqg6/k
JMeter でも使ってなんかベンチするとか.
983NAME IS NULL:2008/06/10(火) 12:42:51 ID:???
linuxにてシェルスクリプトでデータベースやテーブルの雛形構成を
作りたいと思っているのですが、手動なら>mysql 起動後に
SQLを打ち込んでいますが、スクリプトからの場合はどのような
方法が良いでしょうか?
984983:2008/06/10(火) 13:45:11 ID:???
すみません、自己解決しました。
テキストファイルにコマンド列記し、
mysql -u root < hoge.txt でいけました。失礼しました。
985NAME IS NULL:2008/06/10(火) 14:13:38 ID:???
mysqldumpで 指定したフォルダに保存したい場合は
どうすればいいんでしょうか?
教えて下さい。
986985:2008/06/10(火) 14:49:42 ID:???
自己解決致しました。
申し訳ありませんでした。
987973:2008/06/10(火) 16:40:12 ID:???
ひょっとして、この現象に見舞われてるのは俺だけなのか?
988NAME IS NULL:2008/06/10(火) 17:11:57 ID:???
いきなりバグ呼ばわりは無視される。
989NAME IS NULL:2008/06/10(火) 23:19:32 ID:???
って言うか、これはバグだろ。俺の方でも起こるし。5.0 使えばいい
990NAME IS NULL:2008/06/11(水) 08:29:18 ID:???
windowsのコマンドプロンプトで

> mysql

> mysqladmin

はどう違うんでしょうか?
991NAME IS NULL:2008/06/11(水) 09:22:08 ID:???
administrator(管理者権限)で入るか入らないかの違い。
992990:2008/06/11(水) 11:27:50 ID:???
>>991
レスありがとうございます。
では、administratorとrootはどう違うんでしょうか?
993NAME IS NULL:2008/06/11(水) 11:43:52 ID:???
root ってのは、単なるアカウント(ユーザー) 名。
994NAME IS NULL:2008/06/11(水) 11:56:36 ID:???
linuxやった方がいいのでは?
995990:2008/06/11(水) 14:23:51 ID:???
>>993
なるほど。よくわかりました。ありがとうございます。

>>994
あまりリナックスはさわったことないので挑戦してみます!
996NAME IS NULL
http://dev.mysql.com/doc/
PHP の Windows Help に続き、↑の Japanese v5.1 の CHM の Windows HTML Help ファイルでも、
キーワード部分が文字化けしてたので、修正した。ヘルププロジェクトファイルとコンテンツファイルをちょびっと弄った。

欲しい人はどうぞ
ttp://toku.xdisc.net/Sn2/up3/www/re2467.zip.html