1 名前:NAME IS NULL mailto:sage [2008/01/30(水) 03:49:10 ID:???] 快速 RDBMS、MySQL の総合スレです。 前スレ[MySQL 総合 Part12] pc11.2ch.net/test/read.cgi/db/1190512649/ [関連スレと過去ログ] find.2ch.net/index.php?STR=MySQL makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on [MySQL Developer Zone] dev.mysql.com/ [MySQL 日本語リファレンスマニュアル] dev.mysql.com/doc/mysql/ja/ [MySQL Internals Manual] dev.mysql.com/doc/internals/en/ [MyNA] www.mysql.gr.jp/ [MLja] lists.mysql.com/mysql-ja ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。 www.mysql.gr.jp/frame/modules/bwiki/?FAQ MyNAでの「心得の条」 www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0 ・関連ツール及びユーティリティ ・関連書籍 >>2 | .| /./ / | | _,,,,||,,,l.,,_ ト / | _ | .| / . | | .| | l .| .,-'|.l .|l .| `|. l ' /´ / / / | | |.| .| , |´ | .| | _|,_ l .| ./ ''`ト ./ / | | |.| | | .| |_,,l-,─-.,_、_ | / .λl,/ / . |. |. || | .| | /::::l ヽ `'' | / , ,.ミ,|´| ./ ,,,__.| .| ヘ .| | .|/ |:i::::::〉., ノl | / .// ∨| / `'' ‐ 、l | .|||l'l:|:|l:::::`':::::i´|| '' / ...:::::l..'' .`ヽ、 |:| ヾl.ヾ::::::::::| .|| ::::::::: l .\_ -''lヾ ヘ:、.ヘ;;_;ノ ノレ .l .ヾ=,,,_ .ヘ ,ヾ_,,=..''´.... _,,, / ヽ .i'`''‐--.〉''´ .ヽ:::::::: _,,, -‐'''´:::::l ./.| drop tableは1日10回な! .\ ヽ`ニ / l. /:::::::::::::::::::::::/ i''ヘ .l `ヽ .l-‐''l / .l:::::::::::::::::_;;-ヘ l ヽ ヘ ./.`iヽ .|ヽ| ./ ,,,,,,,_.ゞ,,, -‐''ヽ. |.| .| ヾ.、.ヽ / /|.| ヽ .| .| /ヽ /:::::ヾ .| ,l '| .l.l '|ヽ.、.ヽ // /./.|,, -'''''''''''''''-.、.'-< .| ヽ /:::::::::lト''´ .| | | .i.| .ヾ.、.ヽ / / /./ ヽ,.` .l ヽ,'ノ/ ヾ_;;;l.l |/ .l l | ヾ.、lヘ ./ .//l i | .ヾ |:::::|.| .|' l// i.|| i.|
152 名前:NAME IS NULL [2008/02/23(土) 16:02:37 ID:qXPAWXxv] innoDBを使うとSELECT COUNT(*)の処理がMyISAMと比べて桁違いに遅いと思いますが、 COUNT処理を高速化するために、何か方法はないでしょうか? 前にどっかのサイトで、innoDBでのCOUNT処理を速くするテクニックが書かれていたと思うのですが、 どこだか見つけることができませんでした。 宜しくお願いします。
153 名前:NAME IS NULL mailto:sage [2008/02/23(土) 16:39:57 ID:???] MySQL5.1から行レベルレプリケーションというものが採用されたということなのですが、 行レベルレプリケーションとは具体的にはどういうものでしょうか?
154 名前:NAME IS NULL mailto:sage [2008/02/23(土) 16:45:15 ID:???] >>152 innodbのcount(*)検索が遅いのは、クラスタインデックスという仕組みのためらしいです。 これを怪傑する方法としては、force keyを使って、 主キーインデックス以外のカラム(もちろんindexはらないとだめ)を 指定するのが常套手段だったと思います。 これの方法だと、1レコードのサイズが大きいほど劇的に性能あがりますね。
155 名前:>>154 mailto:sage [2008/02/23(土) 16:47:39 ID:???] 訂正。 force keyじゃなく、force indexだった。 select count(*) from test_table force index(col);
156 名前:NAME IS NULL mailto:sage [2008/02/23(土) 16:52:23 ID:???] >>151 そういうときは、caseだ。ばか。
157 名前:NAME IS NULL mailto:sage [2008/02/23(土) 17:18:48 ID:???] >>151 select ifnull(a,0)+ifnull(b,0) ...
158 名前:NAME IS NULL mailto:sage [2008/02/23(土) 17:32:11 ID:???] >>153 今まではクエリを転送してスレーブ側で実行していたが、変更されたレコードデータその物を転送するようになった。
159 名前:NAME IS NULL [2008/02/23(土) 23:01:13 ID:rFdPd3m0] すみません。ビューを作成時のSQL文にバグがあったので、作成時のSQL文を確認したいのですが、 どのようなコマンドを打てばいいのでしょうか。
160 名前:160 mailto:sage [2008/02/23(土) 23:20:53 ID:???] 事故解決しました。 HDDが飛んでしまったようです。
161 名前:NAME IS NULL mailto:sage [2008/02/24(日) 11:39:20 ID:???] >>115 Handler_read_rnd_nextはテーブルのフルスキャンで何行読んだかを 示しているので、log_slow_queriesに加えてlog_queries_not_using_indexesを ONにするとどのクエリがやらかしてるのか分かると思う。 >>159 show create view XXX
162 名前:NAME IS NULL mailto:sage [2008/02/24(日) 12:01:12 ID:???] あるCMSをインスコしたときテーブルをいっぱい作成されました。 そのテーブルとテーブル内のフィールドのCollationの値を すべて変更したいんですが、どうやるのが一番かっこいいんでしょうか? おねがいします。phpMyAdminは使えます。
163 名前:NAME IS NULL mailto:sage [2008/02/24(日) 14:30:31 ID:???] >>162 DROP DATABASE "DB名"; これが一番最強でクール。
164 名前:NAME IS NULL mailto:sage [2008/02/24(日) 14:46:35 ID:???] >>163 すでにデータが少し入ってるので消したくないんです。
165 名前:NAME IS NULL mailto:sage [2008/02/24(日) 15:13:59 ID:???] MySQLクライアントで10万件のレコードをselectしたとき、最後に 100000 rows in set (1.26 sec) と表示されます。 1.26secかかったことになっているのですが、実際には25秒かかっています。( 実際の実行時間を表示するにはどうすればよいのでしょうか?
166 名前:NAME IS NULL mailto:sage [2008/02/24(日) 16:05:37 ID:???] 25秒ってのは表示とかよけいな処理を含んでるんじゃないの?
167 名前:NAME IS NULL mailto:sage [2008/02/24(日) 16:09:06 ID:???] mysqlってテーブル単位でアクセス権設定できますか? hogeデータベースのfugaテーブルのみにアクセス可能なユーザを 設定したいのです。
168 名前:NAME IS NULL mailto:sage [2008/02/24(日) 16:13:12 ID:???] 10万件のレコードを1秒かそこらで取得できるわけないでしょw 釣りですか?
169 名前:NAME IS NULL [2008/02/24(日) 16:47:56 ID:PjrHaGxS] ディスクのIOにかかる部分はシステムコール内で 消費されているからなぁ.その分は1.26秒には 入っていないでしょ.
170 名前:NAME IS NULL mailto:sage [2008/02/24(日) 18:22:21 ID:???] あんまり正確じゃないけど select count(*) from ( 計りたいSQL ); というのをよくやる
171 名前:名無しさん [2008/02/25(月) 00:10:58 ID:9FzPKS4K] MYSQL導入するのに丸一日かかった 頑張って勉強するお
172 名前:NAME IS NULL mailto:sage [2008/02/25(月) 00:24:21 ID:???] >>171 administratorとQueryBrowserいれとけよ、便利だから
173 名前:NAME IS NULL mailto:sage [2008/02/25(月) 00:30:39 ID:???] >>165 1.26secというのはクエリをサーバーに投げてから結果が返ってくるまでの時間。 25秒は表示にかかった時間も計っているのでは?
174 名前:NAME IS NULL mailto:sage [2008/02/25(月) 00:31:59 ID:???] >>162 alter table xxxx convert to charset utf8 とか?
175 名前:NAME IS NULL mailto:sage [2008/02/25(月) 00:34:07 ID:???] >>170 表示をころすわけね
176 名前:NAME IS NULL [2008/02/25(月) 01:53:59 ID:z+rzzFbc] dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html ↑で 「ストアド ルーチン内 (ステートメントをストリングとして動的に構築し、実行する場 ) で動的 SQL を使うことはできない。」 という記述を見つけたんだけど、ストアド内でSQL文字列を構築して実行っていうのができないってことですか?
177 名前:NAME IS NULL [2008/02/25(月) 02:13:10 ID:z+rzzFbc] set @vals = "'a','b','c'"; select * from tbl where fld in (@vals); @valsが動的に変わる場合、↑のようなことをやる良い方法はないでしょうか?
178 名前:phpMyAdminの使いかた [2008/02/25(月) 03:07:09 ID:Zgifsms/] phpMyAdminについて質問があります。 現在、次の環境でphpMyAdminをインストールしようとしいるのですが最後の"pma" ユーザに対するパスワードの設定がうまくいきません。 その為、動作確認の為に次のURLにアクセスをしたところトップページ は表示されるのですが、幾らパスワードを入力しても弾かれてしまいます。(エラー発生) localhost/phpMyAdmin/ 【エラーメッセージ】 エラー #1045 - Access denied for user 'pma'@'localhost' (using password: YES) 【環境】 ・Linux(CentOS5)・MySQL5・PHP5 ・(phpMyAdmin-2.11.4-all-languages-utf-8-only (これをインストールする予定) 【phpMyAdminの設定ファイル】 # vi config.inc.php 17 $cfg['blowfish_secret'] = 'tekitounamoziwoireta'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ 37 $cfg['Servers'][$i]['controluser'] = 'pma'; 38 $cfg['Servers'][$i]['controlpass'] = 'pass'; どうすればphpMyAdminを使える様になるのでしょうか?
179 名前:phpMyAdminの使いかた [2008/02/25(月) 03:20:06 ID:Zgifsms/] 補足です。 【参考サイト】 www.okku.jp/wiki/hiki.cgi? (Linux)CentOS+4.1%A4%C7phpMyAdmin%A4%F2%BB%C8%A4%A6 【エラーが発生するコマンド】 set password for pma@localhost=password('pass'); 【エラーメッセージ】 ERROR 1133 (42000): Can't find any matching row in the user table どなたか詳しい方お願い致します。
180 名前:>>165 mailto:sage [2008/02/25(月) 10:42:16 ID:???] みなさん、ありがとうございます。 みなさんは、性能実測行うときにどのような方法でやられているのでしょうか? 私は、時計使ってやっているのですが、、
181 名前:NAME IS NULL mailto:sage [2008/02/25(月) 11:28:26 ID:???] >>179 MySQLにpma@localhostが登録されてないんじゃね?
182 名前:NAME IS NULL [2008/02/25(月) 17:10:30 ID:pyl/7W05] 6万行のテーブルにプライマリーキーで検索を掛けると、 300回に1回程度、実行速度が5秒くらいになることがあります。 アクセスが多い(平均35クエリー/秒)ので、それが原因かもしれませんが、 他にひっかかりそうなボトルネックになるような箇所は考えられませんね。
183 名前:179 [2008/02/26(火) 01:21:13 ID:vmOg1J9D] >>181 MySQLの登録ユーザに"pma"を追加するという事でしょうか? (つまり、rootユーザの様にコマンドラインからユーザを追加するSQLを 流すという事)
184 名前:179 [2008/02/26(火) 02:19:02 ID:vmOg1J9D] >>181 ありがとうございます。 解決しました^^;
185 名前:NAME IS NULL [2008/02/26(火) 09:47:14 ID:yVz26w0r] InnoDBをMEMORYに変換しようとすると、TEXT/BLOG型はサポートしていないと 怒られるのですが、10000文字程度を格納しているフィールドがありVARCHARに出来ないのですが、何かよい方法はありますか? ヨロシクお願いします。
186 名前:NAME IS NULL mailto:sage [2008/02/26(火) 14:39:58 ID:???] >>182 メモリが足りなくてスワップしてるとか
187 名前:NAME IS NULL [2008/02/26(火) 22:58:36 ID:1h0phFuN] page.txt revision.txt text.txtの3つのファイルを mysqlにインポートしたいのですがERROR 1064 (42000)がでます mysqlimport -u root -L corpus /dir/data/*.txt mysqlimportコマンドのどこがいけないでしょうか
188 名前:NAME IS NULL mailto:sage [2008/02/26(火) 23:34:15 ID:???] >>187 エラーの詳細をkwsk txtファイルの内容は間違いないの? 改行コードが2バイトになってるとか
189 名前:NAME IS NULL mailto:sage [2008/02/27(水) 00:26:54 ID:???] >>182 >300回に1回程度、実行速度が5秒くらいになることがあります。 このとき、MySQLクライアントでshow processlist;したら何かわかりませんか?
190 名前:NAME IS NULL mailto:sage [2008/02/27(水) 01:44:17 ID:???] start slaveしたら以下のエラーが出て、masterサーバとつなげません。 080227 10:20:35 [ERROR] Slave I/O thread: error connecting to master 'replications@hoge:3306': Error: 'Lost connection to MySQL server during query' errno: 2013 retry-time: 60 retries: 86400 たぶんerrno: 2013がその理由だと思うのですが、 このエラー番号の意味ってどこを見ればわかるんでしょうか?
191 名前:NAME IS NULL [2008/02/27(水) 09:12:12 ID:Ry3s+xrT] 日時が入っているfield_nameに対して、日付のみに着目して 今日だけのデータを取りだしたい時に、下のようにやると、 INDEXが機能せず、フルスキャンになってしまいます。 TO_DAYS(NOW()) = TO_DAYS(field_name) 何か実装方法としていい方法はないでしょうか?お願いします。
192 名前:NAME IS NULL mailto:sage [2008/02/27(水) 09:53:05 ID:???] 関数入れるとインデックスは使われません。 日時の場合は、当日以上翌日未満にすればよいです。
193 名前:NAME IS NULL mailto:sage [2008/02/27(水) 12:19:22 ID:???] 今更ながらですが、トランザクションが必要がない場合に INNODBとMYISAMって使い分けをした方がいいでしょうか? データーベースの中にトランザクションを必要とするものがありまして、 全部INNODBにしているのですが、トランザクションを必要としないものを MYISAMにするかどうか検討しています。 HPを色々見ても、大して変わらないという人や、むしろINNODBの方が速いという人までいて、 決めかねています。皆さんのご意見をお伺いできたらと思っています。 私は、5.1を使っています。ヨロシクお願いします!
194 名前:NAME IS NULL mailto:sage [2008/02/27(水) 13:09:00 ID:???] 使い方次第
195 名前:NAME IS NULL [2008/02/27(水) 14:47:14 ID:3YI/hApE] MySQLはサンマイクロに買収されたのか。
196 名前:NAME IS NULL mailto:sage [2008/02/27(水) 15:11:45 ID:???] >>193 長短所を理解すれば答えはおのずと出るはずです。 >>195 それ、2,3月も前の話でしょ。 もうコバルトの話とかいらんでw
197 名前:NAME IS NULL [2008/02/27(水) 20:50:25 ID:IDLP0qwH] SELECT id FROM a INNER JOIN b USING(id) WHERE id='1' として結果が0(ヒットしない)場合、WHEREの条件を無しにして 全体のレコードを取得したいと思います。 上記をどのように変更すればいいのでしょうか?
198 名前:NAME IS NULL mailto:sage [2008/02/27(水) 21:03:08 ID:???] SELECT id FROM a INNER JOIN b USING(id) WHERE id=id
199 名前:NAME IS NULL [2008/02/27(水) 21:51:08 ID:IDLP0qwH] >>198 すみません、あくまで「id=検索値」の結果が無かった場合に 全体のレコードを取得したいので、最初から全体を取得するのではないです。。
200 名前:NAME IS NULL mailto:sage [2008/02/27(水) 22:08:07 ID:???] 無かった場合に実行すればよい
201 名前:NAME IS NULL mailto:sage [2008/02/28(木) 00:09:47 ID:???] >>193 そのシステムが命に関わるような場合、迷わずInnoDB そのシステムが途中でデータ消えてもいいのでとにかく早くしたい場合MyISAM (MyISAMでも一時間に一回バックアップとればそんなに問題にはならないでしょう。)
202 名前:NAME IS NULL mailto:sage [2008/02/28(木) 00:26:11 ID:???] InnoDBって遅いってイメージがあったけど、 実際違うなら、トランザクション使えるし、InnoDBの方がよくねぇ?
203 名前:NAME IS NULL mailto:sage [2008/02/28(木) 00:34:52 ID:???] >>201 このMyISAMならデータが消えるって、何を前提にしてんだ?
204 名前:NAME IS NULL mailto:sage [2008/02/28(木) 02:13:50 ID:???] >>203 >>201 じゃないが、実際に両方とも運用していると、 MyISAMは一ヶ月に1回位、データがクラッシュする。 「XXXX marked as crashed」とかっていうエラーを吐き出す。 その場合は、REPAIRすると95%は直るが、5%はREPAIREも失敗する。 信頼性を犠牲にして速度を速めているのがMyISAMという認識でいる。
205 名前:NAME IS NULL mailto:sage [2008/02/28(木) 09:41:04 ID:???] MyISAMは確かに壊れやすいと思う。 読み出しと重ならなくても、更新が多い場合は避けるようにした。 追記だけとか、読むだけのテーブルなら良いと思うけど。 あんまり使ってないけど、MyISAMでもFixedなら壊れたことはないかな。
206 名前:NAME IS NULL mailto:sage [2008/02/28(木) 10:30:38 ID:???] っていうかDBで壊れやすいって致命的な欠陥じゃね? 車に例えれば、時々ブレーキが利かなくなることがあるってことだろ? Oracleと比べるのは酷だが、どんなに機能が充実してOracleに近づいたといっても、 クリティカルなところ(お金に関わる部分や基幹業務、公共インフラ)では採用できないDBだな。
207 名前:NAME IS NULL mailto:sage [2008/02/28(木) 13:16:55 ID:???] 当たり前です
208 名前:NAME IS NULL [2008/02/28(木) 14:20:53 ID:vUxSrTHj] かなり大きなvarcharを抱えているテーブルで文字検索をしたいのですが 全文検索用のインデックスを作って検索を高速化してくれるようなMySQLのアドオンってないでしょうか? やっぱり正攻法でそういうことは全文検索用のソフトウェアにさせるべきなのでしょうか?
209 名前:NAME IS NULL mailto:sage [2008/02/28(木) 14:57:51 ID:???] >>206 それはちょっとちゃうな。 君はコンビニに買い物に行くとき、防弾チョッキ着て、護衛を付け、 遭難用携帯食料3日間分を念のため持って出かけるわけかい?
210 名前:NAME IS NULL mailto:sage [2008/02/28(木) 19:00:53 ID:???] >>206 ,209 どっちも両極端な意見すぎ! 特徴を理解した上で適材適所で使え。
211 名前:NAME IS NULL mailto:sage [2008/02/28(木) 23:43:23 ID:???] >>206 誰もMySQLの信頼性の話してない。 壊れやすいといっているのはMyISAMの話。 MyISAMの信頼性の話をしている。 MyISAMの信頼性が低いのは事実だが、 全体バックアップ+バイナリログで普通に復旧できるので壊れてもすぐに復旧できる。
212 名前:NAME IS NULL mailto:sage [2008/02/28(木) 23:46:25 ID:???] 話は変わるが、MyISAMってみんななんてよんでるの? おれの周りでは、"ミィザム"とか"マイサム"とか "エムワイアイエスエーエム"とかいろいろなんだが、 統一しないか?
213 名前:NAME IS NULL mailto:sage [2008/02/29(金) 00:00:14 ID:???] 勲は俺のもの での統一でいいと思うけど
214 名前:NAME IS NULL mailto:sage [2008/02/29(金) 00:41:08 ID:???] >>208 Tritonn
215 名前:NAME IS NULL mailto:sage [2008/02/29(金) 00:42:11 ID:???] いや、MyISAMだって、OSのクラッシュとかがなければ壊れないでしょ。フツー。
216 名前:NAME IS NULL mailto:sage [2008/02/29(金) 01:33:15 ID:???] IO弱いと壊れやすいんじゃね?
217 名前:NAME IS NULL mailto:sage [2008/02/29(金) 03:23:40 ID:???] mysql4.1から5.0のサーバーに移行しようとしてmysqldumpで全てのDBのバックアップを取ったんですが なぜか新しい環境でユーザーは適用されているもののパスワードが反映されないです。 パスワード無しで接続できてしまい、逆に前の環境のパスワードを指定すると弾かれます。 mysql.userテーブル見てみたんですが、一応それぞれのユーザーに別々のパスワードは付与されているみたい。 なんでパスワードが適用されないんでしょう 教えてえろい人
218 名前:NAME IS NULL mailto:sage [2008/02/29(金) 11:38:26 ID:???] changelogみると、MyISAMが壊れるの直したってよく出てくるよね。
219 名前:NAME IS NULL [2008/02/29(金) 13:28:53 ID:q3z3v3NL] >>214 THX こういうものがあったとは. namazu とかで別途全文検索機能は実現するかぁ, とか思っていたけどこりゃ便利そうだ. というか,MySQL の FULLTEXT っていつの間にか UTF-8にも対応していたのか.といっても分かち書きが 必要なので結局は Tritonn のお世話にならなきゃってことですね.
220 名前:NAME IS NULL mailto:age [2008/02/29(金) 18:05:13 ID:???] MySQLで問い合わせ時間を得たいのですがどうすればいいでしょうか? mysql> select sum(1+2) as sum from dual; +----------+ | sum | +----------+ | 3 | +----------+ 1 row in set (0.00 sec) この場合、sumと問い合わせ時間(0.00 sec)を返してほしいです。
221 名前:NAME IS NULL mailto:sage [2008/02/29(金) 18:24:59 ID:???] >>220 度々似たような質問を見かけるんだが、 前スレにもあったように、問い合わせの時間が表示されるのは、mysql(クライアントプログラム)の独自機能であって、 mysqld(サーバー)の機能ではない。 よって時間を得たければ、例えばPerlなら、use Time::HiRes ; とすりなり、 PHPなら microtime(true) するしかないじゃないの。(てか俺はそうしてる。)
222 名前:NAME IS NULL mailto:sage [2008/02/29(金) 19:16:51 ID:???] mysql v4.0.20で文字コードにujis使用のサーバから Win機でODBC接続してVB6でデータ取得について質問 MyODBC-3.51.06試したけどダメだった... で myodbc-3.51.06-conv_ujis.zip 拾って使ってます。 HPからのリンク切れてるけどこれ使ってもいいの?
223 名前:NAME IS NULL mailto:sage [2008/02/29(金) 21:18:05 ID:???] あるサーバから別のサーバへMySQLのデータベースを 移動したいのですが、 .frm .MYD .MYI をそのまま移動させて 使用することってできるのでしょうか? 以前SQL文でエクスポートしてたんですが、 文字化けとかでかなり手こずった記憶がありまして、 できれば簡単な方法が良いなと思っています。
224 名前:NAME IS NULL [2008/02/29(金) 21:26:22 ID:dsP0ZzyD] mysql 5.0.27 でレプリケーションを組んだのですが、slaveサーバーでsyntax エラーを起こします。 mysqlのバージョンは一緒だし、文字コードも show variable で見るとmasterと slaveは同じものだし、、、 どうもバイナリー項目の辺りでおかしいのかな?と思いますが、なぜだかわかりません。 どなたか、解決方法ご存知の方、おりませんか?
225 名前:NAME IS NULL [2008/02/29(金) 23:13:19 ID:i7o2Y2Yb] IDEXをいくつか貼ってあるテーブルにINSERTをする場合に、 1万件の場合と、1000万件の場合で処理速度が大幅に変わりますか? ログ系のテーブルなので、これからどんどん溜まっていったときに、 どんどん処理が遅くなるんじゃないかと不安に思っているのですが・・・ InoDBは確かBTREEだったと思いますが、BTREEの作成コストがその大きさに依存するかどうか知りたいです。 宜しくお願いします。
226 名前:NAME IS NULL mailto:sage [2008/03/01(土) 01:32:50 ID:???] >>223 同じバージョンならできる。
227 名前:NAME IS NULL mailto:sage [2008/03/01(土) 01:33:24 ID:???] >>224 バイナリログの中のエラーになったクエリを見ればいいんじゃないかな。
228 名前:NAME IS NULL mailto:sage [2008/03/01(土) 10:51:32 ID:???] レプリケーションについて教えてください。 レプリケーションの方式として、 1master-複数slave という方式と mutil-master という方式があるみたいなのですが、 どういう場合にどちらを選ぶべきなのでしょうか?
229 名前:NAME IS NULL mailto:sage [2008/03/01(土) 11:49:48 ID:??? BE:835119239-2BP(0)] >>224 変わる。 もちろんインデックスのサイズとメモリ量による。 ログ系のテーブルなら、そんな複雑なインデックス貼らないだろうし(created_onとserver_idとstatusくらいか) 1000万件くらい大丈夫だと思うが。だめならパーティショニング。 それよりストレージエンジンをどうするか考えたほうがいいと思う。InnoDBかMyISAMかARCHIVEか。 >>228 シングルマスタはマスタがフェイルポイントになる。 マスタが死ぬと更新がまったく出来なくなる。 スレーブ1台をマスタに昇格させて復旧させる。 デュアルマスタはフェイルポイントがない。 auto_increment問題は、auto_increment_incrementとauto_increment_offsetを設定すれば大丈夫。 unique keyの重複したINSERTと、同一行の更新をどうするかが問題となる。 追加・更新のクエリを片方に寄せるというのも手。 3台以上のマルチマスタは手間の割にあまり利点ないので略。
230 名前:NAME IS NULL [2008/03/01(土) 17:49:39 ID:4HUS0plA] デュアルマスタってのはお互いがお互いのマスタであり スレーブであるっていう設定のこと? んで,3台以上ってのはそれをリング状にしたってこと?
231 名前:NAME IS NULL mailto:sage [2008/03/01(土) 19:12:32 ID:???] 自鯖のMySQL入れようと思うんだけど5を入れとくべき?
232 名前:NAME IS NULL mailto:sage [2008/03/01(土) 19:13:47 ID:???] うん
233 名前:NAME IS NULL mailto:sage [2008/03/01(土) 19:40:11 ID:???] 4系でもいいと思うけどな
234 名前:NAME IS NULL mailto:sage [2008/03/01(土) 20:15:00 ID:??? BE:1391863695-2BP(0)] >>230 そう。 あと、それぞれのマスタにスレーブをぶら下げたりもできる。
235 名前:NAME IS NULL [2008/03/01(土) 23:52:18 ID:4HUS0plA] >>234 デュアルマスタまではやったことあるけど, リング状ってのはまだやったことないな. 同じデータベースに対していどちらのマスタでも 更新ってのは怖くてやったことがない.
236 名前:NAME IS NULL mailto:sage [2008/03/02(日) 01:26:02 ID:???] >>228 俺もあまりよくしらないが、考えてみた。 まず、1マスタNスレーブの場合。 参照するたのslaveサーバが複数あるのだから当然、参照の負荷分散になる。 更新するためのmasterサーバも参照のアクセスと競合しないので、 負荷分散になるんだと思う。 >>229 の指摘でマスタが壊れたら更新ができなくなるといっているが それはmutil-masterも同じことだ。 確かに更新はできるが、データの不一致が起こるので、 むしろ障害発生時に更新をとめるような仕組み必要ではないか。 次、multi-masterの場合。 1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、 参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う。 更新は、あるサーバの更新が他のサーバ全てにレプリケーションされるわけだから、 更新については全く負荷分散にはならないんだと思う。 >どういう場合にどちらを選ぶべきなのでしょうか? 結論としては、更新が比較的多い場合、1マスタnスレーブを考えるべき。 参照メインで更新が殆どない場合、mutil-masterということになるんだろう。
237 名前:NAME IS NULL mailto:sage [2008/03/02(日) 02:24:27 ID:???] 覚醒せよ
238 名前:NAME IS NULL [2008/03/02(日) 02:44:46 ID:LX2+C4Nj] 助けて下さい。 mysqlで、間違えてデータベースを作ってしまいました。 その間違いを訂正しようとして、mysqlに登録したroot権限で 入っても、何をしたら良いかわからなくて。。 全部無かったことにしたくて、アンインストールしたりしましたが、 またインストールしたら間違えた設定のまま消えません。 完全に消去するには、どうすれば良いのでしょうか? ちなみにosはfedora8です。
239 名前:NAME IS NULL mailto:sage [2008/03/02(日) 09:48:34 ID:???] >>212 まいあいさむ
240 名前:NAME IS NULL mailto:sage [2008/03/02(日) 09:50:37 ID:???] >>217 4→5で認証方法変更されてるんだが
241 名前:229 mailto:sage [2008/03/02(日) 12:17:28 ID:??? BE:773258055-2BP(0)] >>236 > >>229 の指摘でマスタが壊れたら更新ができなくなるといっているが > それはmutil-masterも同じことだ。 いいえ。 > 確かに更新はできるが、データの不一致が起こるので、 『データの不一致』はどのサーバ間をさしている? > 次、multi-masterの場合。 > 1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、 > 参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う。 シングルマスタでマスタを参照してもいいので、1台増える訳ではない。 # というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。 > 更新は、あるサーバの更新が他のサーバ全てにレプリケーションされるわけだから、 > 更新については全く負荷分散にはならないんだと思う。 ここだけは合っている。 しかし、5.1の行レプリケーションを考慮した場合は間違いになる。 全般的にめちゃくちゃだ。 レプリケーションの仕組みをもうちょっと学んだほうがいい。
242 名前:>>236 mailto:sage [2008/03/02(日) 15:14:39 ID:???] >>241 >> 確かに更新はできるが、データの不一致が起こるので、 >『データの不一致』はどのサーバ間をさしている? 故障したサーバとそれ以外のサーバ。 たとえば、3台でリング上のレプリケーション組んでるとするだろ。 それぞれ、A、B、Cとする。データの流れは、A→B→C→A...とする。 Bが壊れた場合、AからCのデータの流れが途絶えるわけだから、 Cの更新はAに反映されるが、Aの更新はCに反映されない。 >シングルマスタでマスタを参照してもいいので、1台増える訳ではない。 ># というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。 mutil-masterの話なのに、この話がでるのが意味不明。説明してほしい。 >しかし、5.1の行レプリケーションを考慮した場合は間違いになる。 そのとおりだね。間違いでした。
243 名前:NAME IS NULL mailto:sage [2008/03/02(日) 15:23:45 ID:???] レプリケーションって難しいねw というか俺の頭が悪いのかorz で、>>241 に聞きたいのですが、 >どういう場合にどちらを選ぶべきなのでしょうか? に対する答えは、>>236 さんの答えでは不十分ってこと? そこらへんを解説きぼんぬ。
244 名前:NAME IS NULL [2008/03/02(日) 20:41:09 ID:Fblr/lkn] selectの結果で実行するsql文を変更したいのですが ストアドプロシージャ・ファンクションを使わずに するにはどうしたらいいですか? 例sql文を教えてください。
245 名前:NAME IS NULL mailto:sage [2008/03/02(日) 21:28:44 ID:???] windows+linux のクラサバなんだけどjavaで動かしている時って mysqlの文字コードはsjisにしてる?それともutf8? vistaだとutf8が4バイトらしいんだが・・
246 名前:NAME IS NULL mailto:sage [2008/03/02(日) 22:05:28 ID:???] フハハ、utf-8は最大6バイトまであるわっ
247 名前:NAME IS NULL mailto:sage [2008/03/02(日) 23:33:09 ID:???] MySQLに限ってはutf-8だと3byteが上限 They can be encoded with 8, 16, or 24 bits, as in utf8
248 名前:229 mailto:sage [2008/03/03(月) 12:49:38 ID:???] >>242 >>『データの不一致』はどのサーバ間をさしている? > 故障したサーバとそれ以外のサーバ。 > たとえば、3台でリング上のレプリケーション組んでるとするだろ。 > (略) そうだね。だから3台以上のマルチマスタはあまり意味ないよ。 と、すでに229に書いた。 考えるならシングルマスタとデュアルマスタだけにした方がいいだろう。 『データの不一致』はデュアルマスタの場合にはどうなる? 3台以上のマルチマスタしか考えていない? >>シングルマスタでマスタを参照してもいいので、1台増える訳ではない。 >># というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。 > mutil-masterの話なのに、この話がでるのが意味不明。説明してほしい。 あなたは『1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う』と書いているけど、増えないでしょ。1マスタNスレーブでマスタを参照してもかまわないわけだし。 1マスタ1スレーブの場合もデュアルマスタの場合も、参照は2台からできる。 >>243 > レプリケーションって難しいねw いや、そんなに難しくないよ。5.0までのは、 マスタ: クエリを実行 -> 実行終了 -> 更新系のクエリなら(ちょこっと変えて)バイナリログに書く スレーブ: マスタからバイナリログを取ってくる -> 実行 ってやってるだけだし。bin/mysqlbinlogで見ると分かるが。 > >どういう場合にどちらを選ぶべきなのでしょうか? > に対する答えは、>>236 さんの答えでは不十分ってこと? 不十分つーか、236のは過程もひどいし結論は意味不明すぎる。 シングルマスタとデュアルマスタの得失を229に書いといたから、自分の環境にあわせて選べばいい。 でも、228の人のレベルからするとシングルマスタの方がいいと思うが...デュアルマスタはフェイルポイント無くなるけど、代償も多いからハマりそう。
249 名前:NAME IS NULL [2008/03/03(月) 17:55:10 ID:ABajaOyx] >>227 見たのだけれど、update行のバイナリー項目で変にスペースが入ったり\0が並んでたりで、、、 バイナリーログにも出力文字コードがあったりするのでしょうか? なぜ syntaxエラーなのか、、、
250 名前:NAME IS NULL mailto:sage [2008/03/03(月) 23:27:48 ID:???] 208 名前:Trader@Live![] 投稿日:2008/03/03(月) 23:24:21.29 ID:oVO24yUj 個人でも商売でもバイナリデータを直接操れよ データベースやエクセルとかいうやつは初心者だよ ----- と言われたんですが
251 名前:NAME IS NULL mailto:sage [2008/03/04(火) 00:01:37 ID:???] 左様か
252 名前:NAME IS NULL [2008/03/04(火) 01:37:03 ID:2te2Hach] >1マスタNスレーブでマスタを参照してもかまわないわけだし この場合、更新クエリはマスタで、参照クエリはスレーブに投げるものだと思ったけど、 勘違いかな。。。