MySQL 総合 Part13
..
182:NAME IS NULL
08/02/25 17:10:30 pyl/7W05
6万行のテーブルにプライマリーキーで検索を掛けると、
300回に1回程度、実行速度が5秒くらいになることがあります。
アクセスが多い(平均35クエリー/秒)ので、それが原因かもしれませんが、
他にひっかかりそうなボトルネックになるような箇所は考えられませんね。
183:179
08/02/26 01:21:13 vmOg1J9D
>>181
MySQLの登録ユーザに"pma"を追加するという事でしょうか?
(つまり、rootユーザの様にコマンドラインからユーザを追加するSQLを
流すという事)
184:179
08/02/26 02:19:02 vmOg1J9D
>>181
ありがとうございます。
解決しました^^;
185:NAME IS NULL
08/02/26 09:47:14 yVz26w0r
InnoDBをMEMORYに変換しようとすると、TEXT/BLOG型はサポートしていないと
怒られるのですが、10000文字程度を格納しているフィールドがありVARCHARに出来ないのですが、何かよい方法はありますか?
ヨロシクお願いします。
186:NAME IS NULL
08/02/26 14:39:58
>>182
メモリが足りなくてスワップしてるとか
187:NAME IS NULL
08/02/26 22:58:36 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
08/02/26 23:34:15
>>187
エラーの詳細をkwsk
txtファイルの内容は間違いないの?
改行コードが2バイトになってるとか
189:NAME IS NULL
08/02/27 00:26:54
>>182
>300回に1回程度、実行速度が5秒くらいになることがあります。
このとき、MySQLクライアントでshow processlist;したら何かわかりませんか?
190:NAME IS NULL
08/02/27 01:44:17
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
08/02/27 09:12:12 Ry3s+xrT
日時が入っているfield_nameに対して、日付のみに着目して
今日だけのデータを取りだしたい時に、下のようにやると、
INDEXが機能せず、フルスキャンになってしまいます。
TO_DAYS(NOW()) = TO_DAYS(field_name)
何か実装方法としていい方法はないでしょうか?お願いします。
192:NAME IS NULL
08/02/27 09:53:05
関数入れるとインデックスは使われません。
日時の場合は、当日以上翌日未満にすればよいです。
193:NAME IS NULL
08/02/27 12:19:22
今更ながらですが、トランザクションが必要がない場合に
INNODBとMYISAMって使い分けをした方がいいでしょうか?
データーベースの中にトランザクションを必要とするものがありまして、
全部INNODBにしているのですが、トランザクションを必要としないものを
MYISAMにするかどうか検討しています。
HPを色々見ても、大して変わらないという人や、むしろINNODBの方が速いという人までいて、
決めかねています。皆さんのご意見をお伺いできたらと思っています。
私は、5.1を使っています。ヨロシクお願いします!
194:NAME IS NULL
08/02/27 13:09:00
使い方次第
195:NAME IS NULL
08/02/27 14:47:14 3YI/hApE
MySQLはサンマイクロに買収されたのか。
196:NAME IS NULL
08/02/27 15:11:45
>>193
長短所を理解すれば答えはおのずと出るはずです。
>>195
それ、2,3月も前の話でしょ。 もうコバルトの話とかいらんでw
197:NAME IS NULL
08/02/27 20:50:25 IDLP0qwH
SELECT id FROM a INNER JOIN b USING(id) WHERE id='1'
として結果が0(ヒットしない)場合、WHEREの条件を無しにして
全体のレコードを取得したいと思います。
上記をどのように変更すればいいのでしょうか?
198:NAME IS NULL
08/02/27 21:03:08
SELECT id FROM a INNER JOIN b USING(id) WHERE id=id
199:NAME IS NULL
08/02/27 21:51:08 IDLP0qwH
>>198
すみません、あくまで「id=検索値」の結果が無かった場合に
全体のレコードを取得したいので、最初から全体を取得するのではないです。。
200:NAME IS NULL
08/02/27 22:08:07
無かった場合に実行すればよい
201:NAME IS NULL
08/02/28 00:09:47
>>193
そのシステムが命に関わるような場合、迷わずInnoDB
そのシステムが途中でデータ消えてもいいのでとにかく早くしたい場合MyISAM
(MyISAMでも一時間に一回バックアップとればそんなに問題にはならないでしょう。)
202:NAME IS NULL
08/02/28 00:26:11
InnoDBって遅いってイメージがあったけど、
実際違うなら、トランザクション使えるし、InnoDBの方がよくねぇ?
203:NAME IS NULL
08/02/28 00:34:52
>>201
このMyISAMならデータが消えるって、何を前提にしてんだ?
204:NAME IS NULL
08/02/28 02:13:50
>>203
>>201じゃないが、実際に両方とも運用していると、
MyISAMは一ヶ月に1回位、データがクラッシュする。
「XXXX marked as crashed」とかっていうエラーを吐き出す。
その場合は、REPAIRすると95%は直るが、5%はREPAIREも失敗する。
信頼性を犠牲にして速度を速めているのがMyISAMという認識でいる。
205:NAME IS NULL
08/02/28 09:41:04
MyISAMは確かに壊れやすいと思う。
読み出しと重ならなくても、更新が多い場合は避けるようにした。
追記だけとか、読むだけのテーブルなら良いと思うけど。
あんまり使ってないけど、MyISAMでもFixedなら壊れたことはないかな。
206:NAME IS NULL
08/02/28 10:30:38
っていうかDBで壊れやすいって致命的な欠陥じゃね?
車に例えれば、時々ブレーキが利かなくなることがあるってことだろ?
Oracleと比べるのは酷だが、どんなに機能が充実してOracleに近づいたといっても、
クリティカルなところ(お金に関わる部分や基幹業務、公共インフラ)では採用できないDBだな。
207:NAME IS NULL
08/02/28 13:16:55
当たり前です
208:NAME IS NULL
08/02/28 14:20:53 vUxSrTHj
かなり大きなvarcharを抱えているテーブルで文字検索をしたいのですが
全文検索用のインデックスを作って検索を高速化してくれるようなMySQLのアドオンってないでしょうか?
やっぱり正攻法でそういうことは全文検索用のソフトウェアにさせるべきなのでしょうか?
209:NAME IS NULL
08/02/28 14:57:51
>>206
それはちょっとちゃうな。
君はコンビニに買い物に行くとき、防弾チョッキ着て、護衛を付け、
遭難用携帯食料3日間分を念のため持って出かけるわけかい?
210:NAME IS NULL
08/02/28 19:00:53
>>206,209
どっちも両極端な意見すぎ!
特徴を理解した上で適材適所で使え。
211:NAME IS NULL
08/02/28 23:43:23
>>206
誰もMySQLの信頼性の話してない。
壊れやすいといっているのはMyISAMの話。
MyISAMの信頼性の話をしている。
MyISAMの信頼性が低いのは事実だが、
全体バックアップ+バイナリログで普通に復旧できるので壊れてもすぐに復旧できる。
212:NAME IS NULL
08/02/28 23:46:25
話は変わるが、MyISAMってみんななんてよんでるの?
おれの周りでは、"ミィザム"とか"マイサム"とか
"エムワイアイエスエーエム"とかいろいろなんだが、
統一しないか?
213:NAME IS NULL
08/02/29 00:00:14
勲は俺のもの での統一でいいと思うけど
214:NAME IS NULL
08/02/29 00:41:08
>>208
Tritonn
215:NAME IS NULL
08/02/29 00:42:11
いや、MyISAMだって、OSのクラッシュとかがなければ壊れないでしょ。フツー。
216:NAME IS NULL
08/02/29 01:33:15
IO弱いと壊れやすいんじゃね?
217:NAME IS NULL
08/02/29 03:23:40
mysql4.1から5.0のサーバーに移行しようとしてmysqldumpで全てのDBのバックアップを取ったんですが
なぜか新しい環境でユーザーは適用されているもののパスワードが反映されないです。
パスワード無しで接続できてしまい、逆に前の環境のパスワードを指定すると弾かれます。
mysql.userテーブル見てみたんですが、一応それぞれのユーザーに別々のパスワードは付与されているみたい。
なんでパスワードが適用されないんでしょう
教えてえろい人
218:NAME IS NULL
08/02/29 11:38:26
changelogみると、MyISAMが壊れるの直したってよく出てくるよね。
219:NAME IS NULL
08/02/29 13:28:53 q3z3v3NL
>>214 THX
こういうものがあったとは.
namazu とかで別途全文検索機能は実現するかぁ,
とか思っていたけどこりゃ便利そうだ.
というか,MySQL の FULLTEXT っていつの間にか
UTF-8にも対応していたのか.といっても分かち書きが
必要なので結局は Tritonn のお世話にならなきゃってことですね.
220:NAME IS NULL
08/02/29 18:05:13
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
08/02/29 18:24:59
>>220
度々似たような質問を見かけるんだが、
前スレにもあったように、問い合わせの時間が表示されるのは、mysql(クライアントプログラム)の独自機能であって、
mysqld(サーバー)の機能ではない。
よって時間を得たければ、例えばPerlなら、use Time::HiRes ; とすりなり、
PHPなら microtime(true) するしかないじゃないの。(てか俺はそうしてる。)
222:NAME IS NULL
08/02/29 19:16:51
mysql v4.0.20で文字コードにujis使用のサーバから
Win機でODBC接続してVB6でデータ取得について質問
MyODBC-3.51.06試したけどダメだった...
で myodbc-3.51.06-conv_ujis.zip 拾って使ってます。
HPからのリンク切れてるけどこれ使ってもいいの?
223:NAME IS NULL
08/02/29 21:18:05
あるサーバから別のサーバへMySQLのデータベースを
移動したいのですが、
.frm .MYD .MYI をそのまま移動させて
使用することってできるのでしょうか?
以前SQL文でエクスポートしてたんですが、
文字化けとかでかなり手こずった記憶がありまして、
できれば簡単な方法が良いなと思っています。
224:NAME IS NULL
08/02/29 21:26:22 dsP0ZzyD
mysql 5.0.27 でレプリケーションを組んだのですが、slaveサーバーでsyntax
エラーを起こします。
mysqlのバージョンは一緒だし、文字コードも show variable で見るとmasterと
slaveは同じものだし、、、
どうもバイナリー項目の辺りでおかしいのかな?と思いますが、なぜだかわかりません。
どなたか、解決方法ご存知の方、おりませんか?
225:NAME IS NULL
08/02/29 23:13:19 i7o2Y2Yb
IDEXをいくつか貼ってあるテーブルにINSERTをする場合に、
1万件の場合と、1000万件の場合で処理速度が大幅に変わりますか?
ログ系のテーブルなので、これからどんどん溜まっていったときに、
どんどん処理が遅くなるんじゃないかと不安に思っているのですが・・・
InoDBは確かBTREEだったと思いますが、BTREEの作成コストがその大きさに依存するかどうか知りたいです。
宜しくお願いします。
226:NAME IS NULL
08/03/01 01:32:50
>>223
同じバージョンならできる。
227:NAME IS NULL
08/03/01 01:33:24
>>224
バイナリログの中のエラーになったクエリを見ればいいんじゃないかな。
228:NAME IS NULL
08/03/01 10:51:32
レプリケーションについて教えてください。
レプリケーションの方式として、
1master-複数slave
という方式と
mutil-master
という方式があるみたいなのですが、
どういう場合にどちらを選ぶべきなのでしょうか?
229:NAME IS NULL
08/03/01 11:49:48 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
08/03/01 17:49:39 4HUS0plA
デュアルマスタってのはお互いがお互いのマスタであり
スレーブであるっていう設定のこと?
んで,3台以上ってのはそれをリング状にしたってこと?
231:NAME IS NULL
08/03/01 19:12:32
自鯖のMySQL入れようと思うんだけど5を入れとくべき?
232:NAME IS NULL
08/03/01 19:13:47
うん
233:NAME IS NULL
08/03/01 19:40:11
4系でもいいと思うけどな
234:NAME IS NULL
08/03/01 20:15:00 BE:1391863695-2BP(0)
>>230
そう。
あと、それぞれのマスタにスレーブをぶら下げたりもできる。
235:NAME IS NULL
08/03/01 23:52:18 4HUS0plA
>>234
デュアルマスタまではやったことあるけど,
リング状ってのはまだやったことないな.
同じデータベースに対していどちらのマスタでも
更新ってのは怖くてやったことがない.
236:NAME IS NULL
08/03/02 01:26:02
>>228
俺もあまりよくしらないが、考えてみた。
まず、1マスタNスレーブの場合。
参照するたのslaveサーバが複数あるのだから当然、参照の負荷分散になる。
更新するためのmasterサーバも参照のアクセスと競合しないので、
負荷分散になるんだと思う。
>>229の指摘でマスタが壊れたら更新ができなくなるといっているが
それはmutil-masterも同じことだ。
確かに更新はできるが、データの不一致が起こるので、
むしろ障害発生時に更新をとめるような仕組み必要ではないか。
次、multi-masterの場合。
1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、
参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う。
更新は、あるサーバの更新が他のサーバ全てにレプリケーションされるわけだから、
更新については全く負荷分散にはならないんだと思う。
>どういう場合にどちらを選ぶべきなのでしょうか?
結論としては、更新が比較的多い場合、1マスタnスレーブを考えるべき。
参照メインで更新が殆どない場合、mutil-masterということになるんだろう。
237:NAME IS NULL
08/03/02 02:24:27
覚醒せよ
238:NAME IS NULL
08/03/02 02:44:46 LX2+C4Nj
助けて下さい。
mysqlで、間違えてデータベースを作ってしまいました。
その間違いを訂正しようとして、mysqlに登録したroot権限で
入っても、何をしたら良いかわからなくて。。
全部無かったことにしたくて、アンインストールしたりしましたが、
またインストールしたら間違えた設定のまま消えません。
完全に消去するには、どうすれば良いのでしょうか?
ちなみにosはfedora8です。
239:NAME IS NULL
08/03/02 09:48:34
>>212
まいあいさむ
240:NAME IS NULL
08/03/02 09:50:37
>>217
4→5で認証方法変更されてるんだが
241:229
08/03/02 12:17:28 BE:773258055-2BP(0)
>>236
> >>229の指摘でマスタが壊れたら更新ができなくなるといっているが
> それはmutil-masterも同じことだ。
いいえ。
> 確かに更新はできるが、データの不一致が起こるので、
『データの不一致』はどのサーバ間をさしている?
> 次、multi-masterの場合。
> 1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、
> 参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う。
シングルマスタでマスタを参照してもいいので、1台増える訳ではない。
# というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。
> 更新は、あるサーバの更新が他のサーバ全てにレプリケーションされるわけだから、
> 更新については全く負荷分散にはならないんだと思う。
ここだけは合っている。
しかし、5.1の行レプリケーションを考慮した場合は間違いになる。
全般的にめちゃくちゃだ。
レプリケーションの仕組みをもうちょっと学んだほうがいい。
242:>>236
08/03/02 15:14:39
>>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
08/03/02 15:23:45
レプリケーションって難しいねw
というか俺の頭が悪いのかorz
で、>>241に聞きたいのですが、
>どういう場合にどちらを選ぶべきなのでしょうか?
に対する答えは、>>236さんの答えでは不十分ってこと?
そこらへんを解説きぼんぬ。
244:NAME IS NULL
08/03/02 20:41:09 Fblr/lkn
selectの結果で実行するsql文を変更したいのですが
ストアドプロシージャ・ファンクションを使わずに
するにはどうしたらいいですか?
例sql文を教えてください。
245:NAME IS NULL
08/03/02 21:28:44
windows+linux のクラサバなんだけどjavaで動かしている時って
mysqlの文字コードはsjisにしてる?それともutf8?
vistaだとutf8が4バイトらしいんだが・・
246:NAME IS NULL
08/03/02 22:05:28
フハハ、utf-8は最大6バイトまであるわっ
247:NAME IS NULL
08/03/02 23:33:09
MySQLに限ってはutf-8だと3byteが上限
They can be encoded with 8, 16, or 24 bits, as in utf8
248:229
08/03/03 12:49:38
>>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
08/03/03 17:55:10 ABajaOyx
>>227
見たのだけれど、update行のバイナリー項目で変にスペースが入ったり\0が並んでたりで、、、
バイナリーログにも出力文字コードがあったりするのでしょうか?
なぜ syntaxエラーなのか、、、
250:NAME IS NULL
08/03/03 23:27:48
208 名前:Trader@Live![] 投稿日:2008/03/03(月) 23:24:21.29 ID:oVO24yUj
個人でも商売でもバイナリデータを直接操れよ
データベースやエクセルとかいうやつは初心者だよ
-----
と言われたんですが
251:NAME IS NULL
08/03/04 00:01:37
左様か
252:NAME IS NULL
08/03/04 01:37:03 2te2Hach
>1マスタNスレーブでマスタを参照してもかまわないわけだし
この場合、更新クエリはマスタで、参照クエリはスレーブに投げるものだと思ったけど、
勘違いかな。。。
253:229
08/03/04 01:46:40 BE:1237212285-2BP(0)
>>252
>>1マスタNスレーブでマスタを参照してもかまわないわけだし
> この場合、更新クエリはマスタで、参照クエリはスレーブに投げるものだと思ったけど、
> 勘違いかな。。。
そういう風に使うことも多いが、別に決まっている訳じゃない。
更新よりも参照のほうがはるかに多いなら、マスタも参照して全体の負荷下げるほうがいいし。
大きいトランザクションを投げることがあるなら、レプリケーションに遅れが出るけど、
その遅れが許されない場合はマスタを参照すべきだし。
254:NAME IS NULL
08/03/04 06:13:01
>>238
遅レスだが、OSも再インストールすればOK
255:NAME IS NULL
08/03/04 08:09:26
>>238
発想がすごいな。データベース触らないほうがいいかも知れないよ。
256:NAME IS NULL
08/03/04 09:31:06
>>238
まちがえたデータベースを削除すればいいだけではないの?
257:NAME IS NULL
08/03/04 11:09:12
データベース消してさらにアンインストールもしても
ディスク上には残ってるから完全に消したことにはならない
OSインストールしなおしてもデータベースが作られた
場所によってはそれでもまだ消えずに残っているかもしれない
HDD消去ツールを使って完全に消去してから
OSのインストールとMySQLのインストールをすることを薦める
258:NAME IS NULL
08/03/04 13:49:23
ちょっと相談
PHP
259:NAME IS NULL
08/03/04 19:51:00 Wg0XzILf
どこにも書けないからここで叫ばせてくれ!!
みんなー!!! releaseは予約語だぞー!!!
カラム名に使ったらダメだぞーーーー!!!!!
でもバッククォートでくくれば使えるぞーーーー!!!!
URLリンク(dev.mysql.com)
は、あくまで4.X系列のマニュアルだぞーーー!!!
URLリンク(www.rfs.jp)
が参考になるぞーーーー!!!!
260:NAME IS NULL
08/03/05 01:17:03
>>259
何、このきちがい。
261:NAME IS NULL
08/03/05 11:22:43
たぶんreleaseを使ってはまったんでしょ。
どうせならこっちを参考にすればいいのに。
URLリンク(dev.mysql.com)
262:NAME IS NULL
08/03/05 11:46:59 j7//b68F
my-small.cnf
my-medium.cnf
my-large.cnf
my-huge.cnf
それぞれどの程度のマシンスペックを想定してるんでしょうか?
最近は2Gオーバーのマシンも珍しくなくなっているので、
策定時の大きさの感覚とはギャップが出てきてるんじゃないかとも思うのですが・・・
263:NAME IS NULL
08/03/05 12:04:09 PwmTWvdf
>>261
ごえぇぇぇぇぇっ! 5.1版って和訳されてたのぉぉぉぉ!?!?!?!?!?!?!?
うぎゃぁぁぁぁあっぁあぁ!!!!!
ヘーターこーいぃぃぃたーーーーーーー!!!!!
俺の半日を返せええええぇぇぇぇぇぇぇぇえぇぇぇぇぇっっっ!!!
264:NAME IS NULL
08/03/05 17:41:55
>>262
DB専用サーバか、apacheやアプリケーションサーバと共有するか、DBの負荷程度、etc・・
状況によってどれをテンプレにするか決める。
メモリのギリまで各サービスに最適なメモリを命一杯割り当てる。
決してスワップさせないように。
265:NAME IS NULL
08/03/05 21:46:04 XFVJ2OUC
すいません。複数フィールドに対するユニーク制約の仕方がよくわからないんですが、
以下のようなテーブルがあったとき、
ID | DAT1 | DAT2 |
1 | 1 | 2 |
2 | 1 | 3 |
3 | 2 | 1 | ← ×
4 | 3 | 1 | ← ×
すでにあるdat1とdat2の逆は登録させたくないのですが、どのようにすれば良いでしょうか?
266:NAME IS NULL
08/03/05 22:10:05 BE:927909465-2BP(0)
> 策定時の大きさの感覚とはギャップが出てきてるんじゃないかとも思うのですが・・・
my-huge.cnfでもかなり少なめの設定。
KLabの記事でも読むといい。
267:NAME IS NULL
08/03/05 23:13:30
下記のようなデータがあったとき、
nameフィールドの中に入っている項目が多い順にソートして、なお且つ重複を取り除いて抽出するにはどういったSQLを書けばいいでしょうか?
この例では
りんご
みかん
ぶどう
という順に、入っているデータが多い順に一つにまとめて取り出したいです。
ID name
------------
01 りんご
02 みかん
03 ぶどう
04 りんご
05 りんご
06 みかん
07 りんご
08 みかん
宜しくおねがいしますm(_ _)m
268:NAME IS NULL
08/03/06 08:44:36 BE:556745292-2BP(0)
SELECT id, name, count(*) FROM rtfm GROUP BY name ORDER BY count(*) DESC;
マニュアル読めよ。
269:NAME IS NULL
08/03/06 08:57:15
すいません、ありがとうございます
270:NAME IS NULL
08/03/06 09:17:39
マニュアルつーかSQLの基本だわな
271:267
08/03/06 09:20:27
>>268
お礼に、よろしかったらこのリンゴいかがですか。いっぱい取れたもので。
272:NAME IS NULL
08/03/06 09:23:00 UrAOuO7y
いただきます
273:NAME IS NULL
08/03/06 11:58:06
>>265
おそらく設計が間違ってる気がするけど、とりあえずtriggerでも使えば?
(5.0以降だよね?)
274:NAME IS NULL
08/03/06 13:26:01
>>265
正規化して dat1,dat2 を別テーブルにもつ
別テーブルに、IDと datで uniqueインデックスを貼る
275:NAME IS NULL
08/03/06 20:46:55 Ai2/bdLU
すみません、質問させて下さい。
phpでmysqlを使っているのですが、並び替え(order)ではなく任意の行を
最初に取得することはできますか?
|0001|hoge1|
|0002|hoge2|
|0003|hoge3|
orderだと、hoge1,hoge2,hoge3と取得することはできますが、
hoge2(任意),hoge1,hoge3という順番で参照する方法を探しています。
最悪、ループを二回にわけようかとは思いますが。
よろしくお願いします。
276:NAME IS NULL
08/03/06 20:58:36
>>275
order by (id='0002') desc, id
じゃダメ?
277:275
08/03/06 21:14:21
>>276
!!!!!!
そんなのあったんですか。。orz
とてつもなくありがとうございました。
278:NAME IS NULL
08/03/06 21:25:21
>>275
オレならソート用のマスタテーブルを joinして sortカラムとかで order する
279:NAME IS NULL
08/03/07 23:35:42
macアドレスは偽装することが可能だし、
それを認証代わりにすることはリスキーでしょ。
暗号鍵を併用したほうがいい。
280:NAME IS NULL
08/03/08 02:20:04
>>278
激重仕様だなw
281:NAME IS NULL
08/03/08 14:40:21 C6vdEUqT
接続元が動的IPの場合のアクセス制限ってどうやればいいですか?
282:NAME IS NULL
08/03/08 16:46:49
技術的に無理じゃなかろうか。
283:NAME IS NULL
08/03/08 19:21:32
>>281
マスクごと制限しろ
284:NAME IS NULL
08/03/08 23:07:54
INってどういう意味なんですか?
「mysql IN」でぐぐってもINの部分が全く考慮されない検索結果しか出ない(´Д`)
285:NAME IS NULL
08/03/08 23:11:39
>>284
orの代わりに使うもの
select hogehoge in (10,20,30) とあれば
hogehogeが10,20,30のいずれかのものが得られる
286:NAME IS NULL
08/03/09 00:20:40
即レスありがとうございます。
なるほど。
SELECT hogehoge FROM aaaaa WHERE hogehoge = 10 OR hogehoge = 20 OR hogehoge = 30;
と同じ結果が返ってくるのですね。
287:NAME IS NULL
08/03/09 03:21:58
ストアドプロシージャを使って、表を返すスクリプトを作ったのですが、
PHPからCALLすると can't return a result set in the given context と出ます。
コマンドプロンプトでCALLすると、表が表示されるのですが
どうすれば良いでしょうか。 よろしくお願いします。
288:NAME IS NULL
08/03/09 09:36:22
>>287
スレ違い、と言いたいところだが優しくしてあげよう
mysqli関数群を使わないとダメです
289:NAME IS NULL
08/03/11 02:36:31
>>284
ぐぐる前にマニュアル嫁
290:NAME IS NULL
08/03/11 13:54:45
すんません、PHP開発環境のためXAMPPをつかってMySQLインストールしたんですが、
停止できなくなっちゃいました。なんででしょう?
誰かわかったら教えてください。(T_T
エラー:MySQLを停止中にエラーが発生しました。 [0]
とでてます。
前に一度phpMyAdminにアクセスできなくなってパスワードをリセットしようと
したんですが、なんかうまくいかなくて結局再インストールしました。
とりあえず、アクセスできなくなった原因(Cookie)を消去してました。
それが原因かわかりませんがそれ以降再インストールしてもMySQLがXAMPPの
コンパネから終了できなくなりました。
OS:Win
MySQL 5.0.51a
XAMPP 1.6.6a
phpMyAdmin 2.11.4
xampp\mysql\data\.errの書き込み
080311 10:50:33 [Note] mysql\bin\mysqld.exe: ready for connections.
Version: '5.0.51' socket: '' port: 3306 Source distribution
080311 11:59:51 [Note] mysql\bin\mysqld.exe: ready for connections.
Version: '5.0.51' socket: '' port: 3306 Source distribution
080311 12:04:05 [Note] mysql\bin\mysqld.exe: ready for connections.
Version: '5.0.51' socket: '' port: 3306 Source distribution
InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
080311 13:23:56 InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
080311 13:23:56 InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
080311 13:23:56 InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
080311 13:23:57 InnoDB: Started; log sequence number 0 0
080311 13:23:57 [ERROR] Do you already have another mysqld server running on port: 3306 ?
080311 13:23:57 [ERROR] Aborting
080311 13:23:57 InnoDB: Starting shutdown...
080311 13:23:59 InnoDB: Shutdown completed; log sequence number 0 43655
080311 13:23:59 [Note] MySql: Shutdown complete
よろしくお願いします
291:NAME IS NULL
08/03/11 16:27:44
Do you already have another mysqld server running on port: 3306 ?
292:NAME IS NULL
08/03/11 18:48:39
>>291
You are a fool boy!
293:NAME IS NULL
08/03/12 11:37:07
>>290
起動してないから停止できないんじゃないの?
294:NAME IS NULL
08/03/12 18:43:33
こういう奇妙な現象の多くは
操作ミスか設定ミスか。
295:NAME IS NULL
08/03/12 21:28:16 /qYtQmQP
where句にIFをつかい
where IF(a is null,b=1,c=1)
みたいな感じにしてるんですけど、これを入れ子にするにはどうすればよいのでしょうか?
where IF(a is null,IF(b is null,〜,〜),c=1)
イメージはみたいな感じです。
MYSQL4.1.20
296:NAME IS NULL
08/03/13 00:36:27
>>295
ん?それでええやん
297:NAME IS NULL
08/03/13 02:18:21
MySQLであるレコードのサイズを求める場合って、手計算しかないでしょうか?
あるレコードのサイズをMySQLの関数とかで求める方法ってありますでしょうか?
298:NAME IS NULL
08/03/13 09:30:48 7ofIu9vE
>>296
あぁ〜。
エラーをキチンと読んでませんでした。
どうもありがとう。
299:NAME IS NULL
08/03/13 11:06:32
>>297
本当は何がしたいの?
その手の質問の時に本当にやりたいことは「レコードのサイズを求める」じゃない事が多いんだけど。
300:NAME IS NULL
08/03/13 14:59:48 oJPAtZrA
HPHとの組み合わせですが、
ブラウザ側に
okuri.html
<A/ href="tt.php?a=777">777を送信</A>
サーバーサイドに
tt.php
<?php
print $_get["a"]."を受信";
?>
とファイルを置いても実行すると
を受信
としか表示されません。スーパーグローバル変数の綴り間違いとかじゃないと思ったんですがわかりません。お助けください。
301:NAME IS NULL
08/03/13 15:00:33
↑PHPの間違いです汗
302:NAME IS NULL
08/03/13 15:11:13
ありそうで、今まで誰もしたことのない間違い。
間違えるなら「はみちつ」くらい面白いことやって。
303:NAME IS NULL
08/03/13 15:23:45
>>301
可愛いから許す
304:NAME IS NULL
08/03/13 15:56:45
>>300
webprog池。
といいつつ、 _GET って大文字じゃないといかんのじゃないかと。
305:NAME IS NULL
08/03/13 16:25:21
>>304
解決した。サンクス
306:NAME IS NULL
08/03/14 16:54:43 3GRgoYZ0
質問です。mysql5.0.22
select
a_date,
b_date
from
a,b
aとbとのdateを足して、日付はユニークで
一つにまとめて欲しいのですが、、
どうすれば?
307:NAME IS NULL
08/03/14 16:59:44
意味わからん
a, b はテーブル?
欲しい値は?ユニークとは?
好きな物は最初に食べるタイプ?
308:NAME IS NULL
08/03/14 17:04:51
select distinctrow
a_date + b_date as hoge
from
a,b
309:NAME IS NULL
08/03/14 17:24:30
>>308
306の要求通り合計してあげるなんて親切ですね。
310:NAME IS NULL
08/03/14 17:37:09 3GRgoYZ0
>>308
早速の回答ありがとうございます。
ただ、結果が
hoge
4006
4007
4008
みたいに、日付でないなぞの数字になってしまうのですが・・
どうしてでしょう?
311:NAME IS NULL
08/03/14 19:25:13
>>310
そもそも日付と日付を加算する、という意味が分からない。
日付と日数なら分かるけど。
312:NAME IS NULL
08/03/14 19:55:29
2008/2/29 - 2007/2/28
=2008÷2÷29 - 2007÷2÷28
=34 - 35
= -1
答え -1
~~~~~~~~~
313:NAME IS NULL
08/03/14 20:25:25
日付を足すwww 結果4016年とか?大変ですねwww
314:NAME IS NULL
08/03/15 01:30:43 HlMwlm98
>>311>>312>>313
ごめんなさい。
1日プラス(足す)って表現は、一般常識で考えると
2008/01/01+2008/01/02で4016年02月03日
と確かになります。
表現がちょっと難しかったかもしれません。
ごめんなさい。
頭の悪い人に、聞いて一応問題は解決しました。
315:NAME IS NULL
08/03/15 17:58:02
何故頭の良い人に聞かぬ
316:NAME IS NULL
08/03/15 19:32:24
URLリンク(gugurekasu.com)
317:NAME IS NULL
08/03/15 21:54:30 KoOOhNjo
PHPファイルにアクセスしたら、mysqldumpで
バックアップが取れるようにしたいと思っています。
mysqldump -u root -p パスワード hogehoge < test.sql
(hogehogeはテーブル名)
とすればいいのでしょうか?
318:NAME IS NULL
08/03/15 22:21:31
mysql -u root -p パスワード hogehoge < test.sql
319:NAME IS NULL
08/03/16 13:02:48 x85Y71fw
MySQL 5.0.32を使っているのですが、
Tomcat5.5からJNDIを使ってMySQLに接続しようとすると、
Access denied for user 'user'@'localhost' (using password: YES)
というエラーが出てしまいます。
mysql -uuser -p testdb
として、JNDIの設定と同じパスワードを入れると入れます。
320:290
08/03/17 10:33:56
すんませんした。無事直りました。
ウイルスソフトとファイアーフォールが悪さしてたみたいで、
それを切ってインストールしなおしたらうまくいきました。
>293
おそらくその通りだと思います。
コマンドプロンプトでもうまく作動しなかったので。
上記インストールしなおしたらうまくいきました。
初歩的なところでつまずいてお手数をおかけしました。
これから色々勉強しときます。
うまくいきました。
321:NAME IS NULL
08/03/17 12:39:13 CtPRxUzO
MySQL5を使っています。
AテーブルとBテーブルがあり、それを一緒にしてSELECTしたいのですが
こういった結合はできないのでしょうか?
Aテーブル
id | hoge | aaa | bbb | ccc
Bテーブル
id | hoge | ddd | eee | fff
SELECT `id`,`hoge` FROM Aテーブル;
SELECT `id`,`hoge` FROM Bテーブル;
この2つのSQLを1つにまとめて、AとB両方から id と hoge カラムデータを
持ってきたい。
322:NAME IS NULL
08/03/17 12:53:16
UNION
323:321
08/03/17 13:58:39
>>322
ありがとです。
SELECT `id`,`hoge` FROM Aテーブル
UNION ALL
SELECT `id`,`hoge` FROM Bテーブル;
でできました!
324:NAME IS NULL
08/03/17 20:54:44 I74vD0d5
質問させて下さい。
MySQL5.0.45を使用しております。
正確には、5.0.45-Debian_1ubuntu3.1です。
今回windowsからLinuxに変えてみようと思い色々設定しています。
メモリの挙動についてお伺いしたいのですが、key_buffer=256Mとしているのにtopコマンド確認上では130M程しか使用しておりません。
このほかにも色々メモリを多めに設定しているのですが依然変わらずです。
全体メモリは512MBでスワップは発生していません。
windows(MySQL5)の時は設定したメモリ分だけ予め確保するような挙動でした。
Linuxでは使用限界値として設定され、必要に応じてその範囲まで徐々に使用されていくと言うようなものなのでしょうか?
まだまだ勉強不足で申し訳ありませんが、アドバイス頂ければ幸いです。
325:NAME IS NULL
08/03/18 00:20:32 saWXbSut
今ふと思ったんだけど、複数のSQLをUNIONで一回で実行するのと、
ストアドプロシジャ使うのとどちらが早いんだろ?
326:NAME IS NULL
08/03/18 02:14:37
MySQLのバージョンとConnectorのバージョンって連動しているのでしょうか?
MySQL5.0とConnector/Jの5.1の組み合わせだとSELECTのASで別名とか使えないんですね…
Connector/Jを5.0にすると問題ないのですが、そういうものなのでしょうか。
327:NAME IS NULL
08/03/18 07:43:16
UNIONだとソートが発生するからストアドのほうが早い
UNION ALLだとSQL内で完結するから、
ストアドとSQLのコンテキストスイッチが無い分UNION ALLの方が早い
・・・と思う
328:NAME IS NULL
08/03/18 11:09:13
まずはベンチマークだな。
329:NAME IS NULL
08/03/18 16:38:17
ORDER BYで2つ以上のパラメータからソートすることはできるんでしょうか?
ORDER BY hoge_id DESC, hoge_id2 DESC
hoge_idで降下順でソートして同じ値のものはhoge_id2の降下順になるようにしたいです
330:NAME IS NULL
08/03/18 17:01:41
MySQL Query Browser 1.1.17 を win XP で使っています。
画面上のテキストエリア(?) に SQL を書いて、 Ctrl + Enter を押せば SQL が実行されますが、
CSE や OsqlEdit みたいに、テキストエリア内に複数 SQL を書いて、
「マウスで選択して、選択した文字列を SQL として実行」
はできないのでしょうか?
Ctrl + Enter を押すと、テキストエリア内の文字列をすべて実行しているように見受けられます。
なので、複数 SQL を書いて、実行したい SQL の行頭に # をつけたり消したりすることで切り替えています。
これができたら CSE や OsqlEdit みたいで使い勝手がいいんだけどなぁ・・・
331:NAME IS NULL
08/03/19 01:00:35
WindowsでMySQL 4.0.26から5.0.51aに変更してみたところ
ハンドル数が常時4600程度だったのがMySQLサービス起動直後でも39000程度もあり
少し使っていると42000とか増えていく
65000とかハンドルを消費するとWindows自体が不安定になったことがあるけど大丈夫なのか?
332:NAME IS NULL
08/03/19 01:48:10
Vistaは起動直後で10万越えてるよ
333:NAME IS NULL
08/03/19 02:13:44
MySQLってオラクルみたいに、GUIで操作できる画面ってないでしょうか?
334:NAME IS NULL
08/03/19 02:13:53
うう
335:NAME IS NULL
08/03/19 02:54:14
>>333
何この馬鹿
336:NAME IS NULL
08/03/19 13:17:56 FDALPhtb
windows 2003 serverにmysql4.1を入れているのですが
データベースにアクセスするソフトが2つあって
どちらか片方だけなら普通にアクセスできるのですが
2つとも立ち上げると後から立ち上げたソフトの方がデータベースのオープンに失敗してしまいます。
(mysqlが入っているOSがXPの場合は問題なく2つのソフトでDBアクセスできます)
OSの違いによって何かmysql側で設定が必要なのでしょうか?
337:NAME IS NULL
08/03/19 13:43:23
ORDER BYで2つ以上のパラメータからソートすることはできるんでしょうか?
ORDER BY hoge_id DESC, hoge_id2 DESC
hoge_idで降下順でソートして同じ値のものはhoge_id2の降下順になるようにしたいです
338:NAME IS NULL
08/03/19 15:14:53
まるちすんな
339:NAME IS NULL
08/03/19 15:19:57
>>333
オレはコンソール派だけど、MySQL Query Browser とか SQLyog とか。
340:NAME IS NULL
08/03/19 15:30:08
>>337
できる
341:NAME IS NULL
08/03/19 15:30:46
>>336
エラーは?
342:NAME IS NULL
08/03/19 15:33:31 FDALPhtb
>>341
データベースのオープンエラーとしか・・・
343:337
08/03/19 16:39:34
>>340さん
どんな書き方になるでしょうか?
ヒントでいいのでお願いしますm(_ _ )m
344:NAME IS NULL
08/03/19 17:35:08
>>337
自分で答え書いてるじゃん。
ORDER BY hoge_id DESC, hoge_id2 DESC で正解じゃね?
345:NAME IS NULL
08/03/19 17:36:34
>>342
まさかと思うが、max_connections=1 だったりとか。
346:NAME IS NULL
08/03/19 18:00:48 FDALPhtb
>>345
すみませんそれはどこでみることができますか><
347:324
08/03/19 18:00:52
どなたか>>324
に答えて頂けないでしょうか。
あれからググったりして調べているのですが一向に解決策が見つかりません・・・
348:346
08/03/19 19:39:16
コンソールとかで、show variables like "max_connections";
349:NAME IS NULL
08/03/19 19:42:27
↑の 名前 は間違い 346 じゃないぞ
>>347
show variables like "key_buffer_size";
は設定通り?
350:NAME IS NULL
08/03/19 19:54:31
MySQL 5.0.51aだとMySQLの再起動だけなら問題ないけど
Windowsを再起動するとInnoDBが壊れてるといってMySQLが起動できなくなるなぁ
かといってinnodb_force_recovery=4で起動してcheck tableしても
InnoDBのあるNTFSのディスク自体をchkdskしても全く問題ないので
InnoDB自体が壊れているわけではないようだ
MySQL 5.0.45以前だと全く問題ないんだが・・・
まぁいいか
スキップしよう
351:NAME IS NULL
08/03/19 20:33:46 FDALPhtb
>>348
ありがとうございます。
ところでそれと同様の設定はMySQL Administratorにもありますか?
352:NAME IS NULL
08/03/19 21:10:33
>>351
ある
353:324
08/03/20 02:31:15
>>349
レス有り難う御座います。
key_buffer_size 2147483648 ということで設定通り2Gになっています。
ubuntu7.1 serverを使っているのですが一つのアプリに使えるメモリ上限みたいなのがあるのかな・・・、my.cnfの設定はこうしていますがおかしな所ありますでしょうか?
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = ujis
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
default-character-set = ujis
character-set-server = ujis
collation-server = ujis_japanese_ci
init_connect = "SET NAMES ujis"
skip-character-set-client-handshake
skip-external-locking
skip-name-resolve
#bind-address = 127.0.0.1
key_buffer = 2G
max_allowed_packet = 16M
thread_stack = 1M
thread_cache_size = 1024
#max_connections = 100
table_cache = 1024
#thread_concurrency = 10
sort_buffer_size = 32M
myisam_sort_buffer_size = 32M
wait_timeout = 10
tmp_table_size = 512M
join_buffer_size = 524288
record_buffer = 16M
query_cache_limit = 16M
query_cache_size = 256M
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
skip-bdb
skip-innodb
max_connections=500
max_connect_errors = 102400
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
default-character-set=ujis
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
354:NAME IS NULL
08/03/20 04:01:00
質問です。
仕事でオラクルを使っているのですが、MySQLも勉強してみたいとおもい、
いろいろ調べております。
やはり、MySQLはオラクルと比べて信頼性が低いということなのですが、
こういうシステムには使ってはいけないとかありますでしょうか?
355:NAME IS NULL
08/03/20 08:18:15
「MySQLはオラクルと比べて信頼性が低い」と考えている人間が携わるシステム。
356:NAME IS NULL
08/03/20 09:22:09
「オラクルはとMySQL比べて信頼性が高い」と考えている人間が携わるシステム。
357:NAME IS NULL
08/03/20 12:05:12 OG+4q6QH
UPDATEするテーブルを複数指定できるのでしょうか?
UPDATE member,item SET member.name='aaa',item.date='2008-03-200'
WHERE member.id='1'
みたいなSQLを書いているのですが、実行されません。
358:NAME IS NULL
08/03/20 12:29:18
>>357
それはMySQLでは出来ない。あきらめよう。
359:NAME IS NULL
08/03/20 14:00:42
>>353
OSのarchはi386?
i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
2Gを越えないように設定しないといけないハズ。
i386でも、PAE-kernel使うとか、自前でコンパイルオプションやスイッチ変更したら2G以上使えるらしいけど、
そこらへんは詳しくない。
つうか、そもそも物理メモリ512Mしかないのに、設定で2Gのメモリを使うようにしてるところが
大問題なんじゃないのかね??
(それが、>>324の現象と関係あるかどうかは知らんが・・)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5392日前に更新/244 KB
担当:undef