【この先一体】MySQL 総合 Part15【どうなるの】
レス数が1000を超えています。これ以上書き込みはできません。
0001NAME IS NULL
2009/04/21(火) 14:21:05ID:???MySQL 総合 Part15 http://pc11.2ch.net/test/read.cgi/db/1227475230/
[関連スレと過去ログ]
http://find.2ch.net/index.php?STR=MySQL
http://makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on
[MySQL Developer Zone] http://dev.mysql.com/
[MySQL 日本語リファレンスマニュアル] http://dev.mysql.com/doc/refman/5.1/ja/index.html
[MySQL Internals Manual] http://dev.mysql.com/doc/internals/en/
[MyNA] http://www.mysql.gr.jp/
[MLja] http://lists.mysql.com/mysql-ja
ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
MyNAでの「心得の条」
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0
・関連ツール及びユーティリティ
・関連書籍
>>2
0002NAME IS NULL
2009/04/21(火) 14:21:36ID:???[phpMyAdmin] http://www.phpmyadmin.net/
[phpMyBackupPro] http://www.phpmybackuppro.net/
[MySQLCC] http://www.mysql.com/products/mysqlcc/
[MySQL-Front] http://www.mysqlfront.de/
[mytop] http://jeremy.zawodny.com/mysql/mytop/
[Common SQL Environment] http://www.hi-ho.ne.jp/tsumiki/cse_1.html
MySQL ABでの各種GUIツールはMySQL GUI Toolsとして統合されています
(WorkbenchはGUI Toolsから独立しました。)
http://dev.mysql.com/downloads/gui-tools/5.0.html
・MySQL Administrator
・MySQL Query Browser
・MySQL Migration Toolkit
http://dev.mysql.com/downloads/gui-tools/5.0.html#Workbench
・MySQL Workbench
【関連書籍】
[MySQL Books]
http://dev.mysql.com/books/
http://www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-jp&fqp=keywords%01MySQL
http://www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-us&fqp=keywords%01MySQL
0003NAME IS NULL
2009/04/21(火) 14:22:11ID:???mysqlの歴史は15で終わりじゃ・・・。
0004NAME IS NULL
2009/04/21(火) 16:04:44ID:TwIH4wEs乙
mySQLがOracleになっちゃった。泣
★ネガティブな考え方
もうmySQLはOracleの体験版とか実験版みたいな位置づけなのか。
しかもそのうち有料になるかも。
★ポジティブな考え方
これでアホ企業のOracle絶対主義のバカ共もmySQLを見直すかも。
0005NAME IS NULL
2009/04/21(火) 16:11:29ID:???0006NAME IS NULL
2009/04/21(火) 17:03:26ID:???これでMysqlは終わった。
もっとも今の性能で良いのなら良いんだろうけど
RDBはBDBM系程枯れていないからな。
開発リソースをじょじょに減らしていかれて、
終には挽回不能な差を付けるようにコントロールするのがOracleの戦術になるだろ。
0007NAME IS NULL
2009/04/21(火) 17:12:04ID:???ほとんどのフリー製品を有料化。
2009/04/21
サンを買収したオラクルは、買収後のサンのソフトウェア製品についての基本戦略を発表した。
これはSun が持つソフトウェア製品をオラクルデータベース製品体系に
組み込み、相乗効果による収益の拡大を狙うというものだ。
Java, Solaris はそれぞれ、OracleScript、OracleOS と名称を変更し、
今後オラクルデータベースに最適化、統合化されていく。
OpenSolaris は OracleOSLite として有料化する。
MySQL に関しては、OracleLite として有料化し、今後は、Oracle との下位互換性のための
更新のみを一年程度続けた後、開発を収束させる。
OracleLite 購入ユーザには、Oralce へのアップグレードを用意する。
これら有料化する製品に関しては、2009年7月までの猶予期間が設けられる。
現在のユーザは使用の停止か、製品版の購入のどちらかを選択することになる。
フリー版の使用は、商用私用を問わず、禁止されることになる。
「これらの戦略により、サンの収益体質を改善し、オラクルの製品体系を強化する。
システムソフトウェアやデーターベースの無償提供は、ビジネスとして成立しないことが
サンの失敗により証明された。しかしながら、サンの持つこれらの製品群は、
ユーザにとって非常に有用なものであり多くの支持を集めている。
我々は健全な販売戦略によってこれらの製品を市場に提供しつづけることにより、
市場のニーズにより完全に応えていけるものと信じている。」
とオラクルのスポークスマンは昨晩夢をみた。
0008NAME IS NULL
2009/04/21(火) 17:39:23ID:4/3o227t>なんだかマシンが重くなるし
起動時は重いけどね(mallocとemの起動。特に後者)
#emは起動後手動でもいいんじゃない?
>GUIはよくわからんし
emだったら、前提知識無いと使えないと思う
admin以外は、SQLDeveloper でいいんじゃない?
0009NAME IS NULL
2009/04/21(火) 17:41:38ID:4/3o227t0010NAME IS NULL
2009/04/21(火) 22:27:48ID:???MMORPGとか無料で提供していくのはきついのですね
0011NAME IS NULL
2009/04/21(火) 23:15:07ID:???0012NAME IS NULL
2009/04/21(火) 23:25:03ID:508JdpKbみたいな
0013NAME IS NULL
2009/04/21(火) 23:34:45ID:???それもMySQL自体は今のシェアを維持する形のね
生かさず殺さずって言った感じ?
0014NAME IS NULL
2009/04/22(水) 00:35:05ID:???ネット系企業は改修の嵐ですかね?
>7 みたいな未来がくる??
0015NAME IS NULL
2009/04/22(水) 02:37:19ID:???0016NAME IS NULL
2009/04/22(水) 04:13:57ID:???0017NAME IS NULL
2009/04/22(水) 04:44:06ID:???困る事って具体的にどんな事があるのでしょうか?
(SQLの互換性に関してはとりあえず無視で。元々標準SQLからほど遠い
ところで好き勝手やっていたのはMySQLの方ですし)
0018NAME IS NULL
2009/04/22(水) 05:06:31ID:???0019NAME IS NULL
2009/04/22(水) 06:01:19ID:wKTBWyJq0020NAME IS NULL
2009/04/22(水) 07:22:18ID:bDgJ3bNf0021NAME IS NULL
2009/04/22(水) 08:26:48ID:???MyISAMべったりなアプリは移植に苦労するかも。
あとはMySQLのレプリケーションと同じことを他の製品でやろうとすると結構大変。
0022NAME IS NULL
2009/04/22(水) 10:52:52ID:???ttp://www.itmedia.co.jp/news/articles/0904/21/news072.html
MySQLはSunの下にいたときのように今後もフリーであり続けるかどうかはわからない
ttp://journal.mycom.co.jp/news/2009/04/21/052/
昔からOracleは嫌いだったが、これで益々嫌いになりそうだぜ
ふぅ・・・
0023NAME IS NULL
2009/04/22(水) 13:32:21ID:???MySQLのPostgreSQLに対する大きなアドバンテージはレプリケーションだけ
だからねぇ。
PostgreSQLにもpgpool等いろいろな実装は出てきてはいるけど、決定版がない。
しっかし、今回の件で、海外ではMySQLからの代替がないという感じで混乱して
いるのを見て、PostgreSQLやFirebirdの扱いの軽さには驚いた。
0024NAME IS NULL
2009/04/22(水) 14:26:28ID:1zCLPW15過去、いろんなところで書かれていた
・海外では Oracle VS. MySQL であること
・Postgres は日本以外では、あまり使われていない
を実感って感じでしょうか?
レプリケーションも大きいんだろうけど
myisam で相度を稼ぐことができないこと
MySQLの手抜きなSQLのコンバージョンの工数がでかそうなこと
MySQLのみ対象としたプロダクトが多いこと(それ以外しらねーよ みたいな)
も影響があるのかな と
0025NAME IS NULL
2009/04/22(水) 16:49:29ID:???http://itpro.nikkeibp.co.jp/article/NEWS/20090422/328907/
0026NAME IS NULL
2009/04/22(水) 17:13:25ID:???ttp://www.itmedia.co.jp/news/articles/0904/22/news060.html
0027NAME IS NULL
2009/04/22(水) 17:21:42ID:???SQLiteのようなライブラリによるファイル操作ではなく、マネージメント
システムが動いてそこで排他処理をしてくれるというのが重要なんだろうなぁ。
とはいえ、LDAPやらなんやらのバックエンドにMySQLってわけがわからんし、
他のアプリでもとりあえずMySQL使っとけというのが多すぎ。
これを機に、なんでもかんでもMySQLという流れが変わってほしいもんだ。
0028NAME IS NULL
2009/04/22(水) 20:29:19ID:???0029NAME IS NULL
2009/04/22(水) 23:25:54ID:???なんで海外でPostgreSQLがあまり使われてないのかが分からないな−。
ほとんどの用途なら、MySQLでもPostgreSQLでも機能も性能も大差ないっしょ。
ただ単にPostgreSQLという選択肢があると言うことが
広く知られてないだけなんじゃないだろうか。
PostgreSQLのメイン開発者って確かカナダと日本だから、
欧米でアピールする機会が極端に少なかったのかもしれない。
0030NAME IS NULL
2009/04/22(水) 23:58:09ID:???大昔のPostgreSQLの性能の低さも影響しているのも知れない。
そして、ある程度差がつくとサポートベンダの有無が効いてきて、
海外での圧倒的な差になったんじゃないかな。
日本ではSRAがあったけど、海外でPostgreSQLの商用サポート
受けようと思ったら…
0031NAME IS NULL
2009/04/23(木) 11:39:24ID:???その場合、デュアルライセンスはどう処理されてるの?
ソースフォージってデュアルライセンスって選べるの?
0032NAME IS NULL
2009/04/23(木) 12:28:14ID:???https://code.launchpad.net/mysql
ここから拾ったものはGPL。
0033NAME IS NULL
2009/04/23(木) 17:18:20ID:???0034NAME IS NULL
2009/04/23(木) 17:27:58ID:???0035NAME IS NULL
2009/04/23(木) 17:44:21ID:cXNPfnaFWindowsネイティブ版が遅かったというのもあるかもしれない
cygwin環境でのインストールの記事はあるにはあったけどね
>>34
@ITのDBセクション見てみれば?
小規模な組み込み用途が多いような印象を受けてる
innodbの代替のfalconの開発者はFirebirdの中核っぽい人じゃなかったっけ?
0036NAME IS NULL
2009/04/23(木) 19:08:45ID:???0037NAME IS NULL
2009/04/23(木) 21:03:09ID:???> ポストグレは完全に散ったな
何故そういう結論になるのかしりたい
0038NAME IS NULL
2009/04/23(木) 21:33:24ID:nqF0XbwY禿同。
案件に合うか、合わないかじゃねーの
0039NAME IS NULL
2009/04/24(金) 03:02:07ID:???0040NAME IS NULL
2009/04/24(金) 03:14:11ID:???不人気の理由は他にないような。
0041NAME IS NULL
2009/04/24(金) 03:43:16ID:???0042NAME IS NULL
2009/04/24(金) 03:48:44ID:???0043NAME IS NULL
2009/04/24(金) 03:56:51ID:???0045NAME IS NULL
2009/04/24(金) 12:40:50ID:N4I7I0BXもう今から始める奴はポストグレを選ばない。
MYSQLがOracleになったからIT系専門学校ではMYSQLを教え、
書店にはMYSQL関連の参考書がさらに並ぶ。
そういう利用者がネットでMYSQLを語り
それを見た奴がMYSQLでデータベースを始める。
MYSQLとOracleに共通性が出れば就職にも有利。
完全にポストグレは蚊帳の外。
終わった。象は絶滅だ。
0046NAME IS NULL
2009/04/24(金) 13:49:39ID:JUI0rWl8多分DB触ったことがない奴が言ってもねーーーー
#触ったことがあるなら、そういう発言にはなりえないよ
#触っていってるなら、仕事やめたほうがいいよ
0047NAME IS NULL
2009/04/24(金) 15:47:47ID:???そもそも、postgreとかポストグレとか言っている時点で…
0048NAME IS NULL
2009/04/24(金) 16:49:53ID:???だがSQLserver貴様は別だ。オープン系メインでやってたら貴様の出る幕はないけんの。
0049NAME IS NULL
2009/04/24(金) 17:45:26ID:???激同
ただMySQLのシェアが更に広がるのは間違いない
0050NAME IS NULL
2009/04/24(金) 18:41:40ID:???そうかなぁ。日本国内ではPostgresが徐々に増えそうな気がする。
個人的には、MySQLはちょっと方言がきつくて、気に入らない。
海外ではMySQL以外では何が人気なんだろうね、Firebird?
0051NAME IS NULL
2009/04/24(金) 19:02:16ID:???いきなり有料になったりするんじゃね
0052NAME IS NULL
2009/04/24(金) 21:19:15ID:???これを他のPCに移した場合、ちゃんと機能する場合とmysqlがエラーになり立ち上がらない場合があるのですが
これは本来よくない方法なのでしょうか?
たまたま自分の別のPCでも読み込めるだけで
本来は動かなくて当然で推奨されないことなのでしょうか。
dumpより楽なのでこの様なコピーをしているのですが。
0053NAME IS NULL
2009/04/24(金) 21:20:19ID:???0054NAME IS NULL
2009/04/24(金) 21:47:26ID:???0055NAME IS NULL
2009/04/24(金) 21:55:44ID:???Linux 上で使っているなら lvm mysql スナップショット
あたりでググれ。
Windows の場合は VSS Writer がないので VSS 対応のバックアップ
ソフトでバックアップを開始する直前直後にLinux の場合と同じことをす
れば出来るかもね。 まあ面倒なので素直に dump だな。
0056NAME IS NULL
2009/04/24(金) 22:02:08ID:???エキノコックスに罹ってるぞ
0057NAME IS NULL
2009/04/25(土) 21:43:44ID:zIrsT6riランダムに一つ取り出すにはどうすればいい?
やっぱり数字用のカラムを作るべき?
0058NAME IS NULL
2009/04/25(土) 21:57:58ID:???0059NAME IS NULL
2009/04/25(土) 22:35:20ID:???Oracle = アメリカ
MYSQL = 日本
ポストグレ = 北朝鮮
OracleとMYSQLの同盟により
ポストグレは完全に終わった
0060NAME IS NULL
2009/04/26(日) 00:39:50ID:FjN1BGTgなるほど。イエローモンキーと馬鹿にされているわけだ
Oracleのいいなりになるしかないから、その点では正しいなw
Postgresは危機感をあおってはいないが
昔は攻撃的だったのはMySQL側だったのだが(とMLで書いてた人がいたよ)
0061NAME IS NULL
2009/04/26(日) 06:37:59ID:???包茎くん乙。
お前にせめて自分が生きる悪臭公害と言われていることに気づけるぐらいの
知能があればよかったのにな。
0062NAME IS NULL
2009/04/26(日) 06:42:37ID:???PostgreSQLキター じゃないの?
すくなくともうちの会社はそう。
0063NAME IS NULL
2009/04/26(日) 08:29:57ID:FjN1BGTg買収しようと思っていたコンペジターだから、これまでと同じ
というのはありえん気がする
free系使えるなら、Postgresな人だから、自分にはあまり関係ないが
0064MySQLの父
2009/04/26(日) 13:05:30ID:???もちろんGPL2ライセンスな。少しまちなー。
0065NAME IS NULL
2009/04/26(日) 18:22:44ID:???0066NAME IS NULL
2009/04/26(日) 21:28:00ID:???0067NAME IS NULL
2009/04/27(月) 00:13:56ID:???親IDと子IDをどのように扱えばいいのか・・・
あぁ混乱します
0068NAME IS NULL
2009/04/27(月) 00:32:32ID:???0069NAME IS NULL
2009/04/27(月) 00:54:30ID:+QFX8mPI●文字コードの違い
●データ量が大きすぎる
以外で何か考えられますか?
いつも決まって特定のファイルが入らないのですが、文字コードは合わせてるしデータ量も少ないのですが。
0070NAME IS NULL
2009/04/27(月) 02:49:26ID:???0071NAME IS NULL
2009/04/27(月) 06:31:00ID:4KD78JzF後のSQL64の開発者ですねわかります
0072NAME IS NULL
2009/04/27(月) 07:50:04ID:9YyqFg03MySQLでWith〜 が使えるか探してみたら?
#ぱっとみ、なさなそうな感じだけど>マニュアル確認してくれいw
VBでリカーシブなコード書いて出したことはあるけど遅い(SQLのみに比べて)
ADO.NET使えるなら、DATAtableにつっこんで、リカーシブで探せば早いかな
#元データでかいと、ある意味嫌だけどw
joinで書いてるのは、階層数決め打ちだから案件によりけりだと思うよ
自分の場合は使えなかった
0073NAME IS NULL
2009/04/27(月) 08:17:07ID:???0074NAME IS NULL
2009/04/27(月) 10:01:04ID:+QFX8mPI0075NAME IS NULL
2009/04/27(月) 16:07:51ID:???0076NAME IS NULL
2009/04/27(月) 18:09:26ID:???するとしても有料版だけだ
0077NAME IS NULL
2009/04/27(月) 21:07:38ID:???0078NAME IS NULL
2009/04/27(月) 21:09:04ID:???0079NAME IS NULL
2009/04/27(月) 22:29:08ID:???0080NAME IS NULL
2009/04/27(月) 22:47:33ID:Up4sYX/BメンバID(Int)、メンバデータ1(double)、メンバデータ1(double)、メンバデータ2(double)、メンバデータ3(double)
というスキーマになってます。メンバIDをキーにして、
SELECT * FROM *** WHERE メンバID=12345;
みたいな処理をよくやるんですが、INDEXを作っても作らなくても所要時間が差がありません。
(2〜3秒くらい)
ここからもっと処理を速めようとすると、どうすればよいですか?
0081NAME IS NULL
2009/04/27(月) 23:02:50ID:9YyqFg031件だけだと、テーブルスキャンになってるんじゃないかなと・・・
#実行計画見てみたら mysql explain ぐぐれば見つかる
0082NAME IS NULL
2009/04/27(月) 23:12:01ID:???IDっていうくらいだから当然ユニークだよね?
あと、NOT NULL ならすこーし速くなる
あとはexplainの結果次第かな
0083NAME IS NULL
2009/04/28(火) 00:23:48ID:aHnBfSXlありがとうです。
Index張ってExplainしてみました。
mysql> select * from shain_master where Code=8324;
<データ出力。省略>
2281 rows in set (2.65 sec)
mysql> explain select * from shain_master where Code=8324;
+----+-------------+--------------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+------+---------------+------+---------+------+---------+-------------+
| 1 | SIMPLE | shain_master | ALL | NULL | NULL | NULL | NULL | 8222579 | Using where |
+----+-------------+--------------+------+---------------+------+---------+------+---------+-------------+
1 row in set (0.00 sec)
mysql> create index Code_Index on shain_master (Code);
Query OK, 8222579 rows affected (3 min 1.96 sec)
Records: 8222579 Duplicates: 0 Warnings: 0
mysql> explain select * from shain_master where Code=8324;
+----+-------------+--------------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+------+---------------+------+---------+------+---------+-------------+
| 1 | SIMPLE | shain_master | ALL | Code_Index | NULL | NULL | NULL | 8222579 | Using where |
+----+-------------+--------------+------+---------------+------+---------+------+---------+-------------+
1 row in set (0.00 sec)
mysql> select * from shain_master where Code=8324;
<データ出力。省略>
2281 rows in set (2.47 sec)
結局2.65秒から2.47秒になったのですが、(7%ほど速くなった)
これ以上はできないと思いますか?
Code(メンバIDのことです)はユニークです(プライマリキーになってます)
NOT NULLについては、プライマリキーになってるなら、NOT NULLですよね?
アドバイス等もらえたら有難いです。
よろしくお願いします。
0084NAME IS NULL
2009/04/28(火) 01:09:06ID:aHnBfSXlCodeとあと2つの数字をあわせて、ようやくプライマリーキーでした。
(なので、プライマリーキーは3個)
複合キーで試してみます。
失礼しました。
0085NAME IS NULL
2009/04/28(火) 01:47:12ID:aHnBfSXlただ、サブクエリを含むSQLは速くなった。
3分まっても帰ってこなかったSQLが、1分以内で帰ってきたよ。
DBはデータのメンテが楽だから使ってるんだけど、SQLをどう書き換えたら性能が
どうかわるのか分かりにくい。
0086NAME IS NULL
2009/04/28(火) 05:34:52ID:???analyze table shain_master;
をしてもう一度試してみて。
それでだめなら以下のようにINDEXを強制。
select * from shain_master force index (Code_Index);
あと >>85 のEXPLAIN結果と、
show create table shain_master\G
をみせてほしい
0087NAME IS NULL
2009/04/28(火) 21:17:53ID:v5jCnHuNサーバーを止めずに50GB位をdumpしたいのですが。
0088NAME IS NULL
2009/04/28(火) 22:02:41ID:???0089NAME IS NULL
2009/04/28(火) 22:21:24ID:???スナップショットは、コピーコマンドの代替に過ぎない。
DB側がきちんとオンラインバックアップの準備をしないと。
0090NAME IS NULL
2009/04/28(火) 22:24:41ID:ZrsNSBAoロックしてるのに、どうして更新できるのかと・・・・
0091NAME IS NULL
2009/04/29(水) 05:49:58ID:???ファイルのスナップショットがとれても、メモリのスナップショットが取れる
わけではないからねぇ。
VMwareでメモリイメージをファイル化するようになっていて、それがZFSの上で
動いている場合なら話は別だけど。
0092NAME IS NULL
2009/04/29(水) 10:02:54ID:???0093NAME IS NULL
2009/04/29(水) 12:30:00ID:???他のDBソフトも入れてそれぞれで分担してさばくのとどっちが効率いい?
0094NAME IS NULL
2009/04/29(水) 13:54:40ID:???0095NAME IS NULL
2009/04/29(水) 14:50:05ID:???>スナップショットは、コピーコマンドの代替に過ぎない。
厳密には違うよ。ZFSのスナップショットはアトミックに
データを複製出来るから、ストレージエンジンがデータ
ファイルの一貫性を保って書き込みしていれば問題無い。
これは>>91についても同じ。
0096NAME IS NULL
2009/04/29(水) 14:51:18ID:???MAX ALLOWED packetをPHPのスクリプト上で変更した場合の有効期限っていつまでですか?
大きなバイナリを入れる前にMAX ALLOWED packetをクエリを送り大きくしてるのですが
入れた後に再度小さく戻す必要があるのでしょうか?
0097NAME IS NULL
2009/04/29(水) 15:00:53ID:???スナップショット?ZFSってそんなこと出来るの
0098NAME IS NULL
2009/04/29(水) 16:16:48ID:???COWでそう見せているだけだけど、実用上は同じことです。
0099NAME IS NULL
2009/04/29(水) 17:54:05ID:goBvMPtsカタカナひらがなは同一視するけど、濁点と普通の文字は同一視しない照合順序って
ありませんか?
現在utf8_general_ciでひらがなとカタカナを同一視させることはできたのですが、
濁点と普通の文字が同一視されて困っています。(「が」=「か」等)
0100NAME IS NULL
2009/04/29(水) 18:21:02ID:???utf8_general_ci→utf8_unicode_ci
0101NAME IS NULL
2009/04/29(水) 19:11:00ID:???例として「name」「type」という2つのカラムにインデックスを張る場合、
(name, type)
のように2つセットでインデックスを張る場合と、
(name)
(type)
と2つに分けてインデックスを張る場合と、パフォーマンスに差は出てくるのでしょうか。
ちなみに検索は、「name」のみ、または「name」「type」2つセット、の2通りで検索します。
もしパフォーマンスがかわらないのであれば、今後仕様が変わっても「type」のみでも検索ができるので、
後者を選択したほうがよいと思っています。
よろしくお願いします。
0102NAME IS NULL
2009/04/29(水) 20:23:50ID:???はぁ?
データベースが論理的に一貫性保っていることと、データファイルが一貫性持っていることは別だろが。
そこになんらかの調停役をするものが必要だろ。
それについては、各DBによって仕様がまちまちだから、ZFS側だけで一貫性が保てるなんてことはあり得ない。
0103NAME IS NULL
2009/04/29(水) 20:37:50ID:???一貫性じゃなくて整合性だったな。クラッシュリカバリ出来る
ストレージエンジンなら>>95の通りだよ。例えば InnoDB を
使っているなら ZFS の恩恵をフルに享受出来る。Maria や
Falcon みたいな最近のストレージエンジンでも同じだと思う。
0104NAME IS NULL
2009/04/29(水) 21:09:28ID:720E2UERexplain で実行計画確認した方がいいと思うよ
http://sdc.sun.co.jp/news/2009/04/feature01.html とか
まぁ mysql マルチカラムインデックス でさがしてみそ
0105NAME IS NULL
2009/04/29(水) 21:11:44ID:???bとcはインデックスにならないんだよね。
0106NAME IS NULL
2009/04/30(木) 17:00:32ID:???それぞれのシーンで有効なインデックスは、
「name」のみ・・・(name)または(name, type)
「name」「type」2つセット・・・(name, type)
「type」のみ・・・(type)
全てに対応したいなら、
(name, type)と(type)の2つのインデックスを付与。
0107NAME IS NULL
2009/04/30(木) 22:54:00ID:???0108NAME IS NULL
2009/04/30(木) 23:23:58ID:???ありますよ。ちなみに自分も今度受けて来る予定です。
http://www-jp.mysql.com/certification/
0109NAME IS NULL
2009/05/01(金) 14:11:46ID:???最近はインデックスマージで、同時に複数のインデックスを使用可能。
0110sage
2009/05/01(金) 14:27:19ID:8dcd/ec9インデックスマージ便利ですね。
「name」「type」2つセット・・・(name, type)
「name」「type」2つセット・・・(type) (name)
は速度差はあるんだろうか?
0111NAME IS NULL
2009/05/01(金) 15:57:15ID:???0112110
2009/05/01(金) 16:10:08ID:???おぉ、ありがとうございます。
じゃあ
「name」のみ・「type」のみ・「name」「type」2つセット
のスピードアップには
(type) (name) (name, type)
の3つインデックス用意するのがいいんですね。
名前にsageしてた Orz
0113NAME IS NULL
2009/05/01(金) 16:24:13ID:???(name)はいらないよ
0114NAME IS NULL
2009/05/02(土) 01:10:43ID:???sqlファイルをsshを使ってphpmyadminへインポートしたいのですが、
どのようにコマンドを書いてあげればいいでしょうか?
アドバイスをお願いします
0115NAME IS NULL
2009/05/02(土) 05:36:23ID:???0116NAME IS NULL
2009/05/02(土) 11:47:30ID:sAcX2g2Pダウンロードソフトのirvineで一気に1000枚落とそうとしたら
MYSQLが不安定になり接続できなくなりました
一応MYSQLは動いていまして再起動させたら元に戻りました。
こういう不具合は設定でなんとかできますか?
ちなみにローカルのPC内でのテストです。
0117NAME IS NULL
2009/05/02(土) 14:04:33ID:BrjlIbgF#unix系なら、iostat,memstat,netstat とか見ながら、ボトルネック探すんだろうけどね
詳しい説明とかどう対処するかはパフォチュー本以外で説明してるのって中々ない気がする
0118NAME IS NULL
2009/05/02(土) 15:10:05ID:1rG19lPdMySQLには、Oracleのような表領域とか容量計算とかはあるのでしょうか?
あと、主キーを2項目設定しようとすると『ERROR 1068 (42000) Multiple primary key defined』と出るのですが、どうしたらよいのでしょうか?
0119NAME IS NULL
2009/05/03(日) 09:15:04ID:???MyISAMなら1テーブル1ファイル
InnoDBなら全部まとめて1ファイルか、1テーブル1ファイル
主キーは1個しかないから主キーなんだぞ
これはOracleでも同じ
0120NAME IS NULL
2009/05/03(日) 11:12:44ID:???テーブル領域はかなり自由。
0121NAME IS NULL
2009/05/03(日) 13:32:27ID:???もっとも、ストレージまで含めると、表領域概念があっても複雑になるけど。
0122NAME IS NULL
2009/05/03(日) 18:41:52ID:???460 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/04/30(木) 00:27:39
mysql [ENT]
で、mysqlのコンソールが実行できることをまず確認
できないならmysqlが入ってない
できるのにそのエラーが出るなら、<以降のファイルの指定
0123NAME IS NULL
2009/05/03(日) 18:47:24ID:IRQUoHF00124NAME IS NULL
2009/05/04(月) 05:40:01ID:???今、ローカルの環境で、画像等のバイナリを格納するDBを組もうとしているのですが、
一定以上のサイズ(1MB以上)のデータをINSERTする時に、例によって
Got a packet bigger than 'max_allowed_packet' bytes
のエラーが出力されて、格納出来ません。
そこで、max_allowed_packetの値を大きくするのですが、ちょっとよく分からない現象に遭遇してます。
まず接続して、show variables like 'max_a%'で読むとデフォルトの1MB、
set (session) max_allowed_packet = 4194304 で4MBにセットして、show variables
でちゃんと4MBになっているのを確認し、バイナリのINSERTをかけても、
やはり’Got a packet・・’のエラーが出て、格納できず。(これは、php perlのスクリプト中からやってます。)
次に、接続中に set global max_allow・・・で同様に4MBにセット、show variables では1MBのまま(これは仕様どおり)、
一旦接続断してから再接続で、INSERTをかけるとINSERT成功。その後はGLOBAL設定が効いているので問題なく成功。
0125つづきです
2009/05/04(月) 05:41:14ID:???show variablesで1MBを確認後、1MB以上の画像をINSERT実行で、成功してしまいます。
公式のマニュアルには、'globalは次回接続以後、sessionはその時点から、同じ変数に別の値をセットするか接続断まで'
と書いてありますが、globalのほうはその通りなんですが、sessionでmax_allowed_packetを変更しても、
その時点で効いてないようです。
今はローカル環境で試していますので、my.cnf(my.ini)での設定や、rootでグローバル権限を持っているので
なんとかなるのですが、じつはこれを外部のレンサバで動かすことを考えているので、
my.cnfやグローバル権限がない状態で、この変更は不可能なのでしょうか?
ちなみに試した環境は、
WinXpsp3 + 5.0.78 5.0.79
Linux/CentOS + 5.0.79 5.0.80
ファイルサイズ約1.5MBの画像ファイルで、いずれも同様の結果となります。
0126追記です
2009/05/04(月) 07:51:55ID:???mysqli関数でmax_allowed_packet越えのINSERTが出来るようになりました。
しかし、残念ながら稼動予定のレンサバのphpは、mysqli関数が未サポートのようで使用出来ません。
(phpinfoでも出てこないし、実際connectだけ書いたスクリプトもエラーになってしまいます)
うーん、なんとかやる方法はないものか・・・。
0127NAME IS NULL
2009/05/04(月) 08:27:28ID:7kTTuHSt高いのに。社長さんは自分でできないからサポートがあるOracleにしてるのかな?
ってゆうかそれバカじゃん。無知。IT無知。
データベースの操作くらい今時チンパンジーでもできるよね。
チンパンジー以下だね。間違いなく包茎。
Oracle利用者は包茎。
短小包茎。
そんなバカ共と、何でも自分で解決する努力家のMYSQLユーザーが同じに扱われたくないよ。
0128NAME IS NULL
2009/05/04(月) 10:33:09ID:???このへんでまともに動くのはOracleとDB2だけ
0129NAME IS NULL
2009/05/04(月) 11:29:01ID:L8iXHRu1他を否定する奴って、実務経験ない奴なんだろうなぁ・・・
といつも思う
>>128
自分には縁がなさげな規模だw
0130NAME IS NULL
2009/05/04(月) 13:51:26ID:???PostgreSQLは試した?
8.1 8.2 でかなりマルチCPUへの対応を強化してるはずだけど。
12CPU以上でも性能伸びるってさ。
0131NAME IS NULL
2009/05/04(月) 18:11:28ID:???ぶっちゃけ、SybaseとかDB2とかHiRDBの方がMySQLより情報が少なくて
エンジニアがスゲー努力していると思うけど。
0132124ですが
2009/05/05(火) 01:05:32ID:???sessionレベルで変更することは無理なようだと結論付けることにしました。
このあたりを参考にしました。
http://bugs.mysql.com/bug.php?id=22891
http://bugs.mysql.com/bug.php?id=14180
ちなみに、http://d.hatena.ne.jp/mir/20060201
ここによると、大きなサイズのクエリでも、max_allowed_packet以下のサイズに分割し、
何度も送信を繰り返すような実装があれば可能なようですが、
ここにある C/J や C APIを直接叩くような自前のコード以外には、
今のところphpのmysqli(拡張版のほう)関数以外には見つけられませんでした。
>>126での通り、その鯖ではmysqli関数が利用できませんし、
perl-DBIのほうにはそれらしいことが出来ない(?)ようなので、
現状、システムのmy.cnfの編集や、root等グローバル(スーパー)権限を持たない
ユーザーしか使えない環境では、サイズ制限を1MBまでにすることにします。
なにか他の方策や、「こうやれば出来る」みたいなことをご存知の方がおられましたら、
是非ともお教え頂きたいと思います。
0133NAME IS NULL
2009/05/05(火) 01:27:34ID:???0134NAME IS NULL
2009/05/05(火) 01:42:40ID:VyNefM6q画像データをDBにつっこむ意味ってあるの?
画像データはファイルのまま適当なディレクトリにつっこんで、
ファイル名と保管ディレクトリだけDBにINSERTしておくのが合理的な気がするが。
0135132
2009/05/05(火) 03:35:33ID:???実は、あまり言いたくはなかったのですが、ある知人からの紹介で依頼を受けることになってしまって、
(正規のWeb作成業者等より)格安で請けることになったものでした。
私自身は、3,4年前からテキストベースの検索エンジン的なサイト等をいくつか運営しているのですが、
実はバイナリ(BLOB)型のデータを扱うのは今回が初めてでした。
その依頼者さんの希望として、
・アップローダ的な機能がほしい
・そのバイナリをDBに格納したい
・その閲覧やダウンの可否を制御したい
・Web領域にはバイナリを直接置きたくない
・依頼者さんが借りているレン鯖上で(しかもいくつかの複数の業者で同様に)動作するようにしたい
のような要望がありまして、とりあえずそのように作成しているところです。
特に閲覧制御については、会員登録やパスワードの設定等もDBの別カラムに格納し、
それをもって制御したいとのことです。あと領域に関しては、Web領域とDB領域が別になってるようなので、
Web領域を食わなくてもいいというような見地もあるようです。
私自身は、もし自前で運営するなら、>>134さんのおっしゃるようなシステム構成にすると思います。
前にそのようなことを提案したんですが、どうもDB内に格納することにこだわっているようです。
あと、恐らくはその依頼者さんが、管理の面で、連番になったidとファイル名などの照合などが面倒なのと、
削除する時(Web領域にはFTPで接続するようですが)間違って消したり、上書きされたりすることを
懸念されているのでは、と邪推しております。
>>133
!、確かにその手はありかもしれません。(視界が狭くなってました)
その依頼者さんが、どうしてももっと大きいサイズがほしいと希望するなら、
その方法でやってみます。どうもありがとうございます。
0136NAME IS NULL
2009/05/05(火) 07:13:32ID:???ダウンするファイルが10MBだった場合、100GBくらいメモリ消費するイメージがあるんだけど。
0137NAME IS NULL
2009/05/05(火) 12:17:38ID:VyNefM6q無理にやるならmy.cnfの設定変えればいいんじゃね?
SETでちまちまやるより。
まさかmy.cnfも変更できないなんて話はないよな
0138NAME IS NULL
2009/05/05(火) 23:49:19ID:???現実的に考えて、135が作るようなコンテンツでセッションが
一万いくなんてありえると思ってるの?
100すらありえないだろう。
0139NAME IS NULL
2009/05/06(水) 15:41:53ID:???凄く勉強になりました
0140NAME IS NULL
2009/05/06(水) 17:04:58ID:???0141NAME IS NULL
2009/05/06(水) 17:19:25ID:???仕組みについてやさしく書かれているサイトは無いでしょうか?
0142NAME IS NULL
2009/05/06(水) 17:28:14ID:???まずはB-treeについて勉強したらいいよ。
0143NAME IS NULL
2009/05/06(水) 17:37:32ID:dE2L58df0144NAME IS NULL
2009/05/07(木) 15:23:38ID:DlYqT5Bu0145NAME IS NULL
2009/05/07(木) 16:40:58ID:???GoogleがMyISAMの改造版を使ってるという記事を読んだことがあるな。
0146NAME IS NULL
2009/05/07(木) 16:44:48ID:Olr/5NnFクローンプロジェクトで管理していってもかまわんのじゃない?
それともフリーなだけでオープンじゃなかったわけ。
0147NAME IS NULL
2009/05/07(木) 17:05:29ID:3pzQ/ytLそこらの無名の人間がforkしても誰も使わないだろ。
MySQL創始者のmontyは会社はじめてるし、彼がやるならOKと思うが、innodbがOracleの物だからMyISAMしかダメなのはつらいかもな。もちろんforkしたらinnodbが使えないかどうかは知らんが
ユーザーからすればあまりに危険なんでforkしたやつではinnodb使う奴はそうそういないだろう。
Falconはどうもダメっぽい。っていうかinnodbのかわりになるほど完成度があがるとは思えん。
ま、なんだ
もともとinnodbがOracleに握られた段階でMySQLはキンタマつかまれてたわけで、その前のOracleによるMySQL買収交渉の時点でOracleの対MySQL戦略は決まってたはずだ。
つまりMySQLに先はない。forkに期待するのもいいが、別のDB使う検討をはじめるのが普通のエンジニアのリスク管理だと思うがな。
0148NAME IS NULL
2009/05/07(木) 21:09:46ID:???InnoDB も GPL だから、使いつづけることはできる。
0149NAME IS NULL
2009/05/07(木) 23:48:45ID:3pzQ/ytLそれは知ってるが、forkしてOracleと対立しながらinnodb使い続けるのってリスキーだろ、て話し
0150NAME IS NULL
2009/05/07(木) 23:57:52ID:???解決しないので、どうかお力を貸してください。
OS:CentOS5
MySQL5
MySQLを開始しようとするとエラーがでてしまいます。
エラー内容:
mysqld failed. The error was:MySQL データベースを初期化中:
Neither host '自宅サーバーのホスト名' nor 'localhost' could be looked up with
/usr/bin/resolveip
Please configure the 'hostname' command to return a correct hostname.
if you want to solve this at a later stage , restart this script with the --force option
[失敗]
どうか御教示ください。お願いします。
0151NAME IS NULL
2009/05/08(金) 00:01:37ID:???0152NAME IS NULL
2009/05/08(金) 10:06:15ID:???それが実際に問題になるなら、Innoもフォークすることになる。
GPLの最大の特徴は、誰も排他的権利を持ち得ないことなんだから。
0153NAME IS NULL
2009/05/08(金) 14:38:43ID:???0154NAME IS NULL
2009/05/08(金) 21:15:35ID:23A0Mz+Fイノディービー?
もう一つはマイイザム?
0155NAME IS NULL
2009/05/08(金) 21:16:23ID:???0156NAME IS NULL
2009/05/08(金) 21:40:31ID:???デュアルライセンスなんだし、Oracleなり、MySQL ABなりに御布施すればGPL免除でしょ?
MySQL Enterpriseなんて、登場した時から既にGPL制限の無いアプリだし
これからはMySQL Community ServerとMySQL Enterpriseの差が、
どんどん開いてゆくだろう事は想像に難くない
でも一番の問題は、昔はGPL汚染に躊躇してMySQLが採用されない事例を回避する為に
「MySQL ABに寄付してくれればGPL回避出来ますよ」的な意味合いのデュアルライセンスだったのに
今では、というかMySQL Enterpriseが出た辺りからだんだんと、「おまえ(Community Server)のものは
俺(MySQL Enterprise)のもの、俺のものは俺のもの」的なジャイアニズム全開なデュアルライセンス
に意味が変わったことだね
とはいえ>>147も触れてるとおり、MySQLは創始者自身がforkしたし、
InnoDBも去年forkしたExtraDBってのがあるにはある
先行きは明るくないとは思うけど、MySQLを捨てるのはまだ早いと思うよ
0157NAME IS NULL
2009/05/08(金) 21:48:58ID:???http://tsushima.2ch.net/test/read.cgi/news/1241785943/
2009/05/08 20:23 maido3.com ホームページについてご報告いたします
maido3.com ホームページについてご報告いたします。
2009年5月7日、お客様のご指摘により http://www.maido3.com/
にアクセスするとセキュリティソフトによりサイトの閲覧が
遮断されるとのご指摘を頂きました。
ありがとうございました。
確認の結果、http://www.maido3.com/ 以下のHTMLファイルに
不正なJavaスクリプトが埋め込まれている事が確認されましたので、
急きょページの表示を停止しました。
その後の調査の結果、HTMLファイルが書き換えられたのは、
2009年5月4日午後3時30分ごろと思われます。
http://www.maido3.com/ にアクセスされたお客様は、
ご利用のパソコンの安全をご確認ください。
現在弊社では、新しいサーバーに maido3.com を移転しており、
新しいHTMLファイルにて順次ページの表示を再開しています。
全サービスのチェックおよびサービスの再開は2009年5月11日午後6時の予定です。
新しい情報が入りましたら改めてご連絡いたします。
http://www.maido3.cc/server/release/2009/200905082023.html
0158NAME IS NULL
2009/05/09(土) 01:08:49ID:???イノデービー
マイアイサム
0159NAME IS NULL
2009/05/10(日) 01:13:28ID:???いのちゃん
あいさむ
0160NAME IS NULL
2009/05/10(日) 13:05:23ID:???チンコはインサートできないんだなぁ
みつを
0161NAME IS NULL
2009/05/11(月) 01:05:08ID:HP0cpXb+サーバーAとBがあって、サーバーA(XP)は今まで使っていたサーバーで
サーバーB(Fedora)はバックアップ専用で立てたサーバー
サーバーAからSELECT * INTO OUTFILEしてデータを取り出して
サーバーBにSELECT * INTO OUTFILEするとバックアップ完了であってる?
0162NAME IS NULL
2009/05/11(月) 03:01:24ID:???0163NAME IS NULL
2009/05/11(月) 11:11:14ID:???レプリケーション使え。
0164NAME IS NULL
2009/05/11(月) 14:29:49ID:GmKXaVZfgpg、ssl、appacheなどソフトはフリーのほうが優秀だよ。
それは当然であって、社内の限られた研究者が世界中のハッカーに
勝てるわけがないのね。数が違うから。
0165NAME IS NULL
2009/05/11(月) 16:28:44ID:7jKYx7be可能性としてはあるかもしれないけど、まぁないと思うよ
興味あることの実装と、それを安定して使えるようにする
というのは別物だし。
オプソの弱点のはそこだ ともいわれているしね
コアだった開発者がどこまで集まるかはじゃないかな
#アーキテクト含めて
0166NAME IS NULL
2009/05/11(月) 17:57:18ID:???そうだな、そうであればうれしいな。
でも、>>165の意見に賛同する部分が多いよ。
我侭なユーザーに怒らずに頑張れるのが金なんだよな。
MySQLも皆の為に頑張るよっていうすげぇ素晴らしい人
ばかりだったらSunすら買えなかっただろう。
2年くらい経ったらNetscape並の黒歴史入りかもな。
0167NAME IS NULL
2009/05/11(月) 22:37:42ID:sWkB5gaTNetscapeの血筋がthunderbirdとfirefoxをひっさげて
ものすごい復活劇になってるね。
0168NAME IS NULL
2009/05/11(月) 23:07:13ID:???そうなったらいいね。
firefox並に復活してきたらいいなぁ。
でも、そん時はMySQLって名ではないのだなぁ。
サーベルタイガーあたりの名前で復活してくれ。
0169NAME IS NULL
2009/05/13(水) 02:02:16ID:LXnOWi0qライセンスはMySQL Enterpriseてのを買わなきゃいかんのか。
これって年毎に買わなければいけない?
教えてエロイ人。
0170NAME IS NULL
2009/05/13(水) 02:24:57ID:???0171NAME IS NULL
2009/05/13(水) 11:57:14ID:???GPLにして再配布可能にしちまえ
0172169
2009/05/13(水) 12:14:37ID:oQtcNrJ7そのへん詳しく書かれているソースとかあったら教えてもらえるとありがたいです。
ぐぐっていろんなとこ見ても、イマイチよくわからない・・・
>>171
仕事なのでムリっすねぇ。
0173NAME IS NULL
2009/05/13(水) 15:32:31ID:???0174NAME IS NULL
2009/05/13(水) 15:46:12ID:???0175NAME IS NULL
2009/05/13(水) 19:50:01ID:raTYNme4複合インデックスを作成する際のキーの順番って関係ありますか?
またその場合はカーディナリティの高い順にするべきでしょうか?
よろしくお願いします
0176175
2009/05/13(水) 21:13:27ID:???質疑高等スレで出直してきます。
0177NAME IS NULL
2009/05/14(木) 03:43:58ID:0wBwjegy主キー制約と外部キー制約は効いているのですが。
0178NAME IS NULL
2009/05/14(木) 11:51:18ID:IkGVegOIバージョンは?
って、MySQLはCHECK実装してないけどなw
こんな変なDB使ってるやつは馬鹿だぞ、別のDBにしとけ
0179NAME IS NULL
2009/05/14(木) 13:47:39ID:???0180NAME IS NULL
2009/05/14(木) 14:05:21ID:pUvkUN/J0181NAME IS NULL
2009/05/14(木) 22:46:20ID:IkGVegOIその外部キーだってInnoDBだけだからな
MyISAMでは使えない
0182NAME IS NULL
2009/05/14(木) 23:48:28ID:???それをわざわざこのスレに言いに来る意味があんのか?
俺としては、買収前にOracle社そのものがなくなって欲しかったわ。
Oracleを盲信してるやつらがうざい。
0183NAME IS NULL
2009/05/15(金) 03:04:14ID:???もしかしたらSunの買収話は消えるかもよ
MySQLだけOracleに譲渡とかなw
0184NAME IS NULL
2009/05/15(金) 03:19:34ID:???hagedo
0185NAME IS NULL
2009/05/15(金) 16:59:15ID:???レコードの量が増えるにつれInsertがどんどん、遅くなっていきます。
ある程度は、覚悟していたのですが、あまりにも遅く…。
今後もレコードは増え続けるのですが、どう対応してよいのやら…。
ある程度のところで、新しい全く同じレイアウトのテーブルを
作成し、そのテーブルにデータを追加していき、selectするときは、
既存のテーブルと元のテーブルをunion?
しかし、テーブルを分けてしまうと、重複レコードが…。
通常、こういった場合、どのように対応するのでしょうか?
ご教授していただけないでしょうか。
よろしくお願いします。m(_ _)m
0186NAME IS NULL
2009/05/16(土) 14:47:22ID:???よし、まだまだ大丈夫
0187NAME IS NULL
2009/05/16(土) 15:28:04ID:???1) fulltextインデックス削除
2) INSERT
3) fulltextインデックス作成
とか?
いろいろ制限はついてしまうけど。
0188NAME IS NULL
2009/05/16(土) 16:03:01ID:???0189NAME IS NULL
2009/05/16(土) 17:30:52ID:qEI7Vk1NFalconがどうなったか思い出せ
0190NAME IS NULL
2009/05/16(土) 21:15:26ID:zYBZo2FJfirebirdの例もあるけどね
#使ったことはないけどw
0191NAME IS NULL
2009/05/17(日) 00:32:30ID:???MySQLの思いつきみたいな機能追加と変更はまともな技術者のなせる技ではない。
MySQLはmontyしかforkできないが、montyの技術力じゃ維持しつづけるのは無理。
よって終了
0192NAME IS NULL
2009/05/17(日) 08:33:41ID:???ばかだこいつwwww
0193NAME IS NULL
2009/05/17(日) 12:57:48ID:???0194NAME IS NULL
2009/05/17(日) 13:38:57ID:???0195NAME IS NULL
2009/05/17(日) 14:22:37ID:???0196NAME IS NULL
2009/05/17(日) 15:49:44ID:IAxxUei25.xの見てる感じだけど
0197NAME IS NULL
2009/05/17(日) 16:43:23ID:???Oracleには期待するな。OracleがMySQLを生かそうとするならそれはローエンドのユーザから金をむしり取る場合だけだ。
無料という意味でのフリーウエアとしてはMySQLは終わったんだ。
モンティがforkするMariaSQLはだめだ。マイナーバージョンアップですらゴタゴタする思いつき開発しかできない奴に、
ここまでひろまってしまったプロダクトの舵取りさせたら混乱するだけ。
しかし、モンティに逆らって別プロジェクト立ち上げる人間も、それについていく人間もいないだろう。
強いてあげればGoogleくらいか。GoogleSQLとしてforkすれば移行する人間も多いだろう。しかしGoogleがMySQLを使い続けるだろうが、
それをオープンにしてメンテしつづける意味はまったくない。よってGoogleSQLはない。
つまりMySQLは終わったんだ。
0198NAME IS NULL
2009/05/17(日) 17:19:54ID:IAxxUei2IBMのwebsphereのfree版の方は買収した奴だと思った
他の流れるくらいならと、少しはメンテはあるかもしれんかなと
0199NAME IS NULL
2009/05/17(日) 23:32:38ID:2v0ewY/l0200NAME IS NULL
2009/05/18(月) 03:08:12ID:???トリガとWEBについて1から勉強しなおし
0201NAME IS NULL
2009/05/18(月) 14:47:29ID:???>モンティがforkするMariaSQLはだめだ。マイナーバージョンアップですらゴタゴタする思いつき開発しかできない奴に、
>ここまでひろまってしまったプロダクトの舵取りさせたら混乱するだけ。
こういう思い込みなところが多いから、お前の言うことは説得力に欠ける
0202NAME IS NULL
2009/05/18(月) 15:19:28ID:???インサートはオーバフローに一旦入るから遅いよ。
適当な件数でコミットすべし。
途中でしんだらバックアウトすべし、または手作業バックアウトすべし。
0203NAME IS NULL
2009/05/19(火) 10:48:21ID:???他のサーバから、/var/lib/mysql 以下のデータベース実体ファイルをコピーして来ました。
mysqlで、コピーして来たデータベースを use するところまでは問題無いのですが、
適当な検索文を走らせると
mysql> select * from hogehoge where no = 123123;
ERROR 1017 (HY000): Can't find file: './hogehoge/aaa.frm' (errno: 13)
というエラーが出てしまいます。
パスの指定などを行わなければ行けないのでしょうか?
0204NAME IS NULL
2009/05/19(火) 11:41:59ID:???mysqld_safe で起動すると読み込めますが、
service mysqld start から起動すると依然としてNGです。この差はなんなのでしょうか・・
パーミッションなどは問題無いようです。
0205NAME IS NULL
2009/05/19(火) 11:43:39ID:???0206NAME IS NULL
2009/05/19(火) 11:51:50ID:xhLm6cZWコピーして来た物でないデータベースは、現在も問題無く認識できていて、
それと同じパーミッション・所有者としているので問題無いと思います。
0207NAME IS NULL
2009/05/19(火) 12:39:29ID:???ERROR 1017 (HY000): Can't find file: './hogehoge/aaa.frm' (errno: 13)
hogehogeデータベースなのかhogehogeテーブルなのかわからん
エラーメッセージはそのままかこう
0208NAME IS NULL
2009/05/19(火) 13:08:05ID:xhLm6cZWmysql> select * from hogehoge where no = 123123;
ERROR 1017 (HY000): Can't find file: './test/aaa.frm' (errno: 13)
test : データベース hogehoge : テーブル
です。
0209NAME IS NULL
2009/05/19(火) 15:55:09ID:???ERROR 1017 (HY000): Can't find file: './test/hogehoge.frm' (errno: 13)
ですね・・すみません。
0210NAME IS NULL
2009/05/19(火) 16:46:49ID:???修正前のmy.iniに戻すとサービス起動できる
これは一体どういうことなんでしょう?
バージョンは5.1.34です
0211NAME IS NULL
2009/05/19(火) 16:55:11ID:???0212NAME IS NULL
2009/05/20(水) 01:56:07ID:???0213NAME IS NULL
2009/05/20(水) 18:29:03ID:???GPLとPHPライセンスは互換性がないから基本アウトだけど、
FOSS License Exceptionのおかげでセーフ。
ttp://nippondanji.blogspot.com/2009/05/foss-license-exception.html
0214NAME IS NULL
2009/05/20(水) 23:55:36ID:XwWNlez2WEBシステムでMySQL使ってて、
1日に1回、他システムからCSV形式でデータが送られてくる。
CSVは約10テーブル分。
WEBとは別のバックグラウンド処理で取り込んでる。
WEB側(PHP)からは、これらのテーブルに対する更新はない。
10テーブルのうち、delete&insertの全件入替えと、
replaceによる差分入れ替えが混在している。
こういう場合、テーブルのエンジンはMyISAMとInnoDBのどっちがよいだろうか?
0215214
2009/05/20(水) 23:58:19ID:???全件入替えのテーブルは、件数が多いもので約10万件です。
差分の場合、対象テーブルには多いもので数百万件のレコードがあり、
差分で入ってくるものは大体100件程度です。
0216NAME IS NULL
2009/05/20(水) 23:59:47ID:???どうも頭が高いな。
トランザクションが要るか要らないかでどちらのストレージエンジンを使うかを
判断すればいいと思うが。
0217NAME IS NULL
2009/05/21(木) 13:27:56ID:???PHPで書いたソースをどうするかが
キモになるかと思ってたんだが、違うのかな?
0218NAME IS NULL
2009/05/21(木) 21:45:42ID:???更新しないならMyISAMでいいと思うよ。
InnoDBが有利になるとしたら、主キーによる範囲検索を頻繁に行う場合ぐらいか?
0219NAME IS NULL
2009/05/22(金) 06:21:53ID:???もしも更新失敗したらとか考えないのかMySQL使ってる奴らは
バッチ処理の最中になんらかのトラブルがおこったらどうすんの
0220NAME IS NULL
2009/05/22(金) 07:25:11ID:???0221NAME IS NULL
2009/05/22(金) 10:02:38ID:???replaceを使っているならいざという時でもISAMで大丈夫かもしれないが…
確実な更新が必要だったらトランザクションがあるInnoが安心だと思う
0222NAME IS NULL
2009/05/22(金) 11:55:17ID:???mysql 2437 12.6 0.9 117408 20248 ? S May15 1354:21 /usr/sbin/mysqld --basedir=/ --data
こういうのがCPUを喰っていました。
mysqldのリロードや再起動を試みたのですが消えません。
これはなんなのでしょうか?
phpMyAdminのプロセスを見ても該当するのはないようです・・・。
0223NAME IS NULL
2009/05/22(金) 13:25:50ID:???MySQLサーバの本体でしょ?
あなたの作ったアプリケーションが遅いか
大人気でアクセスが多いんでしょう
0224NAME IS NULL
2009/05/22(金) 13:29:06ID:???0225NAME IS NULL
2009/05/22(金) 13:37:03ID:???いや実際にアクセスがあったのか確認するとか、
アクセス遮断しても同様なのかとか
0226NAME IS NULL
2009/05/24(日) 10:31:57ID:???業務的な使い方でバッチ処理云々を言うなら、失敗したらやりなおしだろ。
馬鹿発見
ほんとにMySQLしか知らんやつらはw
業務系でDB使う意味っつか
DBが開発された意味すら分かってないんだなw
0227NAME IS NULL
2009/05/24(日) 12:51:12ID:???つか業務系とか単語出すヤツは現実に無職なヤツだろ。
0228NAME IS NULL
2009/05/24(日) 21:20:24ID:???使われてないの?
0229NAME IS NULL
2009/05/25(月) 17:02:11ID:???学校で、MySQLを学習するのですが、何分触るのが初めてなもので、どのように学習を進めていけばいいのかわかりません・・・。
0230NAME IS NULL
2009/05/25(月) 20:39:00ID:+IuRrIp9どんな教科書使う予定なのか まず書くことが先決だと思う
0231NAME IS NULL
2009/05/26(火) 01:38:17ID:???個人的なお薦めは公式サイトにあるマニュアルを読む事。
あれはよく出来ていると思う。
長く使うのならどうせいずれ何度も見る事になる物だし、
読んで損する事は無いと思うよ。
0232NAME IS NULL
2009/05/26(火) 04:53:14ID:???PHP + MySQL?
0233NAME IS NULL
2009/05/26(火) 05:58:47ID:???i-mode用にデータを指定件数毎にページ分けして表示させようとしてまつ。
データテーブル: d_datas
設定テーブル: m_setting (code, par_page) primary key(code)
SELECT *
FROM d_datas
WHERE foo=xxx
ORDER BY order_key
LIMIT (SELECT par_page FROM m_setting WHERE code=1) * 何ページ目 , (SELECT par_page FROM m_setting WHERE code=1);
の様にサブクエリを使ってみたのですがエラーで動きませんでした。
何が悪いのかさっぱり分からんとです。 LIMITにはサブクエリは使えないとですか?
0234NAME IS NULL
2009/05/26(火) 14:44:18ID:???0235NAME IS NULL
2009/05/26(火) 20:50:50ID:???サブクエリじゃなくてプレースホルダで埋め込め。
0236NAME IS NULL
2009/05/27(水) 10:11:19ID:???つーかmyisamにサブクエリって重いから使わない方がいいかと
0237NAME IS NULL
2009/05/27(水) 11:28:13ID:???今後は5.4を発展させるそうでつ
Oracleに近づこうとする新機能は抹殺w
0238NAME IS NULL
2009/05/28(木) 11:19:43ID:55S4kKZW既に入っているデータの文字コードを全部一度に変換するSQL文ってある?
0239NAME IS NULL
2009/05/28(木) 11:28:26ID:???0240NAME IS NULL
2009/05/28(木) 13:00:25ID:55S4kKZWそれだとDBがたくさんありすぎて大変なので
SQL文だけでなんとか変換できませんか?
0241NAME IS NULL
2009/05/28(木) 13:39:12ID:???変換失敗したときのためにダンプしておくのは同じだし。
0242NAME IS NULL
2009/05/28(木) 14:15:17ID:???マジっすか?ソースどこ?
0243NAME IS NULL
2009/05/28(木) 21:21:49ID:???http://nippondanji.blogspot.com/2009/05/good-bye-mysql-60.html
0244NAME IS NULL
2009/05/28(木) 21:25:30ID:???ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
0245NAME IS NULL
2009/05/28(木) 22:44:02ID:z1ctR8/+http://www.atmarkit.co.jp/fdb/rensai/dbwatch2009/dbwatch20095_02.html
0246238
2009/05/29(金) 00:50:27ID:Tc3W7H//ありがとうございます。
これならPHPのループでテーブル名だけ入れ替えれば簡単に終わりそうです。
これ
ALTER TABLE じゃなくて
ALTER DATABASE とかでDB丸ごと変換できませんか?
0247NAME IS NULL
2009/05/29(金) 02:51:06ID:wLSuWYoVupdate `regist` set `loginId`='hoge@hoge.com', `loginPass`='xxxx', `day1`='2009-05-28' where `uId`=3
というクエリをPHP5で実行したら、
#1054 - Unknown column 'day1' in 'field list'
と言われました、カラムday1は存在していて、型も問題ありません。
自分なりに調べたら、leftJOINをするときに起こりがちな問題ということですが、見ての通りjoinしてません
何が原因なのでしょうか。お手数おかけしますがアドバイスお願いします。
0249NAME IS NULL
2009/05/29(金) 07:56:16ID:???そのday1っていう名前を予約語っぽくないものに変更してみたらどうなんの?
0250NAME IS NULL
2009/05/29(金) 07:58:11ID:l0KxXPVG0252NAME IS NULL
2009/05/29(金) 09:48:04ID:???0253NAME IS NULL
2009/05/29(金) 12:15:08ID:wLSuWYoVありがとうございます
日本語をまじえた名前に変えてみたんですが上手く行かないんです
なんでだろ… バージョンあげたら良いのかなぁ
0254NAME IS NULL
2009/05/31(日) 16:02:55ID:???primarykeyはuniquekeyをかねると記憶していたので検証された方いらっしゃいましたらご教示ください。
0255NAME IS NULL
2009/05/31(日) 19:18:49ID:???0256254
2009/05/31(日) 21:26:17ID:???一般的にはprimaryのみという認識であってますか?
0257NAME IS NULL
2009/05/31(日) 22:15:24ID:???1つしか使われないんだから一緒だろう。
そもそも制約と索引の違いもわかってないのにそこを気にするのは間違ってるな。
0258NAME IS NULL
2009/06/02(火) 16:33:55ID:kUrXdzVLシフトJISのwebページで半角の¥をデータベースに入れると取り出す時に全角のバックスラッシュになって表示されます。
ソとか表とかで終わる文も文字コードの関係で入りません。
ですのでwebページに他の文字コードを使えば解決する問題ですが
2chはシフトJISですよね。
データベースは何使ってるか分かりませんが
シフトJISでも実は問題なくできるという事だと思います。
で、こういう問題はどの様に対処するのが正しいのでしょうか?
どうすればシフトJISでソとか表とか半角の¥とか入りますか?
0259NAME IS NULL
2009/06/02(火) 20:15:25ID:???フォームで受け取る時、ウェブに表示するときに変換汁。
0260NAME IS NULL
2009/06/02(火) 21:56:28ID:???データベースの文字コードをシフトJISにする。
0261NAME IS NULL
2009/06/02(火) 23:10:47ID:???0262NAME IS NULL
2009/06/03(水) 00:43:19ID:t6kRRUCUもう俺は移行済み。むしろMySQLは早く無くなってほしいくらいw
0263258
2009/06/03(水) 02:13:29ID:maHUNQLQレスありがとうございます。
2chの場合を考えると、シフトJISで投稿されて、文末に「ソ」とかある文章でも投稿できてDBに入りますよね。
という事は、CGIスクリプトでDBに入れる前に別の文字コードに変換して入れてるのでしょうか?
それともDBやテーブルの文字コードのデフォルトをシフトJISにすれば
問題なく入るのでしょうか。
でもDBにinsertする直前にSET NAMES SJISのクエリを送れば
デフォルトでシフトJISなのと同じ事ではないのですか?
それでもinsertできません。
0264NAME IS NULL
2009/06/03(水) 04:02:37ID:???escapeだとか、prepareステートメントとか分かってる?
なんの言語つこてるか知らんけど、たいがいの言語のDB-driverには
それらの機能あるはずなんで、そこらへんちゃんと勉強しましょう。
0265NAME IS NULL
2009/06/03(水) 12:32:56ID:maHUNQLQinsertの時にset mame sjisとした場合
insertされる文字はEUCとsjisのどっちで保存されるんですか?
0266NAME IS NULL
2009/06/03(水) 12:48:26ID:???0267NAME IS NULL
2009/06/03(水) 13:48:16ID:maHUNQLQset names sjis送ってもそれはクライアント側からsjisで受け取りますっていうだけで
保存はテーブルのデフォルトコードが採用されるって事?
0268NAME IS NULL
2009/06/03(水) 14:15:28ID:???0269NAME IS NULL
2009/06/03(水) 20:07:23ID:???0270NAME IS NULL
2009/06/04(木) 12:24:34ID:???0271NAME IS NULL
2009/06/04(木) 22:56:19ID:TuMdbt3Uクライアントからサーバにinsertなどでデータを渡した後に,
データの文字コードはcharacter_set_clientからcharacter_set_connectionに
変換されるのでしょうか?
とすれば文字コードの自動変換とは,このことを言うんでしょうか?
また,character_set_connectionとcharacter_set_databaseが異なる場合,
ある文字コードで設定されたデータベースに文字コードの異なるデータが
入るということになるんでしょうか?
0272NAME IS NULL
2009/06/05(金) 01:08:22ID:???データベースにデータを格納しないSQLで使われるキャラクタセット。
mysql> set character_set_connection = cp932;
Query OK, 0 rows affected (0.00 sec)
mysql> select length('あ');
+---------------+
| length('あ') |
+---------------+
| 2 |
+---------------+
1 row in set (0.04 sec)
mysql> set character_set_connection = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> select length('あ');
+---------------+
| length('あ') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)
0273NAME IS NULL
2009/06/05(金) 01:14:08ID:???> ある文字コードで設定されたデータベースに文字コードの異なるデータが
> 入るということになるんでしょうか?
(1) character_set_database
(2) show create databaseで出てくるcharacter set
(3) show create tableで出てくるdefault charset
(4) show create tableで出てくるカラムごとに設定したcharset
まずこの(1)、(2)、(3)、(4)は個別に設定できるので注意。
(1)は(2)で上書きされる。
(2)は(3)で上書きされる。
(3)は(4)で上書きされる。
格納時はcharacter_set_connectionが何だろうと、
(4)で格納される。(4)が設定してなければ(3)で格納される。
一度テーブルを作ってから(1)や(2)を変更して再起動しても
すでに格納したデータは変わらない。
0274271
2009/06/05(金) 02:11:41ID:???ありがとうございました!!リファレンスマニュアルに
「クライアントから送られたステートメントをcharacter_set_client からcharacter_set_connection に変換します(ただし_latin1 あるいは_utf8のようなイントロデューサのある文字列リテラルは除く).」
と書かれていて混乱していました.
>>272のバイト長の例がわかりやすかったです.
>>273は文字コードが(4)(設定されてなければ(3),(2),(1))に変換されて格納されるということですよね.
0275NAME IS NULL
2009/06/05(金) 20:39:52ID:oLyVZQ1Pオプション指定とかいろいろ知識も必要で手間もかかるので
ダンプとかダンプしたデータを戻したりができるフリーソフトってないですか?
Windowsです。
0276NAME IS NULL
2009/06/05(金) 21:41:50ID:???2ちゃんねるはデーターベースは使ってない。
ファイルで管理している。
0277NAME IS NULL
2009/06/06(土) 12:49:40ID:???こんなん?
http://help.matsubarasystems.com/dbUtil/
0278NAME IS NULL
2009/06/06(土) 16:58:59ID:9rrlV8Y0DB使わずにファイルで管理するメリットあるの?
0279NAME IS NULL
2009/06/06(土) 17:11:43ID:???ファイルシステムで済む事にDBを使うメリットは無いでしょ。
0280NAME IS NULL
2009/06/06(土) 20:08:39ID:???はいって何だよ。出来んのかよ。さっきから何度も。何がはいなんだよ。
出来もしねえ奴が軽々しくはいなんて言うんじゃねえよ。
わかってんのかよ。はいって言う事の責任の重さを。
社会勉強のつもりでやってんだったら辞めろおまえ。
0281NAME IS NULL
2009/06/06(土) 20:16:08ID:???なんだなんだ!?
0282NAME IS NULL
2009/06/06(土) 23:04:36ID:???と言うか2chをデータベースで管理していると考えたり、例えてたり
する方が正直どうか?と思うが。
0283NAME IS NULL
2009/06/07(日) 05:22:03ID:???0284NAME IS NULL
2009/06/07(日) 06:18:01ID:???コメント間のリンクの管理もやらない。
これのどこにDBが必要になるんだよ。
0285NAME IS NULL
2009/06/07(日) 10:02:44ID:H5yYzBMm昔から、カウンタなんかでよく出た話
#落ちてもたいしたデータじゃないと言えばそれまでw
スレ一覧の更新順に表記なんかは、DBの方が楽だという発想がないの?
0286NAME IS NULL
2009/06/07(日) 10:46:50ID:???現に2chが持っている事実について
>スレ一覧の更新順に表記なんかは、DBの方が楽だという発想がないの?
現実にはファイルシステムの方が楽な点について
正直>>285みたいな発想できるほうがエンジニアとしては致命的だと思うが。
0287NAME IS NULL
2009/06/07(日) 11:28:59ID:???0288NAME IS NULL
2009/06/07(日) 11:34:06ID:???0289NAME IS NULL
2009/06/07(日) 13:33:10ID:???0290NAME IS NULL
2009/06/07(日) 19:03:15ID:???MySQLスレでこんな発言を聞くと凄くマヌケに感じる。
RDBMSを使ってトランザクション制御しようが、2chの仕様の「追記オンリー、1スレッド1000コメント」
の前にはRDBMS使う必然がないだろ。
つか、RDBMSで最新50取得とか次100とか全部読むをSQLを発行して結果セット取得しながら
HTMLに変換とかやるくらいなら、ファイルシステムを読みながら変換したほうが効率いい。
0291NAME IS NULL
2009/06/07(日) 19:33:05ID:???わざわざDBを使って同期書き込みしたら、それこそ持たないと思うけどね
0292NAME IS NULL
2009/06/07(日) 22:57:18ID:???中の人じゃないので「今」の仕様は知らないけど。
数年前は mmap() してた。
(だからdatサイズ制限とか{ある|あった})
最近はRAMDISK上に置いてるので、鯖落ちするとdatは
電子の藻屑になるケースが多い。
※↑は書き込みの多い実況系の設定
※普通の板はファイルキャッシュで間に合うらしい
0293NAME IS NULL
2009/06/08(月) 08:33:58ID:???実況鯖とかをMySQLで実装してみればいいんじゃね。
おそらく、マッハで鯖が落ちる。
0294NAME IS NULL
2009/06/08(月) 10:48:41ID:???一斉に書き込むとタイムアウトするし、たまに1000超えてるときあるだろ?
銀行の預金じゃないんだからその程度でいいんだよ。
0295NAME IS NULL
2009/06/08(月) 10:54:08ID:???0296NAME IS NULL
2009/06/08(月) 19:34:29ID:GzH14Amhファイルに書き込むのとデータベースに書き込むのは
どっちが速いですか?
0297NAME IS NULL
2009/06/08(月) 19:57:45ID:???・カウンターってウェブページに表示するアクセスカウンターの事?
・データベースはプレーンな InnoDB を使うと考えて良いの?
・ファイルシステムは何を使っても良いの?
・どんなサイトで、可用性はどの程度まで担保すれば良いの?
・サーバの実装は単発の CGI なの? それとも永続的なプロセス?
プロセスのメモリ上に置いておいてどこにも書き出さないのが一番速いよ。
0298NAME IS NULL
2009/06/08(月) 22:00:42ID:???ロックを判断しながらOSのファイルシステムに読み書きするのと、
RDBMSでトランザクション使いながら読み書きするのとだと、
当然だけど前者の方が速い。
0299NAME IS NULL
2009/06/08(月) 22:57:53ID:???プロセス障害が気になるならマルチプロセスにしてデータを共有しておけ。
それでも心配なら 10 分に一回 tmpfs に書き込んでおけ。
まだ不安なら 1 時間に一回 tmpfs からローカルディスクにコピーしろ。
どうしても安心出来ないなら 1 日に一回リモートマシンにバックアップしろ。
0300NAME IS NULL
2009/06/08(月) 23:31:51ID:zsXNZrVFMySQLとやりとりするプロセスが通常数秒で終了するところ何十分もかかっています。
mysqlクライアントのログインに数十秒かかります。
topで見てもmysqldのCPU使用率、メモリ使用率も高くありません。
show processlistでも長時間かかっているQueryはありません。
どのような原因が考えられるでしょうか?
0301NAME IS NULL
2009/06/08(月) 23:40:45ID:???それだけじゃ何とも…
単純な SELECT 文でも時間が掛かるの?
telnet や ssh は遅くなってない?
ローカルホストから接続しても遅いの?
ファイルシステムはいっぱいになってない?
I/O はきちんと処理出来てる?
mysqld 以外に何かプロセスが動いてない?
応答が遅くなる前に何か操作しなかった?
OS は Linux 系?
etc.
0302NAME IS NULL
2009/06/09(火) 00:01:42ID:I15GJ2dD申し訳ないです。
1件のSELECTとINSERTをしてみましたがいつもは一瞬のところが数秒かかります。
sshでmysqldが動いているホストにログインしてmysqlクライアントで操作していますが
mysql以外のコマンドは全く遅くなっていません。
ファイルシステムの空きは十分ありIOに問題はありません。
mysqld以外にもプロセスは動いていますがtopで確認しても負荷の高いものはありません。
突然と書きましたが、応答が遅くなる前に大量の更新処理をしていました。
0303NAME IS NULL
2009/06/09(火) 00:17:37ID:???というのは不思議ですね…
0304NAME IS NULL
2009/06/09(火) 08:04:23ID:???skip-name-resolveとか
0305NAME IS NULL
2009/06/09(火) 10:08:10ID:???エラーログに何も出ていないなら、テーブルスペースフルとかでもないんだよね。
単純に件数が増えて遅くなっているならexplainとかを使ってクエリの中身とか
インデックスの張り方を工夫してみると良いと思う。ファイルソートになってる
とか、インデックスを使えてない可能性もあるから。
0306NAME IS NULL
2009/06/09(火) 13:00:57ID:???アドバイスありがとうございます。
explainなど試してみます。
0307NAME IS NULL
2009/06/09(火) 13:58:46ID:???PostgreSQL には vacuum がありますが、
MySQL には同様のものはありますか?
0308NAME IS NULL
2009/06/09(火) 14:28:52ID:???0310NAME IS NULL
2009/06/09(火) 19:53:16ID:???2chがDB使ってないのは、元々の仕様でそうなっていたからだろ?
要するにDB管理の掲示板じゃなかったから。
DB版掲示板の無料レンタルなんて当時ほぼ無いだろうが
スレ内検索なんかにはDBの方が有利だな。CPUに負荷もかからんし。
0311NAME IS NULL
2009/06/09(火) 20:22:04ID:???疑問は解けたのかな。
0312NAME IS NULL
2009/06/09(火) 20:46:27ID:???スレ内検索…
0313NAME IS NULL
2009/06/09(火) 21:13:50ID:???ひろゆきプログラマー?
0314NAME IS NULL
2009/06/09(火) 21:27:22ID:???金かけまくってとことん突きつめるとDBになるがコストパフォーマンスが…
0315NAME IS NULL
2009/06/09(火) 21:27:54ID:???真性のヴァカ発見
つかRDBMS覚えたて厨房はさっさと2chをMySQLで構築してみりゃいいじゃねーか。
0316NAME IS NULL
2009/06/09(火) 21:30:04ID:???本気でそう思っているなら運営板にでもいって鯖管理でもやらせてもらえば。
UNIX板あたりの住人に「バカ発見」と言われるのがオチだろうけど。
0317NAME IS NULL
2009/06/09(火) 21:41:17ID:???元々の仕様がなんでそうなったのかとか、検索用のインデックスを
張るコストとか、深く考えてないんじゃないかな。
0318NAME IS NULL
2009/06/09(火) 21:44:30ID:???0319NAME IS NULL
2009/06/09(火) 21:57:24ID:???RDBMS相当の機能を自前で実装しようとすると、もっとお金が掛かるよ〜
2chの書き込みをわざわざSQLを使って格納するのは無駄だし、ACID特性も
必要無いし、RDBMSを使う意味は無いよね。
0320NAME IS NULL
2009/06/09(火) 21:59:23ID:???0321NAME IS NULL
2009/06/09(火) 22:01:49ID:???技術要件が違うんだから適材適所
0322NAME IS NULL
2009/06/09(火) 22:35:10ID:???ただのベタファイルだろ。
0323NAME IS NULL
2009/06/09(火) 23:12:57ID:???ファイルで管理とか初心者すぎだろ
0324NAME IS NULL
2009/06/09(火) 23:13:14ID:???ディレクトリとかキャッシュとかタイムスタンプとかアクセス権減とか、
その他のメタデータとか、実装をきちんと理解していれば変ではない。
0325NAME IS NULL
2009/06/09(火) 23:42:44ID:???同じディレクトリ内に大量のファイルを置くとそのファイルを探すのに時間がかかる事。
0326NAME IS NULL
2009/06/09(火) 23:46:52ID:????2chでもACID特性は重要だろ。
でなきゃ同時に書き込みしたらレスが混じるとか、行数制限を越えた
書き込みをした時にレスが半分だけ書かれるなどということが
起きかねない。
0327NAME IS NULL
2009/06/10(水) 00:02:11ID:???板毎にディレクトリは分かれてると思うけど、読み書き可能なスレッドだけ
なら大量というほどの事は無いでしょ。ファイル名のキャッシュもあるし。
もしファイル数が問題なら、ある程度のスレッド数毎にディレクトリを
分ければいいだけだし。
>>326
程度の問題だけど、2chはレスを書き込む度にいちいちfsync()しないと
いけないサイトではないでしょ。永続性は限定的で十分。
0328NAME IS NULL
2009/06/10(水) 00:05:35ID:???0329NAME IS NULL
2009/06/10(水) 00:32:16ID:???0330NAME IS NULL
2009/06/10(水) 01:00:58ID:???なぜその文脈でfsyncだの永続性だのといった単語が出てくる?
0331NAME IS NULL
2009/06/10(水) 05:22:08ID:???だから、同等の機能はそもそもアキラメル
0332NAME IS NULL
2009/06/10(水) 05:23:18ID:???そんなもんw
0333NAME IS NULL
2009/06/10(水) 11:28:53ID:???だからファイルで管理する場合ディレクトリを分けなきゃいけないって事でしょ
0334NAME IS NULL
2009/06/10(水) 11:29:40ID:???転地インデックスにするか、grepみたいに全部見るしかないんじゃね?
0335NAME IS NULL
2009/06/10(水) 12:27:47ID:???理解出来なかったのならACIDのDについて調べてみよう。
>>333
2chのスレ数なら>>325の問題はそもそも気にしなくて良いという事。
0336NAME IS NULL
2009/06/10(水) 13:59:16ID:???0337NAME IS NULL
2009/06/10(水) 14:36:36ID:???・データを連携させて高度な機能を実現したい
・性能を多少犠牲にしても、データの管理を丸投げしたい
「2ch」はどちらにも当て嵌まらないんだよね。
0338NAME IS NULL
2009/06/10(水) 15:36:27ID:???何処で聞いたんだ?したらばも2chとほぼ同じ仕掛けだったと思うが。
まあ、今話しているのはスレッドの管理のことで、
板自体の管理にDBを使ってる可能性は否定しない。
2chブラウザの仕組みを知ってるならスレッドの管理にDBを使ってないのは明白だろ。
0339NAME IS NULL
2009/06/10(水) 15:50:01ID:???sennaってどうなの?
仕組みがよく分からないのだが、効率よく分かち書きしてくれるって事?
0340NAME IS NULL
2009/06/10(水) 16:29:18ID:???0341NAME IS NULL
2009/06/10(水) 21:03:54ID:???FOX★がハゲすぎてるのが気になる
0342NAME IS NULL
2009/06/11(木) 15:32:27ID:???インノデービーで合ってます?
MyISAMはマイアイサムで合ってますよね?
0343NAME IS NULL
2009/06/11(木) 15:59:04ID:???0344NAME IS NULL
2009/06/11(木) 15:59:57ID:???0345NAME IS NULL
2009/06/11(木) 16:02:49ID:???0346NAME IS NULL
2009/06/11(木) 22:13:18ID:???0347NAME IS NULL
2009/06/12(金) 01:01:19ID:???0:37 で『インノディービー』って言ってるね。
日本では『イノデービー』と呼んでる人が多いと思う。
0348NAME IS NULL
2009/06/12(金) 12:08:04ID:???A123A456A789
って文字が格納されてるローがあって、
これからA456てのを削除して、A123A789を残したいってときには、
まずselectして、そこのローをみて、str_replaceしてupdate set
する方法しかないかな?
sql文だけで便利なものありませんか
0349NAME IS NULL
2009/06/12(金) 12:11:46ID:???お騒がせしました
0350NAME IS NULL
2009/06/14(日) 08:31:28ID:???初心者すぎてめっちゃ恥ずかしいですが、よろしくお願いします。
バージョンは 5.1.22-rc です。
TESTテーブルにある、SUUJIというカラムの構造を変更する文を書いてみました。
ALTER TABLE `TEST` CHANGE `SUUJI` `SUUJI` INT( 4 )
INT型は4byte必要と知ったので、INT(4) としてはみたものの、INT(1)でもINT(5)でもエラーが出ません。
INT(1)にしたあと、試しに数字を保存(999999.....と大きめな数を入力)してみたのですが
通常の最大値2147483647まで保存可能なようです。
INT( xx ) の指定には意味があるのでしょうか。そして、本来どう指定するのが正しいのでしょうか?
0351NAME IS NULL
2009/06/14(日) 11:13:51ID:???0352NAME IS NULL
2009/06/14(日) 11:20:15ID:???0353NAME IS NULL
2009/06/14(日) 13:54:59ID:???>本来どう指定するのが正しいのでしょうか?
最終的に何を実現したいのかな?
INT(4) は、表示する時に最低 4 桁出力するという意味です。
指定しているのは表示する桁数であって、格納するデータのサイズ
ではありません。格納するデータのサイズを指定したい場合は、
そのサイズに合わせて TINYINT, SMALLINT, MEDIUMINT, INT,
BIGINT を使い分けます。BIGINT を使うと 8bytes までの数字を
扱うことが出来ます。
http://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html
0354NAME IS NULL
2009/06/15(月) 00:03:12ID:???表示幅の設定だったとは。根本的に間違ってたんですね。
自分の場合は小さい数字をPHPで取り出す目的だったので
あまり意識しなくてもよさそうです。
ありがとうございました!
0355NAME IS NULL
2009/06/15(月) 17:22:54ID:???lock wait timeout exceededって怒られるようになりました。
ググったら
"他のスレッドが保持しているロックをinnodb_lock_wait_timeout秒間待っても獲得出来なかった場合に発生する。 "
と出てきました。
ここの"スレッドが保持しているロック"というのを調べる方法はないでしょうか?
webサービスなので今のところタイムアウトの秒数を増やすといった解決方法は考えていません。
また、もし似たような場面に遭遇したといったことがあればヒントをいただけませんか?
対象となるテーブルはInnoDB、テーブルのロックは見たところ無いように見えてしまっています。
0356NAME IS NULL
2009/06/15(月) 19:32:08ID:???誰がどのロックをつかんでいるかは
MySQL 5.1+InnoDB Pluginを入れるとわかる
かなり難しいけどね
0357NAME IS NULL
2009/06/15(月) 23:19:48ID:2p3b4L8Vそうするとwebサーバーってそもそもdumpしないのか?RAIDだけ?
0358NAME IS NULL
2009/06/15(月) 23:27:05ID:???バックアップの話なら、サイトによって様々でしょ。
例えばレプリケーションしてその先でダンプするとか、
ボリューム管理ソフトやストレージのスナップショット
機能を使うとか、色々。
0359NAME IS NULL
2009/06/16(火) 01:44:07ID:???テーブル作成するため参考書CDに入ってたダンプと思われるtxtインポートしたら
--で始まるコメントの行がSyntax Errorになりますた。
試行錯誤の末、コメント行を全部消して食わせたらちゃんと食ってくれました。
最近のバージョンではコメントの書き方が変わってたりするんでしょうか?
0360NAME IS NULL
2009/06/16(火) 01:50:48ID:???--のコメント行が全部エラーになっているのではないようで、
一行だけ
------------------------------------------
みたいになっている行があって、その行を消すとインポートできました。
そういう行があるとエラーになるようになったのでしょうか?
0361355
2009/06/16(火) 08:02:31ID:???情報ありがとうございます、難航しそうでがーんですがちょっと調べてきます。
>>359
普通のsqlも----------を突っ込んだらコメントに扱ってくれなかったよ。
今まで気にしてなかったけど--の後にスペースが必要なのかな。
0362NAME IS NULL
2009/06/16(火) 12:25:54ID:r17qwjCX掲示板の書き込みで、スレ用のテーブル「thre」、レス用のテーブル「res」があります。
resには、所属スレIDを表す「tid」、投稿日封tを表す「d」がDATETIME型で入っています。
ここで、最新のレス書き込みから30日以上放置されてしまったスレ(thre)を取得したいと思っています。
スレは重複がないように取り出したいです。
30日以上放置されたレスは
3456000 < UNIX_TIMESTAMP() - UNIX_TIMESTAMP(res.d)
という条件で取得可能かと思いますが、1つのクエリでスレ(thre)のリストを取得するにはどう書けば良いのでしょうか?
サブクエリが使えないので、MAX()が絞込み条件に使えず困っています。
0363NAME IS NULL
2009/06/16(火) 18:24:59ID:FL2y7ITV気がするので、ここで質問させて頂きます。
以下の構成が同じ2つのテーブルがあるとします。
hoge
id name
1 one
2 two
3 three
moge
id name
4 fore
5 five
で、それそれ nameがtwoのid値を取得したい場合
select id,name from hoge where name='two'
select id.name from moge where name='two'
と2回検索しているものを1回にまとめるにはどするのでしょうか?
select id from hoge join moge where name='two'
だとエラーになりました。
0364NAME IS NULL
2009/06/16(火) 22:41:56ID:???union all
select id,name from moge where name='two'
0365NAME IS NULL
2009/06/17(水) 16:48:50ID:dEbjvI4yhttp://2php.jp/mysql/show.htmlのSHOW TABLE STATUSのように
表がくずれてしまうのですが、これを見やすくする方法はあるのでしょうか?
0366NAME IS NULL
2009/06/17(水) 17:19:28ID:???縦型表示。
0367NAME IS NULL
2009/06/18(木) 00:30:58ID:JwU+upJr0368356
2009/06/18(木) 14:45:22ID:???ロックの調査方法
http://d.hatena.ne.jp/sh2/20090618
0369NAME IS NULL
2009/06/18(木) 19:14:27ID:???wow わざわざすんません。右も左もわかってませんのでいろいろ漁って勉強させてもらいます!
ちなみに先の問題はレプリケーションの遊びしてた鯖でロックするようなselect出させるようにしてひとまず回避しました。
0370NAME IS NULL
2009/06/18(木) 21:23:14ID:JwU+upJr今はPHPで全テーブル名取得→ループで各テーブルをselectしてます。
これをSQL文だけでやってみたいです。
0371NAME IS NULL
2009/06/19(金) 01:09:06ID:???ここから、中カテゴリが変わるまでitemのみを出すSQLを作りたいのですが、
PHPやPerlの中であえて行わずにMySQL用のクエリだけで実現できるのでしょうか?
識者の方、教えて頂けますと幸いです。
テーブル例)
|category|item|(列名)
|果物|りんご|
|果物|スイカ|
|動物|うし|
|草花|あじさい|
|草花|つばき|
|草花|ひまわり|
出力例)
・果物
りんご
スイカ
・動物
うし
・草花
あじさい
つばき
ひまわり
0372356
2009/06/19(金) 02:09:19ID:???Query OK, 0 rows affected (0.00 sec)
mysql> select concat(if (@job = job, '', @job := job), ',', ename) from emp orde
r by job, ename;
+------------------------------------------------------+
| concat(if (@job = job, '', @job := job), ',', ename) |
+------------------------------------------------------+
| analyst,ford |
| ,scott |
| clerk,adams |
| ,james |
| ,miller |
| ,smith |
| manager,blake |
| ,clark |
| ,jones |
| president,king |
| salesman,allen |
| ,martin |
| ,turner |
| ,ward |
+------------------------------------------------------+
14 rows in set (0.00 sec)
PHPやPerlでやったほうがいいと思います!
0373NAME IS NULL
2009/06/19(金) 02:09:59ID:???0374NAME IS NULL
2009/06/19(金) 02:21:47ID:???1つのselectにするなら全テーブルが同じカラム構成じゃないといけない。
で、あらかじめテーブル一覧がわかってたらビューを作ればできるかも
create view v as
select * from t1
union
select * from t2
…
0375NAME IS NULL
2009/06/19(金) 16:27:37ID:???0376NAME IS NULL
2009/06/19(金) 16:35:35ID:???0377NAME IS NULL
2009/06/19(金) 17:54:46ID:ig7lHck0mysqlimportを使ってDBのバックアップとデータ移行を行いたいと思います。
マニュアルによればタブ区切りテキストを読み込むことができるそうですが、
このmysqlimportで読み込める形式を出力するには、どのような方法が簡単でしょうか?
とりあえず、自分が試したのは以下の通りです。
(1) mysqldump --no-data でテーブル構造をテキストに出力
(2) テーブル構造を移行先DBに読み込ませる
(3) mysql -D database_name -B -N -e 'SELECT * FROM table_name;' でTSVテキストを出力
(4) mysqlimportでTSVを読み込み
しかしこの方法では、
(4)の際に一部レコード(1万件以上)がスキップされるなど、上手くいきませんでした。
なお、元のDBはMySQL3.23、移行先のDBは5.0です。
0378NAME IS NULL
2009/06/19(金) 19:59:46ID:???それはダメだ。
0379377
2009/06/19(金) 20:20:43ID:???文字化けやら文法エラーに悩まされ、他の方法でもいけるかな?と。
>>378
ではどんな方法が良いでしょうか。
0380NAME IS NULL
2009/06/19(金) 22:15:30ID:???0381NAME IS NULL
2009/06/19(金) 23:16:53ID:???dump時に出力後の文字コードを指定できる。
そのdumpした物をそのまま新しいDBに入れればいいだけ。
文字コードがおかしいから文法エラーになってるものだと思われるので
文字コードが正しければ解決。
0382NAME IS NULL
2009/06/19(金) 23:34:06ID:???こんなものがあるんですね。GUIっぽいですが。
使えそうか調べてみます。
>381
--default-character-set ですか?
dumpするときに色々試してみたんですが、何度やっても出来なくて、諦めちゃってました。
0383NAME IS NULL
2009/06/20(土) 12:21:45ID:???SQL文の違いはあまりなくすぐに移行できるでしょうか?
0384NAME IS NULL
2009/06/20(土) 12:40:24ID:???MySQLの勉強が終わったらポスグレを勉強しようと思ってたのに…
移行する時の注意ですが、MySQLもそれなりに個性の強いRDBMSだと思います。
SQL モードやストレージエンジンの違いは注意が必要だと思います。
ドキュメントもそこそこありますし、見通しは良いので、別の RDBMS を
使っていた経験があるなら、そんなに難しい事は無いと思います。
0385NAME IS NULL
2009/06/20(土) 12:51:57ID:???PostgreSQL自体はもうすぐ8.4も出るし、いたって堅調。
SQLの文法はかなり違うからすぐには移行できないよ。
0386NAME IS NULL
2009/06/20(土) 12:57:41ID:???ストアドとかサブクエリーとかバックアップとか
いろいろ悩ましいでしょうね。
0387NAME IS NULL
2009/06/20(土) 16:58:14ID:???0388NAME IS NULL
2009/06/20(土) 17:15:31ID:???0389NAME IS NULL
2009/06/20(土) 17:34:33ID:???0390NAME IS NULL
2009/06/20(土) 22:38:09ID:Uihx1bYmMYSQLのデータだけを常にCドライブとDドライブに書き込みたい。
0391NAME IS NULL
2009/06/20(土) 22:45:10ID:???できるけど?
0392NAME IS NULL
2009/06/22(月) 18:21:45ID:???0393NAME IS NULL
2009/06/22(月) 19:16:47ID:???何が? 必要十分な回答だろう。
0395NAME IS NULL
2009/06/23(火) 08:54:26ID:???他に方法ないんか?
0396NAME IS NULL
2009/06/23(火) 14:01:55ID:???データを受け取ったプログラム側で調整することも視野に入れてみてはどうか。
ランダムで全レコードの中から1つだけ抽出する…という処理なら、
先にランダムな値を決めておいて、
SELECT * FROM table_name WHERE id = $random_id ;
みたいな感じにするとか。
0397NAME IS NULL
2009/06/25(木) 12:17:44ID:Qv13kLE3サーバを2台用意できないのでレプリケーションはできません
稼働したままバックアップ取るなら最低でもロックをして、
一時的にでもリードできないようにする必要はありますか?
0398NAME IS NULL
2009/06/25(木) 13:29:30ID:???>MySQLをアクセスできる状態のままdumpすることはできるのでしょうか?
出来るけど、お金を掛けずに整合性を保ってダンプしたいなら
ロックをする必要があります。
お金があるなら InnoDB Hot Backup を使うという手も。
>サーバを2台用意できないのでレプリケーションはできません
レプリケーションはサーバ一台でも出来る筈。
マスターとスレーブでポートを分ければ良いだけじゃない?
>稼働したままバックアップ取るなら最低でもロックをして、
>一時的にでもリードできないようにする必要はありますか?
InnoDB みたいなクラッシュリカバリを備えているストレージ
エンジンならディスクの側でスナップショットを取るという
方法もあります。これは使っている OS やストレージに依ります。
間違えてたらごめんね。
0399NAME IS NULL
2009/06/26(金) 11:38:19ID:6Q9NAgpu平田 信(44歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/hirata001.jpg
高橋克也(51歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/takahashi001.jpg
菊地直子(37歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/kikuchi001.jpg
0400NAME IS NULL
2009/06/26(金) 12:20:09ID:???mysqldump --single-transactionで
オンラインバックアップ取れる
0401NAME IS NULL
2009/06/26(金) 23:02:37ID:???で、使用しているのはwindows版のmysql4.2です。
現在100万レコードでTELNO char(11)にNORMAL インデックスを張っています。
この中から連続する6桁の数字で終るデータを探すとき
(A) TELNO Like '%000000' or TELNO Like '%111111' or 〜略〜 TELNO Like '%999999'
(B) REGEXP (000000$|111111$|〜略〜|999999$)
(A)の方がかなり早いようなんですが、チューニングが悪いんでしょうか?
それとも正規表現は処理速度が遅いんでしょうか?
0402NAME IS NULL
2009/06/26(金) 23:10:13ID:???こんなのが公表されてんだ、あいつらにとっちゃ好都合なもんだよな。探す媒体を増やすのは分かるが、どうなんかねえ
0403NAME IS NULL
2009/06/27(土) 00:58:12ID:mPR9r3bl数十秒かかってるLockedなプロセス(INSERT文、UPDATE文)がいくつもあるんですが
どのような原因が考えられr、どう対処したらよいでしょうか?
なるべくKILLはしたくないです
0404NAME IS NULL
2009/06/27(土) 09:11:35ID:???インデックスが効くのは完全一致か前方一致検索だけ。
つまり LIKE '000000%' ならインデックスが効くけど
LIKE '%000000' はインデックスが効かない。
末尾6桁だけからなる新しいカラムを追加しよう。
>>403
UPDATE文が効率が悪くなっている可能性がある。
UPDATE文をSELECT文に書き換えてEXPLAINを取ってみる。
0405403
2009/06/27(土) 12:59:01ID:mPR9r3blEXPLAINしてみました。
UPDATEは単純で対象は1テーブルのいつも同じカラムで
タプルの特定はPRIMARY KEYしか使っていないのですが
急に効率がわるくなることはあるのでしょうか?
ただしレコード数は数千万と大きいです。
0406NAME IS NULL
2009/06/27(土) 16:37:33ID:???全然つかっていないのに無意味にINDEX張っているとかいう可能性は?
0407NAME IS NULL
2009/06/27(土) 17:04:43ID:???KILLより再起動が基本だね。
0408403
2009/06/27(土) 17:33:08ID:mPR9r3blPRIMARY A B C
INDEX1 A D
INDEX2 A E
という感じで必要で張っています。
考えてみたら、普段はほとんどINSERTしかしてないところを
パフォーマンスが落ちる前に大量のUPDATEを開始したので
それが原因かもしれません。
0409NAME IS NULL
2009/06/28(日) 13:14:47ID:6HSkCWFHでも後に記述した方にしか書き込まれていません。
複数のドライブに並列に書き込ませたいのですがそれはMYSQLだけでできますか?
0410NAME IS NULL
2009/06/28(日) 13:30:52ID:???ヒント: パーティション
0411NAME IS NULL
2009/06/28(日) 15:37:55ID:6HSkCWFHパーティションしてます。
一つのドライブをCとDに分けても
別々のドライブCとEに指定しても
並列して書き込めませんでした。
エラーが出ないならできるのかと思ったのですが。
0412401
2009/06/29(月) 22:12:20ID:???週末留守にしていたので大変遅れました。
後方一致ってインデックス効かないんですね。
別切り出ししてやってみたいと思います。
0413NAME IS NULL
2009/06/30(火) 00:27:55ID:???Locked じゃなくて、長時間かかっているクエリが原因
0414NAME IS NULL
2009/06/30(火) 17:49:30ID:???別のドライブに移動することができるよ
0415NAME IS NULL
2009/06/30(火) 22:54:48ID:???データをインポートする場合です。
csv形式固定長で1レコード毎に改行コードが入る場合はすんなり行くのですが、これ
が、未改行の場合のインポートの仕方が解らないのです。
別会社のシステムで吐き出すため、改行入れてくれとも言えず、仕方ないので自前で
改行挿入するプログラムを噛ませて取り込んでいるのですが、そのまま出来ないもの
かと思いまして。
こう定義すれば出来るとか、それは出来ないとか教えてもらえれば幸いです。
0416NAME IS NULL
2009/07/01(水) 00:46:51ID:???レコードの区切り文字が改行コードでない?
じゃあレコードは何で区切られてるの?
0417NAME IS NULL
2009/07/01(水) 02:30:31ID:???0418NAME IS NULL
2009/07/01(水) 02:52:57ID:???汎用機からエクスポートされたデータでパディング付きの固定レコード長だったり、
単に LF 以外の文字を改行マークとしている事を改行コードが無いと言ってるだけかもよ。
後者なら LINES TERMINATED BY で済むかもしれないけど、前者なら…
0419NAME IS NULL
2009/07/01(水) 10:52:22ID:nypSdZ/xMySQLで質問です。
ありがちなLAMP構成でMySQLは4.1.22、MASTER-SLAVEで構成されてます。
PHPからスレーブにSELECT文を投げつけたんですが、あるプロセス一つだけ
消せずに困ってます。
プロセスリストを見ると、件のプロセスはpreparingのまま動いていないようで
それ自体をKILLしてもまた新たにプロセスが再開され、またpreparingで止まって
しまいます。
この場合、プロセス自体を完全に停止させる方法ってあるんでしょうか?
0420NAME IS NULL
2009/07/01(水) 19:37:11ID:x7PEdshB「where a=? && b=?」
なら index(a,b) でいいと思うのですが、
「where (a=?||b=?)」
といった場合にindexを効率的に付けるにはどのようにしたらよいのでしょうか?
index(a), index(b) とするのがいいのでしょうか?
よろしくお願いします。
0421415
2009/07/01(水) 23:11:09ID:???舌足らずで申し訳ないです。
例えば、以下のような感じです。
項目A char(10)
項目B char(15)
項目C char(05)
項目D char(40)
だとすると
ホスト出力ファイルは全ての項目が固定長で
項目A,項目B,項目C,項目D,項目A,項目B,項目C,項目D,〜略〜項目A,項目B,項目C,項目D[EOF]
コレを自前で
項目A,項目B,項目C,項目D\n
項目A,項目B,項目C,項目D\n
項目A,項目B,項目C,項目D\n
と変換して取り込んでいるんです。
これでイメージつかめますか?
0422NAME IS NULL
2009/07/02(木) 11:33:43ID:???うまくいけばindex mergeするかもしれないけど
aとbにそれぞれindexつけて
select ... where a = ?
union
select ... where b = ?
とするのはどう。
OracleでもPostgreSQLでもこの手のクエリは苦手
0423NAME IS NULL
2009/07/02(木) 18:54:37ID:R3n1Iv0vMySQLのストアドプロシージャで
下記のようなクエリを実行しようと思っております。
DECLARE _tblName VARCHAR(12);
SET _tblName = "testtbl";
SELECT `hoge` INTO @res FROM _tblName WHERE `hogeid` = 1;
INSERT INTO `resulttbl`(res) VALUES (@res);
このようにした場合、ストアド自体はCREATEされるのですが
_tblName自体をテーブルの名前として認識してしまい、
実行時に「_tblNameというテーブルが無い」というエラーで停止します。
SET @tblName = "testtbl";
SELECT `hoge` INTO @res FROM @tblName WHERE `hogeid` = 1;
INSERT INTO `resulttbl`(res) VALUES (@res);
このようにした場合
「' WHERE `hogeid` = 1; ' の周辺でsyntax error」のエラーが出て
ストアド自体がCREATEできません。
要は変数にテーブル名を定義し、それをクエリで使いたいということなのですが
他に何か方法はありますでしょうか?
0424NAME IS NULL
2009/07/02(木) 23:59:25ID:zf5eYLXRありがとうございます。なかなか難しいですね。
unionという手もあるんですね。有難う御座います。試してみます。
0425NAME IS NULL
2009/07/03(金) 08:58:52ID:bnHp31sePostgreSQLはbitmap scanが実装されたんでORでも速い。
試してみ。MySQLよりRDBとしてかなり良いぞ。
0426NAME IS NULL
2009/07/04(土) 23:14:23ID:???テーブルaにカラム1〜9があると仮定します。
MySQL4.1では、カラム1〜7のみデータをinport出来ていたのですが、
5.0だとカラム8〜9も追加したカラム1〜9からなるデータでないとinport
できませんでした。
仕様変わったんですか?
まぁ正確なデータを作成していないのが悪いんですが、ファイル作成
プログラム作り直したりと、かなり不便ですねぇ。
0427NAME IS NULL
2009/07/05(日) 16:22:01ID:???カラム名を1..7だけ指定してimportすれば済む話じゃね?
0428NAME IS NULL
2009/07/05(日) 22:17:09ID:???カラム名指定でインポートなんて出来るんですか(知らんかったです
web徘徊してやり方覚えてきます。
0429NAME IS NULL
2009/07/05(日) 22:18:01ID:???>>427だった、自分にresしてどうするw
0430NAME IS NULL
2009/07/06(月) 17:02:45ID:???fld1 char(10) uniqueと書くのと、
primary key(fld1)と書くので
何か性能面等で違いは出ますか?
0431NAME IS NULL
2009/07/08(水) 06:19:53ID:???InnoDBならPrimary Keyの方が速い
これを読もう
http://www.mysqlconf.com/mysql2009/public/schedule/detail/6661
0432NAME IS NULL
2009/07/08(水) 21:59:33ID:???邪道かもしれませんが、各カラムが日本語名となっております。
上記のインポートの際、
LOAD DATA INFILE "sample.txt" INTO TABLE sample_table (`カラム1`,`カラム2`,〜略〜,`カラム7`)
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
としてもエラーになります。
カラム指定の場合、日本語表記カラムはNGなんでしょうか?
0433NAME IS NULL
2009/07/09(木) 20:58:06ID:???現在InnoDBのみ利用しています。
この場合key_buffer_sizeの項目はInnoDBでは全く利用していないということで最小値に設定してまってもいいのでしょうか。
他の部分で少しでも利用分を増やしたいと思っています。
よろしくお願いします。
0434NAME IS NULL
2009/07/09(木) 21:20:59ID:???エラー内容とか、テーブルのカラムのデータ型とか書いた方がいいと思うよ。
「エラーになった」だけじゃ情報不足かと。
0435NAME IS NULL
2009/07/10(金) 06:44:47ID:???クエリで内部的にMyISAMのテーブルを作ることがある
1MBぐらいは残しておいたほうがいいよ
0436NAME IS NULL
2009/07/10(金) 09:16:01ID:???個人的にauto incrementは好きではないのですが・・・。
0437NAME IS NULL
2009/07/10(金) 19:41:26ID:???>auto incrementは好きではない
気持ちはわかる。
勝手に数字をふられるのが嫌なんだろ。
オレも最初はそうだった。
しかし、今では望んで使う。
レコード固有の一意な識別子としては
とても便利だからだ。
理由や理想じゃない。
我慢してちょっと使ってみろ。
0438NAME IS NULL
2009/07/10(金) 20:02:57ID:???俺はinsertした後に「さっきの値」を取得するという操作がなんとなく
気に入らない。
0439NAME IS NULL
2009/07/10(金) 20:05:48ID:???0440NAME IS NULL
2009/07/10(金) 22:18:33ID:???ありがとうございます!
予期せぬときに影響出そうですね。
多少多めに残しておくことにします。
0441NAME IS NULL
2009/07/10(金) 22:43:40ID:???0442NAME IS NULL
2009/07/10(金) 23:14:05ID:???内容無さ杉ですね、すみません。
以下のようなテストをしてみました。
使用DBはwindows版の5.0.83-community-nt MySQL Community Editionです。
「test_001」dbに、以下のコマンドでテーブルを作成。
CREATE TABLE `test_tbl` (
`基準日` int(8) NOT NULL default '0',
`業営所コード` int(3) NOT NULL default '0',
`営業所名` varchar(10) default NULL,
PRIMARY KEY (`基準日`,`業営所コード`)
) ENGINE=InnoDB DEFAULT CHARSET=sjis;
dドライブ直下に、以下の内容のtest.csv(基準日、営業所コードのみであり、営業所名はないデータで3レコード)を作成。
20080601,101
20080602,102
20080603,101
以下のコマンドにてインポート処理実施
LOAD DATA INFILE 'd:/test.csv' INTO TABLE test_tbl (`基準日`,`営業所コード`)
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
で以下のエラーが発生。
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 'FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'' at line 2
という具合です。
MySQLのHPを見るとSQL文は良い様に思えるのですが、どこか間違っているのでしょうか?
0443NAME IS NULL
2009/07/11(土) 06:18:03ID:???テーブルのカラム名が"業営所コード"になってるのはタイプミス?
CSVインポートのSQLは"営業所コード"になってるみたいだけど。
0444443
2009/07/11(土) 06:49:21ID:???以下のSQLで行けましたよ。ちなみに環境はwindowsの5.0.82。
LOAD DATA INFILE 'D:/test.csv'
INTO TABLE test_tbl
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(`基準日`,`営業所コード`)
0445NAME IS NULL
2009/07/11(土) 09:26:20ID:???0446NAME IS NULL
2009/07/11(土) 09:35:36ID:???そこかよw
0447442
2009/07/11(土) 22:54:02ID:???月曜会社行ったら確認してみます(大汗
0448NAME IS NULL
2009/07/13(月) 12:39:24ID:5irjkhq80449NAME IS NULL
2009/07/13(月) 12:57:25ID:???0450442
2009/07/13(月) 22:21:37ID:???カラム指定って一番最後でないと駄目みたいですね、>>443さんありがとう。
あ、カラム名が"業営所コード"って具合になってた原因は、navicat for mysql使ってるんですが、
これでテーブル定義すると結構な確立でなるんですよね。
普段はエディタでゴリゴリ書いちゃうんであまり気にしてませんでした(汗
0451NAME IS NULL
2009/07/13(月) 23:54:48ID:pM3FPDeTEUCのサイトのフォームからMySQLに入れ、
これをEUCで取り出すと半角の\になってしまいます。
MySQLのデフォルト文字コードはUTF8で、UTF8で取り出しても同様です。
ただコマンドプロンプト上でSJISで取り出した時はちゃんとバックスラッシュになるので、これをEUCでバックスラッシュにできないですか?
入出力時はちゃんとset names ujisは使ってますし、入れるときもエスケープ処理してます。
0452NAME IS NULL
2009/07/14(火) 00:43:12ID:L0cdOLHt日記のプログラムを書くとして、画像のアップロードも各日ごとに1つファイルをアップできるとします
そのとき、登録情報を入れるテーブルに fileUpload みたいなカラムを作って
ファイルのアップがあれば1入れる、みたいにした方が良いでしょうか?
現状はスクリプト側で file_exists($file) みたいにして格納済みファイルのパスを確認してますが、、
汎用性を考えたら専用のカラムに明示した方が良いんでしょうか
0453NAME IS NULL
2009/07/14(火) 06:57:35ID:???ここの住人はプログラムに関してはド素人なので他で聞いた方がいいと思います。
0454NAME IS NULL
2009/07/14(火) 08:30:37ID:???日記のID, パスとかにすれば、
1日1ファイルじゃなくても大丈夫だぞ。
そのテーブルに、特定の日記に紐付くレコードがあれば
アップロードされたファイルがあるってことになる。
0455NAME IS NULL
2009/07/14(火) 10:54:56ID:L0cdOLHtその場合、
日記の本文を登録するテーブルへのinsert処理と
uploadファイルの情報を専用のテーブルに登録する処理をトランザクションで
まとめて実行する、って考えで良いですか?
本文の登録のmysql_insert_id();を途中で取得して、画像情報テーブルに紐付け要素として
入れる感じ?
0456NAME IS NULL
2009/07/14(火) 12:07:15ID:???マジで?プログラム使わずにMySQLだけだと出来る事が限られない?
0457NAME IS NULL
2009/07/14(火) 13:17:51ID:???データ出し入れするだけなら初級程度のプログラムで十分ですから。
0458NAME IS NULL
2009/07/14(火) 14:51:58ID:???0459451
2009/07/14(火) 15:29:51ID:Luc8mMqTテーブルのコードをutf8からEUCに変更しただけで\が\にならなくなりました。
つまりクライアント側の文字コードとDBの文字コードは同じにしなければいけないってことだと思うのですが
ネット上だと必ずしもDB側のコードと同じコードでPOSTされるわけではないので困ります。
■以前の流れ■
EUCでPOST→set names ujis→utf8のDBに格納
クエリ(select)→set names ujis→EUCでprint
↑これだと\が\になる(他の文字は問題ない)
utf8で保存すると平仮名で検索してカタカナも表示できたり便利だったのですが、やっぱり全てのテーブルをEUCにするのが一番良いのでしょうか?
他に解決方法があれば教えて下さい。
0460451
2009/07/14(火) 16:40:28ID:???UTF8のページでpost → set names utf8 → UTF8のDBに格納
select → set names utf8 → UTF8のページでprint
↑上記においても\が\に変換される事はありませんでした。
文字コードが同じだから当然といえば当然ですが、
SJISとutf8、SJISとujisとの変換も問題ありませんでした。
よってこれはutf8とEUCの間における変換のバグなのでは?
バグでないとしても利便性が悪いので改善してほしいです。
この様な要望はどこに出せばいいのでしょうか?
参考までに
UTF8のページでpost → set names utf8 → UTF8のDBに格納
select → set names ujis → EUCのページでprint
だと\は?になりました。
それ以外の文字は全く問題ありませんので普段DBに\を入れない人は気が付かないのではないですか?
試しに自分のDBに\をぶち込んでみて下さい。
※使用したDBは5.0と5.1です。
0461NAME IS NULL
2009/07/14(火) 18:18:44ID:???遠慮無くポスグレ使えよ
0462NAME IS NULL
2009/07/14(火) 19:01:33ID:???0463NAME IS NULL
2009/07/14(火) 19:26:41ID:???速度も MySQL に勝つくらいになったし、いい本もあるし。
0464NAME IS NULL
2009/07/14(火) 20:35:58ID:???mysqlだけが悪いように書くなや。
0465NAME IS NULL
2009/07/14(火) 21:00:15ID:???0466NAME IS NULL
2009/07/14(火) 21:00:33ID:???0467NAME IS NULL
2009/07/14(火) 21:10:18ID:???文字コードの話をプログラミングだと思い込むようなド素人はそんなにいないから安心しれ。
0468NAME IS NULL
2009/07/14(火) 21:45:55ID:???俺もさっきやってみたら確かに同じ現象が出たw
バグかどうか知らんがユーザーの会のQ&Aにも無い事象だから
今まで誰も気が付かなかったんだろうねw
多分MySQL側がWindowsに配慮して文字コードを変える時にわざわざ\にしてるんだと思うけど。
0469NAME IS NULL
2009/07/14(火) 22:49:18ID:???0470NAME IS NULL
2009/07/14(火) 23:16:59ID:f5HzR+aeトップページを表示する際に、mysqlを使用してユーザー情報の「挿入」「更新」
をしているんだけど、アクセス数がふえるとタイムアウトしてしまう。
MySQLのログを調べたところ、
+--------+----------------------+-----------------+-------------+---------+------+----------+--------------------------------------------------------------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+----------------------+-----------------+-------------+---------+------+----------+--------------------------------------------------------------------------------------------------------------
| 256912 | ****** | localhost | *********** | Query | 33 | Locked | insert into **** ....
| 256913 | ****** | localhost | *********** | Query | 33 | Locked | update .....
のような感じで、どうやらSQL文がロックされていることが原因。
しかし、
$query="LOCK TABLES ほにゃらら WRITE";
mysql_query($query,$dh);
とかいう記述で、データベースをロックはしていない。
だれか解決策をお願いします。
神様
0471NAME IS NULL
2009/07/14(火) 23:17:54ID:???0472NAME IS NULL
2009/07/14(火) 23:25:10ID:???> LOCK TABLES は、現在のスレッドに対してベース テーブル (ビュー以外) をロックします。
0473NAME IS NULL
2009/07/14(火) 23:32:18ID:???0474NAME IS NULL
2009/07/14(火) 23:33:36ID:f5HzR+aeアホ何でここで聞いてます。
解決策がわかるのなら、教えていただけると非常にうれしい。
>>472
ありがとう。
LOCK TABLES は使用してません。
どなたか分かりやすく教えて下さると非常に助かるm(_ _)m
0475NAME IS NULL
2009/07/14(火) 23:34:18ID:f5HzR+ae死なす前にアドバイスを。。。
0476NAME IS NULL
2009/07/14(火) 23:51:35ID:???0477NAME IS NULL
2009/07/15(水) 00:02:05ID:kLERGQuj氏んでほしいんですね。
神様お助けを。。
トップページを表示する際に、mysqlを使用してユーザー情報の「挿入」「更新」
をしているんだけど、アクセス数がふえるとタイムアウトしてしまう。
MySQLのログを調べたところ、
+--------+----------------------+-----------------+-------------+---------+------+----------+--------------------------------------------------------------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+----------------------+-----------------+-------------+---------+------+----------+--------------------------------------------------------------------------------------------------------------
| 256912 | ****** | localhost | *********** | Query | 33 | Locked | insert into **** ....
| 256913 | ****** | localhost | *********** | Query | 33 | Locked | update .....
のような感じで、どうやらSQL文がロックされていることが原因。
しかし、
$query="LOCK TABLES ほにゃらら WRITE";
mysql_query($query,$dh);
とかいう記述で、データベースをロックはしていない。
だれか解決策をお願いします。
神様
連投すいません。
0478NAME IS NULL
2009/07/15(水) 00:32:10ID:???その場合EUC-JPとしてujisじゃなくてeucjpmsを使う。
MySQLとしては4年前に対策済み。
このへんの記事をどうぞ。
http://www.mysql.gr.jp/mysqlml/mysql/msg/12442
0479NAME IS NULL
2009/07/15(水) 00:37:14ID:???情報小出しがよくない。
・対象のテーブルについてshow create table XXX\G
・例示しているshow processlist;を省略しないで全部書く
・my.cnfもさらす
話はそれから。
0480NAME IS NULL
2009/07/15(水) 00:38:44ID:???0481NAME IS NULL
2009/07/15(水) 01:10:17ID:DEAJvIl00482NAME IS NULL
2009/07/15(水) 03:34:49ID:???情報があまりにも小出しで憶測でしか回答できないんだけど
要するにユーザーエージェントとかIPアドレスとかリファラを取得してそれをDBに入れたいって事だよね。
この流れの中に著しく遅くなる原因があるとすれば
思い当たるのはIPアドレスからホスト名を得る場合に若干遅くなるので
それが溜まって遅延するのかも。
それにしてもPHPがタイムアウトする程遅いというのは若干異常。
マイクロタイム関数とかでどの処理に時間がかかってるのかを調べた方がいい。
MYSQL側は、一つのスクリプトで不必要にコネクトやクローズ繰り返したりせず
テーブル設計も不必要に大きくせず、不必要なクエリを送ったりしなければ
デフォルトで十分速いので大丈夫。
0483NAME IS NULL
2009/07/15(水) 05:41:32ID:kZc9K5py有難うございます。
+--------+----------------------+-----------------+-------------+---------+------+----------+---------------------------------------------------------------------------------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+----------------------+-----------------+-------------+---------+------+----------+----------------------------------------------------------------------------------------------------------------------------------
| 256912 | ****** | localhost | *********** | Query | 33 | Locked | insert into user (個体識別,初めての時間,最新の時間,UA,訪問履歴,どこから来たか) values ('XXXX','1247543954','1247543954','DoCoMo....','1247543954idx,','5')
| 256913 | ****** | localhost | *********** | Query | 33 | Locked | insert into user (個体識別,初めての時間,最新の時間,UA,訪問履歴,どこから来たか) values ('YYYY','1247543954','1247543954','DoCoMo....','1247543954idx,','5')
| 256914 | ****** | localhost | *********** | Query | 33 | Locked | update user set 最新の時間='1247543954',comedate='1247543914idx,1247543945idx,' where 個体識別'xxxxxxx'
| 256915 | ****** | localhost | *********** | Query | 33 | Locked | update user set 最新の時間='1247543954',comedate='1247543914idx,1247543945idx,' where 個体識別'yyyyyyy'
そのほかは用意できしだい、載せます。
>>482
有難うございます。
>要するにユーザーエージェントとかIPアドレスとかリファラを取得してそれをDBに入れたいって事だよね。
そのとおりです。
携帯サイトなんですけど、ユーザー情報の種類は情報は
・個体識別番号
・機種名(UA)
・初めて訪問したUNIX時間
・最新のindexに訪問したUNIX時間
・訪問履歴、いつどこのページに訪問したか(時間index.php,時間main.php、時間out.php......)
・どこからきたユーザーか
です。ですからトップページへアクセスすると必ず
select->insert
もしくは
select->update
という流れが発生します。
>思い当たるのはIPアドレスからホスト名を得る場合に若干遅くなるので
それが溜まって遅延するのかも。
htacssessでIP制限をかけたうえで、UAでDoCoMoなどは判断しております。
よってIPアドレスからホスト名得るような記述はありません。
>それにしてもPHPがタイムアウトする程遅いというのは若干異常。 マイクロタイム関数とかでどの処理に時間がかかってるのかを調べた方がいい。
自分も異常だと思います。
マイクロタイム関数ではないんですけど、やはりSQL履歴をみると、
多数の処理がロックされてしまっているのが原因のようです。
解決策がわかりません。。。。。
たしかにそこそこアクセスはあるんですけど、
感覚的にタイムアウトしてしまうほどの処理の量はありえないと思うんですが。。。。
・
0484NAME IS NULL
2009/07/15(水) 09:29:44ID:???insertもupdateも原則爆速なのでselectの方法に問題があるのかも。
PHP側の処理で時間がかかりDBがその間待たされてる可能性もあるのでどっちに原因があるのかは調べた方がいいけど。
0485NAME IS NULL
2009/07/15(水) 10:13:38ID:mKEXFaxlselectに関しては、
select 初めての訪問時間,最新の訪問時間,訪問履歴 from user where 個体識別='そのアクセスの個体識別'
というように毎回発行し、
結果行数が一行(訪問したことがある)の場合はupdate,
結果行数が0行(初めての訪問)の場合はinsert
というようにSQL文を発行しています。
SQLクエリ自体がロックされている(待たされている)ので、
SQL文を受ける側、DB側、に問題があるかと思います。
0486NAME IS NULL
2009/07/15(水) 10:20:26ID:mKEXFaxl現在テーブル「user」は約2万行のデータが入っております。
しかしインデックスは作成していません。(特に何もしてません)
それが原因でしょうか??
ランタイム情報 を見たところ、
Handler_read_rnd_next 1,526 M
データファイルの次の行を読み込んだリクエストの数。この値が高いのはテーブルスキャンを大量に実行しているためです。一般にこれはテーブルのインデックスが不適切か、クエリがインデックスを利用するように書かれていないことを意味します
と記述があります。
1,526 Mというのは多い方なのでしょうか??
0487NAME IS NULL
2009/07/15(水) 10:30:33ID:???このスレのみんなが質問に答える気がなくなるぐらい多いよ!
0488NAME IS NULL
2009/07/15(水) 10:42:21ID:???Σ(゜д゜;)
はっきり言うと「お前がデータベース触るのはヤメロ」と言いたくなる数字
0489NAME IS NULL
2009/07/15(水) 10:43:50ID:mKEXFaxlお騒がせしました、感謝します^^
0490NAME IS NULL
2009/07/15(水) 11:37:21ID:???正直選択に困る時代になったなあ…
ポスグレはレンサバが対応してないことも多いし。
0491NAME IS NULL
2009/07/15(水) 11:53:59ID:???0492NAME IS NULL
2009/07/15(水) 12:19:59ID:???ついでに言っとくと、文字コード指定で、
sjisとujisは使わないほうがいい。
かわりに、cp932とeucjpmsを使うべき。
ちなみに、そうなった原因は、ユニコード
コンソーシアムが非常識だったせい。
MySQL ABはあんまり悪くない。
0493NAME IS NULL
2009/07/15(水) 12:41:08ID:???MariaDBつくっとるよ
http://www.atmarkit.co.jp/news/200905/14/mysql.html
0494NAME IS NULL
2009/07/15(水) 20:30:30ID:???0495NAME IS NULL
2009/07/16(木) 07:32:31ID:???そうだね。トランザクションでやることになると思う。
ただ、日記のIDを通番とかじゃなくて、先にIDがわかる方法(日付/時間ベースで振るとか)なら、
先にuploadファイルの方をINSERTしてから、日記INSERTでも良さそうだけど、
途中でエラーが起こることを考えたら、やっぱりトランザクションにした方がいいと思う。
0496NAME IS NULL
2009/07/16(木) 07:41:48ID:???0497NAME IS NULL
2009/07/16(木) 07:56:25ID:???ポスグレは賢いからインデックス使わなくても速い
乗り換えるなら今だよ
0498NAME IS NULL
2009/07/16(木) 09:54:56ID:Vmzny5Cb上記のクエリ文がうまく動きません
・名前(山田)がカラムname1,name2のいずれかに含まれる
・趣味(野球)がカラムhobbyの中に含まれる。「草野球」でもOK
・loginLevelは必ず1
という抽出条件で書いたつもりなんですが…
ご意見よろしくお願いします
0499NAME IS NULL
2009/07/16(木) 12:57:21ID:???どんな魔法が使われているんですか?
0500NAME IS NULL
2009/07/16(木) 13:41:45ID:???エラーメッセージは?
0501NAME IS NULL
2009/07/16(木) 14:04:15ID:???根本的な出来が違うんだよ。
0502NAME IS NULL
2009/07/16(木) 14:07:51ID:???0503NAME IS NULL
2009/07/16(木) 14:39:58ID:???以下のバグにあたってないか確認してみて。
Bug #32510
LIKE search fails with indexed 'eucjpms' and 'ujis' char column
http://bugs.mysql.com/bug.php?id=32510
0504NAME IS NULL
2009/07/16(木) 15:42:09ID:Vmzny5Cbどうもありがとうございます
select * from sampleTBL where (`name1` like '%山田%' or `name2` like '%山田%') and (`hobby` like '%野球%') and `loginLevel` = '1'
としたら正常に動きました
複数条件で使う場合のlike節は()でくくらなきゃだめみたい?です
もうすこし勉強します。ありがとうございました
0505NAME IS NULL
2009/07/16(木) 17:27:07ID:???UJISをバージョンアップするわけではなく
eucjpmsとして別に作りUJISを残した理由って何なんだ?
0506NAME IS NULL
2009/07/16(木) 19:15:04ID:???文字を追加しただけじゃないから。
変換表も一部変更されてるはず。
あのsjis/ujisで満足するやつはいないと
思うが、それでもリリースしたからには
後方互換性が必要なんだろ。
0507NAME IS NULL
2009/07/16(木) 19:17:14ID:???ぜひ違いを教えてください。
0508NAME IS NULL
2009/07/16(木) 22:32:28ID:???0509NAME IS NULL
2009/07/17(金) 08:19:12ID:???0510NAME IS NULL
2009/07/17(金) 08:56:40ID:???オススメ
0511NAME IS NULL
2009/07/17(金) 11:11:46ID:???euc-jp だといわゆる全角が 2byte だから、800 文字なら 1600byte でよかったけど。
みんなはどうしてるの?
0512NAME IS NULL
2009/07/17(金) 12:27:12ID:???EUC-JPには3バイト文字だってあるんだし
今後は全部文字数で。
0513NAME IS NULL
2009/07/17(金) 12:29:54ID:???0514NAME IS NULL
2009/07/17(金) 13:02:47ID:???0515511
2009/07/17(金) 13:05:15ID:???varchar のバイト指定はどうしているの?
text を使うということ?
0516NAME IS NULL
2009/07/17(金) 15:23:59ID:???0517NAME IS NULL
2009/07/17(金) 16:33:52ID:???0518NAME IS NULL
2009/07/17(金) 17:29:28ID:???0519NAME IS NULL
2009/07/17(金) 18:40:58ID:???0520NAME IS NULL
2009/07/17(金) 19:47:22ID:???また、いずれ4バイトに修正される予定。
0521NAME IS NULL
2009/07/17(金) 20:13:30ID:???コピー中もDBが更新されてても、コピー完了時に双方のファイルは完全に一致する?
0522NAME IS NULL
2009/07/17(金) 21:46:32ID:???だめ
一致しないどころかコピー先のDBは壊れてるぞ
0523NAME IS NULL
2009/07/17(金) 22:23:12ID:???0524NAME IS NULL
2009/07/17(金) 23:38:20ID:???0525NAME IS NULL
2009/07/18(土) 02:48:30ID:???0526NAME IS NULL
2009/07/18(土) 03:29:47ID:???skip-grant-tablesでぐぐれ
0527NAME IS NULL
2009/07/18(土) 11:33:43ID:kUbe0jQySELECT * FROM table where column1 = '$a' AND column2 = '$b'
PHPで検索する時に$bに文字が入っていたらcolumn1とcolumn2から探し
入っていなければcolumn1だけから探したいのですが
ANDじゃなくORだと検索結果が変わってしまいます。
かといってselectの文を$bが入っている時用といない時用で2つも書くのもごちゃごちゃするので
一行で書く方法って無いですか?
0528NAME IS NULL
2009/07/18(土) 11:50:14ID:???何もクエリ全体を二つ書く必要はないだろ。
WHERE句のAND条件の部分だけ、PHPのIF文か何かで判断して
追加させるかどうか分岐させればいい話。
0529NAME IS NULL
2009/07/18(土) 21:09:24ID:???0530NAME IS NULL
2009/07/18(土) 21:26:55ID:???0531NAME IS NULL
2009/07/18(土) 22:14:30ID:???0532NAME IS NULL
2009/07/18(土) 22:51:31ID:???そもそもウェブアプリなら、プログラム側で何かしない限り、
入力がNULLという事はあり得ないのでは?
0533NAME IS NULL
2009/07/18(土) 23:16:14ID:???mysqlでlike検索してるんですが,
時間がかかりすぎて困ってます.
CPU使用率を見たらIdle Processが90%以上あるのに
mysqldの使用率は5%未満...
もっとCPU使えばいいのにと思うのですが,
これはFileIOで時間食ってるだけで
検索自体はもう早くならない感じでしょうか?
0534NAME IS NULL
2009/07/19(日) 00:21:55ID:???マメにバックアップとっとくんだった…
0535NAME IS NULL
2009/07/19(日) 03:38:08ID:???1つのSQLはどんなにがんばってもCPUコア1個しか使わないぞ
0536533
2009/07/19(日) 04:37:04ID:???Coe2Duoだからコアは二つあるけど5%未満なので一つもフルに使ってないです
ttp://d.hatena.ne.jp/sanjapo/20070525
とか見て各種サイズは結構大きくしましたけれどあまり影響がないようでした.
0537NAME IS NULL
2009/07/19(日) 11:54:52ID:???InnoDBならinnodb_buffer_pool_sizeも見直さないとダメだぞ。
そっちは見た?
0538NAME IS NULL
2009/07/19(日) 16:30:05ID:???うぉおおおお
ありがとうございます
256M->512MB
ですごい高速化がされました
各種修正魔に比べてメモリ倍くらい食ってるけど
これでいってみます.
0539NAME IS NULL
2009/07/19(日) 20:37:13ID:???0540NAME IS NULL
2009/07/21(火) 15:42:38ID:yYCdTavmダンプじゃなくて /var/lib/mysql (MyISAMとかInnoDBのファイルがここに)
をそのまま(ただし MySQL は停止した状態)コピー
しておいたんだけど,これって再び MySQL に食べさせないと
中身を取り出すことできませんか?
ファイルから直接 mysqldump で SQL 取り出したい・・・
0541NAME IS NULL
2009/07/21(火) 16:10:52ID:???無理。
でもオープンソースだから
自分でそういうツールを作るというならとめない
0542NAME IS NULL
2009/07/22(水) 16:42:13ID:???0543NAME IS NULL
2009/07/23(木) 01:38:42ID:t2nNTgSy0544NAME IS NULL
2009/07/23(木) 01:41:13ID:???0545NAME IS NULL
2009/07/23(木) 04:31:08ID:/6vymUJv0546NAME IS NULL
2009/07/24(金) 22:29:04ID:???テーブルが増えていくとややこしくなるので^^;
0547NAME IS NULL
2009/07/24(金) 23:12:56ID:???0548NAME IS NULL
2009/07/25(土) 01:23:26ID:???今月号のDBマガジン買え
http://www.seshop.com/detail.asp?pid=11155
0549NAME IS NULL
2009/07/25(土) 17:53:05ID:???とりあえず、マニュアルは5.1の読めばおkですかね?
0550NAME IS NULL
2009/07/25(土) 18:23:11ID:???使ってるバージョン読めよ^^
0551NAME IS NULL
2009/07/25(土) 21:22:54ID:???0552NAME IS NULL
2009/07/27(月) 00:04:57ID:???Like '%文字列%' の部分一致検索を行う必要があるのですが、
これが750万行あるため、実用に耐えうるスピードで処理できません。
なんとか高速化を図りたいのですが、どういうところに手を入れたらいいと思いますでしょうか?
どうかお願いします。
0553NAME IS NULL
2009/07/27(月) 05:28:18ID:???0554552
2009/07/27(月) 11:29:47ID:???検索エンジンですか?
WEBサイトではなく、MySqlのフィールドを検索エンジンに食わせることってできるのでしょうか?
できるのであれば、参考になるサイトなど教えていただけませんでしょうか。
とりあえずレスポンスをいただけるまでは自分で探してみます。
0555NAME IS NULL
2009/07/27(月) 11:35:21ID:???0556NAME IS NULL
2009/07/27(月) 12:55:05ID:???この辺とかどうでしょう。
0557552
2009/07/27(月) 13:01:52ID:???なんどもどうもです。
いまいち把握できていないのです・・・
おっしゃっているのは、750万ファイルのページファイルを作成し、
Googleなどに読み込ませ、
キーワード site:hostname
で検索して結果を得よということでしょうか?
秘密文書が多いので、できればクローズに検索を行いたいのですが、
それは可能なのでしょうか?
また、質問ばかりで申し訳ないのですが、
Tritonnはどうなのでしょうか?
先ほど検索して見つけたばかりなのですが、
悪いうわさがないのならば一度試してみようと思います。
0558NAME IS NULL
2009/07/27(月) 14:19:04ID:???>>553 のいう「検索エンジンを使う」ってことですよ
0559552
2009/07/27(月) 14:35:27ID:???ちぐはぐな掛け合いに合ってしまい申し訳ありません。
(556は見落としてました、すみません)
皆さんありがとうございます。
提示していただいたように「検索エンジン」を用いて実装してみます。
0560NAME IS NULL
2009/07/28(火) 01:43:08ID:E3dl42ntDROP TABLE文とCREATE TABLE文を消して
INSERT文以下のデータを、同じ定義のテーブルに入れたいのですが
このテーブルにはすでにデータが入っています。
キーが重複しているレコードを無視して重複していないレコードだけを
入れる簡単な方法はありますか?
0561NAME IS NULL
2009/07/28(火) 04:25:31ID:???IGNORE
0562NAME IS NULL
2009/07/28(火) 18:44:07ID:???0563NAME IS NULL
2009/07/29(水) 20:24:08ID:???0564NAME IS NULL
2009/07/29(水) 21:05:36ID:???おまえが日本語使えないだけ。
0565NAME IS NULL
2009/07/29(水) 22:00:24ID:???残念ながらエラー文は英語だけなんだ。がんばって解読してくれ!
0566NAME IS NULL
2009/07/29(水) 22:44:11ID:???今日は良いことがあったから、今日だけ俺が訳してやるよ。
なんてエラー?
0567NAME IS NULL
2009/07/29(水) 22:46:22ID:???0568NAME IS NULL
2009/07/29(水) 23:17:15ID:GbEs/oP6テンポラリテーブル使って少しずつ削除したりする?
0569NAME IS NULL
2009/07/29(水) 23:43:14ID:???テンポラリテーブルを使うって、どうやろうとしてるの?
0570NAME IS NULL
2009/07/30(木) 00:09:48ID:???0571NAME IS NULL
2009/07/30(木) 00:35:46ID:???テンポラリにいったんidを入れてjoinに使おうと思ったの
言われてみれば、テンポラリテーブルの利用は本質的な問題じゃなかった
やっぱり段階的に削除していくしかないすなー
0572NAME IS NULL
2009/07/30(木) 03:28:02ID:???レンタルサーバー(さくらインターネット)上の、MySQL4.0を使った容量3GBのデータベースを
バックアップしたいのですが、
mysqldump-4.0 でバックアップしようとすると、
mysqldump-4.0: Out of memory (Needed 3151304 bytes)
mysqldump-4.0: Got error: 2008: MySQL client run out of memory when retrieving data from server
とメモリ不足のエラーが出て途中までしかバックアップできません。
mysqldump だとエラー(Error: You have an error in your SQL syntax.)は出るものの、
一応最後までバックアップ出来るようですが、mysql、mysql-4.0 のどちらも、
ERROR 1193 at line 18: Unknown system variable 'character_set_client'
とエラーが出て、リストアできません。
MySQL4.0と5.0のバージョンが違うことが原因ではないかと思うのですが、
なにかバックアップとリストアをする方法はないでしょうか?
よろしくお願いします。
0573NAME IS NULL
2009/07/30(木) 07:13:14ID:???0574NAME IS NULL
2009/07/31(金) 01:30:44ID:hLmzxvATMySQLの5.0.58を使用しています。
SQLを組んでいて、知り合いから「SUMで集計するときはWHERE句の条件で必ずGROUP BYしたほうがいい。」と言われました。
理由を聞いたのですが、「お約束だから」とはぐらかされました。
(WHEREで絞り込んでいるのだから、GROUP BYの追加は無駄な構文解析が発生するだけだと思ったのですが、。)
例えば、
SELECT SUM(money) FROM receipt WHERE id = 1 ;
というSQLがある場合、
SELECT SUM(money) FROM receipt WHERE id = 1 GROUP BY id ;
というように、GROUP BY を追加したほうがいいというのです。
根拠となるようなものを探したのですが見つかりませんでした、。
どなたか理由を教えて下さい。
0575NAME IS NULL
2009/07/31(金) 08:58:20ID:???0576NAME IS NULL
2009/07/31(金) 09:50:46ID:???sumって、group byがなくても使えることを初めて知った。
ありがとう。
0577NAME IS NULL
2009/07/31(金) 11:15:12ID:???0578574
2009/07/31(金) 12:15:53ID:???「昔ORACLEで、SUMを使う際にGROUP BYを指定しないとエラーになった。」
ということでした。
不要だと説明して追加しないことにしました。
0579NAME IS NULL
2009/07/31(金) 12:45:20ID:???SQL> select sum(sal) from emp where deptno = 10;
SUM(SAL)
----------
8750
0580NAME IS NULL
2009/07/31(金) 21:58:52ID:GDYMXdu6left joinで結合させようとすると同じ名前のカラムが2つあるとエラーが出てしまいます。
table1.USERIDとtable2.USERIDじゃだめなのでしょうか?
どうすればいいのでしょうか?
0581NAME IS NULL
2009/07/31(金) 22:32:54ID:???0582NAME IS NULL
2009/07/31(金) 23:12:11ID:GDYMXdu60583NAME IS NULL
2009/07/31(金) 23:24:41ID:???0584NAME IS NULL
2009/08/01(土) 03:00:36ID:???0585NAME IS NULL
2009/08/01(土) 03:18:23ID:???0586NAME IS NULL
2009/08/01(土) 08:15:23ID:mT+dvTBEそれはないです
リレーションシップとかやらないといけないんでしょうか?
0587NAME IS NULL
2009/08/01(土) 08:28:04ID:???投げたクエリとエラーメッセージくらい書けば?
0588NAME IS NULL
2009/08/01(土) 08:28:49ID:???お前がいなくても大丈夫そうだぜw
0589NAME IS NULL
2009/08/01(土) 14:03:17ID:???会社のDBなのですが、現在、Accessで25人が同時に使用している現状です。
重い、データが壊れる、エラーが出る、接続できなくなるなど様々な弊害が出ています。
そもそも、Accessを多人数用途で使用していること自体が問題なのですが、
今後を考えるとAccessでの運用は厳しい状況です。
そのDBについてのおもりを個人使用のAccessなら心得がある自分が引き受けている状態です。
質問したいのは以下の点です。
・MySQLは導入にコストがどのくらいかかるか。
会社内使用ならCommunity Licenseで構わないようですがそれで大丈夫でしょうか。
また、サーバーを必ず置く必要があるか、将来、有料になってしまうのかなど。
・Access個人使用ならVBAを組める程度のレベルの私が
一からMySQLを始めて、すぐに実用レベルで対応できるようになるでしょうか。
よろしくお願いいたします。
0590NAME IS NULL
2009/08/01(土) 15:24:22ID:???お前がバカなのは理解してあげたので、消えろ
0591NAME IS NULL
2009/08/01(土) 16:19:28ID:???コストってのがよくわからないが,DBの金額という意味なら0円
時間的コストという意味ならそう時間かからん
Access->mysql環境移行のサイトなんか結構ある
サーバが必要かどうかというのも何とも言えない,
現在どういう方法で運用されているのかもよくわからなければ
それを変えたいのか維持したいのかも分かんない.
運用にサーバがいるかどうかじゃなくて,運用にあった設置をすべき
で,将来有料になるかについてはMySQLのGPLしらべてみ
(1点目の中に質問いくつあるねん...)
二点目
条件があいまいでで論点もあやふや,
まぁできんじゃね?としか返せない
0592NAME IS NULL
2009/08/01(土) 17:22:52ID:???かまってちゃん乙
いちいち出てこなくていいから精神科でボダの診断もらって来い
0593NAME IS NULL
2009/08/01(土) 17:49:25ID:???だけど、他人に当たり散らすのはよくないね。
0594NAME IS NULL
2009/08/01(土) 19:54:51ID:???0595589
2009/08/01(土) 21:20:27ID:???回答ありがとうございました。
不明瞭な質問で申し訳ありませんでした。
それにもかかわらず、大まかな方針を頂けました。
ありがとうございます。いろいろと調べてみます。
0596NAME IS NULL
2009/08/02(日) 00:13:49ID:Q4MhiB1rよって、リスク覚悟で。
0597NAME IS NULL
2009/08/02(日) 09:30:27ID:???再配布不可能なの?
0598NAME IS NULL
2009/08/02(日) 09:56:00ID:JR4H8zPC直接ぶちこもうとすると漢字混じりのものは文字コードの違いからエラーになります。
デフォルトutf-8のままutf-8でない文字列をMySQLに保存するにはどうしたらいいでしょうか?
0599NAME IS NULL
2009/08/02(日) 10:13:31ID:???mysql> create table test (id int primary key,
-> data1 varchar(100) character set utf8,
-> data2 varchar(100) character set cp932,
-> data3 varchar(100) character set eucjpms);
0600NAME IS NULL
2009/08/02(日) 10:27:53ID:JR4H8zPCありがとうございました
0601NAME IS NULL
2009/08/02(日) 19:54:52ID:jeLofuXytable1の一部の項目にフラグがついた状態になっています。
これを結合して、フラグの有無にかかわらず全項目を表にしたいと考えています。
select (略) from table1 left join (table2 inner join table3 on table2.id=table3.id) on table1.flag=table3.flag;
とすると、フラグがNULLのものが表に出てきません。
どうしたらいいでしょうか?
0602NAME IS NULL
2009/08/02(日) 20:48:28ID:J20WEjYY0603NAME IS NULL
2009/08/03(月) 17:29:57ID:???状況:WindowsからMysqlAdministratorを使用してログインしようとしたらエラー
Mysql Error Number 2003(Can't Connect to MySQL server on 'IPアドレス'
サーバー
OS:Centos5(x64) Xenにて仮想化
Domein
FILESERVER
DATABASE
WEB
Enforceは全てDISABLEDにしてある
ローカルからデータベースへの接続は可能なんだがリモートでの接続がエラーが
出て上手くいかない
ぐぐってみたら
/etc/my.conf の bind-addressが127.0.0.1 をコメントアウトしろとか書いてあるが…
うちの設定にはそもそも無かったw
あと考えられる部分って何だろう?
数日悩んでいて多分単純な事に気づいていないだけだと思うんだが
0604NAME IS NULL
2009/08/03(月) 17:58:37ID:77U0plNm0605NAME IS NULL
2009/08/03(月) 18:32:13ID:???iptables
ping
mysqladmin ping
0606NAME IS NULL
2009/08/03(月) 18:35:51ID:???接続に使用しようとしているMYSQLユーザのホストはどうなってる?
localhostや127.0.0.1だったら繋がらない。
0607NAME IS NULL
2009/08/03(月) 20:17:30ID:???面倒な変換なしにyyyy/mm/ss hh:nn:ss型を使えないでしょうか?
0608NAME IS NULL
2009/08/03(月) 20:35:18ID:???そのまま格納は無理だろう。
表示はdate_format使え。
0609NAME IS NULL
2009/08/03(月) 22:10:41ID:???update や insert で更新する値としてなら使える。
select で取り出す値は date_format() でも使わないと無理。
0610603
2009/08/04(火) 08:44:28ID:???アドバイスサンクス!
その辺りの事を全て確認してみたがダメだった
原因の切り分けが出来ないから一度仮想化せずに設定して問題なければ
仮想化してチャレンジしてみるよ
0611NAME IS NULL
2009/08/04(火) 12:34:02ID:???>>604も確認したのか。ワロタw
0613NAME IS NULL
2009/08/04(火) 20:05:58ID:CvqNEHZqstatus;をみると何種類もあるうちの1つしかsjisになっておらず、残りはutf8のまま。
全部変えたいときはどこいじればいいの?
0614NAME IS NULL
2009/08/04(火) 21:58:38ID:???何をやったのか具体的にどぞ。
0615NAME IS NULL
2009/08/04(火) 22:57:55ID:???0616NAME IS NULL
2009/08/05(水) 00:36:41ID:dQ/gDRRxvarcharの解釈がバイトレベルから文字数レベルになったから、
そのままだと途中で切れちゃう。
そこで一旦3.28側でvarcharを2倍にしてから持ってきたら問題なかった。
一応これで動いてるけど、本当に問題ないのかな?
0617NAME IS NULL
2009/08/05(水) 04:06:22ID:AIBVsZem0618NAME IS NULL
2009/08/05(水) 21:15:27ID:9eWVh/Lfこの時$userに1jとか入れてもid1を抽出してくるのなぜですか?
0619NAME IS NULL
2009/08/05(水) 22:14:42ID:???0620NAME IS NULL
2009/08/05(水) 22:33:04ID:???MySQLの開発者は電気系な。
0621NAME IS NULL
2009/08/06(木) 00:11:24ID:4Rgx9kKEひょっとしてテーブル作った後に、テーブルのスキーマ変更できない・・・?
0622NAME IS NULL
2009/08/06(木) 18:48:04ID:XYQGPPAG0623NAME IS NULL
2009/08/06(木) 19:11:18ID:???内部的には全部作り直しているみたいだけど.
0624NAME IS NULL
2009/08/06(木) 22:12:57ID:???TelNo varchar(11)
fulltext index using ngram, normalize (TelNo)
の中に、以下のようなデータがはいってたとします。
0123-45-6789
1234-56-7890
234-567-7890
1234567890
0123-556789
これを
select count(*) from sample where match(TelNo) against("7890");
とすると
1234-56-7890
234-567-7890
は抽出するけど
1234567890
は非抽出なんです。
ちなみに
fulltext index using ngram,no normalize (TelNo)
とすれば抽出するようです。
正規化機能って数字羅列は無理なんですか?
0625621
2009/08/06(木) 23:04:39ID:4Rgx9kKE>>623
すまん、テーブル作った後にという表現が悪かった。
既に複数のテーブルを定義してあるんだけど、
ER図の上での定義としてスキーマを変更したいんだけど
やり方が分からない。
ERWinとかERStudioならテーブルのプロパティに、スキーマの
定義があって変更すれば済む。
ちなみに1テーブルづつなら、コピーしたテーブルをスキーマタブに
ペーストする事で実現できたんだけど、本来は複数テーブルと
それに紐づくリレーションをまとめてスキーマ移動したいのです。
0626NAME IS NULL
2009/08/07(金) 08:00:10ID:???split_digit 指定しれ。
ttp://d.hatena.ne.jp/mir/20070906/p2
0627NAME IS NULL
2009/08/07(金) 12:43:30ID:???OSからメモリ不足エラー(Got Error 12)が頻発するんだけど、
設定ファイルのどの項目のメモリ量減らせば解決できますか?
ただ、タスクマネージャ見ても搭載メモリの半分も使ってないのに
このエラーが出るので何かほかのところが間違っている気もするんですが...
どなたかわかる方教えてください。
0628NAME IS NULL
2009/08/07(金) 17:52:52ID:???0629627
2009/08/07(金) 18:39:51ID:???そうだよな、すまない
基本的にInsertとSelectしかしてないです。
大きめのテキストファイルを解析して投げているので、
Insertはものによっては100kb以上なってると思う。
登録されているデータは12GBほど@Mysql\dataフォルダの容量なのでアバウト
登録データが増えるほど頻発するようになった。
表示されたエラーは(たぶんSelect発行時)
「Got error 12 from storage engine」
これが出るとサービス再起動しか復帰できない...
設定はVineとかに入ってる設定サンプルを参考に文字コードとかかを変更したもの
ttp://vine-linux.ddo.jp/linux/sql/mycnf.php こういうの
メモリは2G積んでるから
初めはhugeでやってたけどmediumでも同じ症状が出るから
今はsmallでなんとか安定してうごいてる。
MySQLのバージョンは5.0とすこし古めです
0630NAME IS NULL
2009/08/07(金) 20:36:20ID:???0632NAME IS NULL
2009/08/07(金) 22:04:42ID:???2GBじゃ足りないってことだろう。つーかselectでコケてるのわかってんなら
クエリかインデックスを見直すべきじゃないかなぁ。
0633NAME IS NULL
2009/08/07(金) 23:14:48ID:???たぶん、mysqld が必要とするメモリを確保できない。
my.cnf のパラメータみなおして、メモリ使用量少なめになるように調整してみては?
0635NAME IS NULL
2009/08/08(土) 15:54:56ID:???0636NAME IS NULL
2009/08/10(月) 00:55:17ID:WJlH4sRX外部から接続してこないようにポート塞いでから変更→ポート開けるとか?
0637NAME IS NULL
2009/08/10(月) 12:30:26ID:xYYENRj3リセットかけても直ぐに赤文字になるんだけど。。
0638NAME IS NULL
2009/08/10(月) 17:51:56ID:umkbwiYM0639NAME IS NULL
2009/08/10(月) 19:12:31ID:???2つのテーブルを比較して、指定したカラムのデータが完全に一致することを
チェックするには、どうするのがいいでしょうか。
0640NAME IS NULL
2009/08/10(月) 22:01:23ID:???0641NAME IS NULL
2009/08/10(月) 22:30:31ID:???0642NAME IS NULL
2009/08/14(金) 23:19:48ID:QWmtJHHLマクロとかありますか?
0643NAME IS NULL
2009/08/14(金) 23:58:45ID:???同じ構造のテーブルをたくさん作りたいのかな。
シェルスクリプトでもperlでもVBAでもいいので、自分で書いちゃダメ?
0644NAME IS NULL
2009/08/15(土) 00:10:31ID:???システムの初期導入設定時に複数のcrate tableのSQLを一括で
実行してDB本番環境をすばやく構築したいのです。
一個一個のテーブルを手でcreate tableするのは出来ますが
テーブル数が多いのでマクロかなんかで一括で実行出来たら良いなと。
個々のcreate tableのsqlファイルは既にあります。
OracleだとPL/SQLとかでやってると思いますがMySQLではどうしてるのかなと。
0645644
2009/08/15(土) 00:20:46ID:???バッチ処理が出来るようですね。
ttp://mysqlweb.net/category/4033228-1.html
0646NAME IS NULL
2009/08/15(土) 09:14:23ID:???ファイルがあるのなら、
cat *.sql | mysql
でいいんじゃね?
と思ったら、解決したのか。
0647NAME IS NULL
2009/08/18(火) 11:41:26ID:???どれをインスコするの?
サーバB自体にはDBを持たず、接続するだけの場合。
例)
mysql testdb -h サーバA -u test -p < test.sql > out.txt
MySQL-client-communityだけ?
MySQL-develも必要?
0648NAME IS NULL
2009/08/18(火) 19:49:09ID:???PerlとかCから繋ぐならsharedも必要、
繋ぐものをソースからビルドするならdevelも必要
0649NAME IS NULL
2009/08/19(水) 03:47:47ID:dChAbBgf行を削除した段階ではMYIファイルは縮まないですよね?
削除後MYIファイルを縮めるには、myisqmchkでsort-indexするでOKですか?
あるいは他に方法があれば教えてください
0650NAME IS NULL
2009/08/19(水) 11:21:30ID:???0652NAME IS NULL
2009/08/19(水) 13:00:53ID:7XUHkeqCスケジューラをphp5とmysql5で作っています。関連するテーブルは2つあって、
【sche_info_tb 基本的な情報用】
id, day, eventName
【sche_player_tb 各イベントの参加者用、evIdはsche_info_tbのidです】
id, evId, player
こんな感じです。(それぞれもっとカラムありますが省略してます。参加者は不定数なので、テーブル分離必須?です)
これで、スケジュール一覧のカレンダーを作るときどうやってクエリしたら良いのか迷っています。
カレンダーの構成要素は開催日(sche_info_tb.day)、イベント名(sche_info_tb.eventName)、
参加者名(sche_player_tb.player)です。
自分の考えでは、
1)SELECT * FROM `sche_info_tb` を実行
2)返ってきた結果に対してforeachをまわして一つずつidを取得
3)それをつかって SELECT * FROM `sche_player_tb` WHERE `evId`=$id を実行
という感じです。
しかし、これじゃクエリの実行回数が多過ぎる気がします。ひと月30日として、30回。
1日に複数イベント登録したらもっと増えます。
何か、賢いやり方ないでしょうか?
スケジューラアプリはいろんなサイトにありますが、全部こんなやり方してるんでしょうか? これが普通ですか?
初心者なりに考えて作ってるつもりですが、不出来なところがあれば教えていただけると幸いです。
よろしくお願いします。
0653NAME IS NULL
2009/08/19(水) 14:28:38ID:???select i.day, i.eventName, p.player
from sche_info_tb i, sche_player_tb p
where i.id = p.evId
and i.day between '2009-08-01' and '2009-08-31'
;
0654NAME IS NULL
2009/08/19(水) 14:38:14ID:???INNER JOINのほうが使いやすいのかな・・・
もちろん状況にもよるだろうけど。
0655NAME IS NULL
2009/08/19(水) 16:03:34ID:7XUHkeqCうわー、すごい!
聴いたことはあったんですが理解できなくて手を付けていませんでした。>JOIN
こういう状況で使うんですね。 自分でもう一度確認し直します、ありがとうございました!
0656NAME IS NULL
2009/08/19(水) 17:53:56ID:???がんばってください
0657NAME IS NULL
2009/08/19(水) 18:34:21ID:???オレは、LEFT OUTER JOINばっかり。
それだけといっても過言ではない。
INNERとかCROSSとかいろいろあるけど、
使うべきケースがまったくわかんね。orz
0658NAME IS NULL
2009/08/19(水) 18:45:57ID:???0659NAME IS NULL
2009/08/19(水) 20:57:38ID:fdU1p2ONプロシージャ内で、
insert into hoge (id, name) values(_id, _name);
といったクエリを発行し、データを登録しています。
このときに、insertの結果(正否)を取得するにはどうしたらいいでしょうか?
sybaseとかだと、@@sql_statusとかで直前のクエリのステータスを取得できたと思います。
mysqlの場合はどのようにしたらいいでしょう。
5.0.45-log
MYISAM
です。よろしくお願いします。
0660652
2009/08/20(木) 20:15:50ID:W0DXzN4C自分で、
select t1.*, t2.* from table1 t1, table2 t2 where~~
としてクエリを実行したところ、返り値の中にidが2つある状態になりました
echo $rs[0]['id']とやると、一つ目のidを出力します。
明示的に「一つ目の重複カラムを表示する」あるいは、
クエリ発行時に出力対象から特定のカラムを除外する方法はないでしょうか?
すみませんがアドバイスお願いします。
>>658
サブクエリ教えてくれてありがとうございました
これは便利ですね!
0661NAME IS NULL
2009/08/20(木) 20:28:37ID:???手抜きしないで
select t1.id, t1.hoge, t1.fuga, t2.foo, t2.bar
と必要な列だけ書きましょう。
ちなみにうちの会社では「select *」はコーディング規約で禁止されてます。
0662652
2009/08/20(木) 20:56:57ID:???それしかないんですか…
全部で50個くらいカラムがあるんだけどそれでも個別に書いてくってことですよね?
大変だなぁ。。
とりあえずそうします、ありがとうございました。
0663NAME IS NULL
2009/08/20(木) 20:57:29ID:oS//lB2Kどうも調べてみたら、declare handlerで例外処理をキャッチで着るみたいね。
これでインサートエラーをトラップできそう。
0664NAME IS NULL
2009/08/20(木) 21:00:12ID:oS//lB2Kそんなもん、クラス化(ライブラリか)しておいたらいいでしょう。
また、最初の一発目も、desc テーブル名とかでカラムリストとって、
整形すればさほど難しくはない。
なにより、*で手抜きだけはするなと言うこと。それをやったら許さんぞ。
0665652
2009/08/20(木) 21:10:59ID:???クラス化っていうのはphpとかのプログラム側で関数化するってことですよね?(mysqlの用語ではなくて)
>最初の一発目も、desc テーブル名とかでカラムリストとって
ってなんですか?
クラス内のクエリ文を手作業で、t1.col1,t1.col2,t1.col3,t1.col4,…って書いていく時に、
テーブル構造を出力して見ながらやろうっていう事ですよね?
0666NAME IS NULL
2009/08/20(木) 21:35:54ID:???見ながらやるんじゃなくて、テーブル構造をコピペしてテキストエディタかなんかでマクロを使うか、
sed等で置換するかして機械的な処理で整形してください。
という意味です。がんばってね。ここで手を抜かないことが大事だよ。
0668NAME IS NULL
2009/08/21(金) 12:21:52ID:???オレも面倒なときはつい * を使ってしまうわw
* と 個別にカラムを指定するのって速度的に違いはあるのかな?
感覚的に * のほうが処理速度は速そうだけど・・・。
0669NAME IS NULL
2009/08/21(金) 12:36:16ID:???テーブルアクセスをスキップできるのでとても速い。
select *してしまうと実テーブルを読まざるを得ない。
カバーリングインデックスというテクニックです
0670NAME IS NULL
2009/08/21(金) 13:17:56ID:???へえー、そう言う事情があるんですか
今試してみたら両方のやり方で速度の差なかったけど、何十万件になると違いが出るんでしょうか。。
どうもありがとう
0671NAME IS NULL
2009/08/21(金) 15:09:40ID:???0672NAME IS NULL
2009/08/25(火) 00:55:42ID:???CREATE TABLE `word_count` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`word` varchar(12) NOT NULL,
`count` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `word` (`word`)
)
と言うテーブルで、
select * from word_count where instr('ここに文章が入ります',word);
を実行すると、key が使われなくて速度が出ません。
もっと効率よくできる書き方はありませんか?
0673NAME IS NULL
2009/08/25(火) 10:04:35ID:???http://qwik.jp/tritonn/
0674NAME IS NULL
2009/08/25(火) 10:07:40ID:???全文検索とは逆のことがしたいのですよ。
instr('words',word) を早くしたいのです。
0675NAME IS NULL
2009/08/25(火) 12:55:06ID:???0676NAME IS NULL
2009/08/25(火) 13:06:55ID:???0677NAME IS NULL
2009/08/25(火) 13:45:02ID:???http://dev.mysql.com/sources/doxygen/mysql-5.1/trie_8c-source.html
これですか? ちょっと調べてみますが、具体的な使い方を教えていただけると助かります。
0678NAME IS NULL
2009/08/28(金) 12:45:48ID:???MySQL5.4の機能であるBKAを使用したのだが
併せてsennaの日本語全文検索機能も使いたいと思っています。
5.4にはsennnaのパッチが当てられないので困っていますが
対応方法ほか良い案などありますでしょうか。
現在はTorittonの5.0,67を使ってますが外部結合が遅い・・・
0679NAME IS NULL
2009/08/29(土) 19:06:41ID:odCioAfiこれってDB鯖を複数立ち上げて外側では1つに見せるってものだよね
家で試験するとして
最低3台PCいるかな
DB 1号
DB 2号
クラスタ管理 1号
0680NAME IS NULL
2009/08/29(土) 19:36:53ID:???MySQL 5.1.35 Windows を使って勉強中なんですけど
table shouhin_master ←マスターテーブル
code int
name varchar(20)
〜
delete_flg tinyint
table data_tbl ←データテーブル
code int
data1
〜
外部制約でshouhin_masterからcodeを消した時
data_tblの該当するcodeデータを消すようにはしているのですが。
マスターテーブルのdelete_flg に9を立てた時にトリガーを使って
data_tblの該当するcodeのデータを削除する事出来ますか?
出来るとしたら、どういうトリガーを書けば良い?
0681NAME IS NULL
2009/08/29(土) 19:59:02ID:???パフォーマンス試験じゃなければ、そういう構築例は仮想マシンでやればいいから1台あればいいんじゃね?
0682NAME IS NULL
2009/08/29(土) 23:59:26ID:???NewとかOldとか使え
begin
if new.delete_flg = 9 then
delete from data_tbl where code = new.code;
end if;
end
0683名無しさん@そうだ選挙に行こう
2009/08/30(日) 06:00:50ID:???ありがとうです。勉強させて頂きます。
0684名無しさん@そうだ選挙に行こう
2009/08/30(日) 08:59:50ID:8Tmsiy4ZeventTbl
id/kaijouId/eventName
sankashaTbl
id/eventId/userId/comment
kaijouTbl
id/kaijouName
userTbl
id/userName
条件は以下です。
eventTbl.id = sankashaTbl.eventId
eventTbl.kaijouId = kaijouTbl.id
sankashaTbl = userTbl.id
この状況の時にそれぞれのカラムを全て引き出したいです
どう書いたら良いんでしょうか? userTbl以外の3つまでは以下のようにして出来たんですが。。
SELECT eventTbl.eventName, sankashaTbl.comment, kaijouTbl.kaijouName
FROM (eventTbl LEFT JOIN sankashaTbl ON eventTbl.id=sankashaTbl.eventId)
LEFT JOIN kaijouTbl ON eventTbl.kaijouId=kaijouTbl.id
これからさらにどうしたら良いでしょうか?
FROM ((eventTbl LEFT JOIN sankashaTbl ON eventTbl.id=sankashaTbl.eventId)
LEFT JOIN kaijouTbl ON eventTbl.kaijouId=kaijouTbl.id)
LEFT JOIN sanashaTbl ON sankashaTbl.userId=userTbl.id
としたらエラーしました
0685名無しさん@そうだ選挙に行こう
2009/08/30(日) 09:36:25ID:???userTblをJOINしてなきゃ、そりゃエラーになるだろう
0686名無しさん@そうだ選挙に行こう
2009/08/30(日) 09:47:03ID:8Tmsiy4Z3つまでの解説はよく見かけるんですが、4つ以上は見つけられなくて困ってます
0687名無しさん@そうだ選挙に行こう
2009/08/30(日) 09:47:43ID:8Tmsiy4Z>>685 ありがとうございます
0688名無しさん@そうだ選挙に行こう
2009/08/30(日) 10:48:01ID:???FROM 〜 JOIN 〜 JOIN 〜 JOIN 〜
解説以前に、まずはマニュアル読むべき。
0689名無しさん@そうだ選挙に行こう
2009/08/30(日) 13:14:43ID:8Tmsiy4Zありがとうございます
ずっとマニュアルは読んでるんですが、どうも理解できなくて。。
すみません、教えてください お願いします
0690名無しさん@そうだ選挙に行こう
2009/08/30(日) 13:46:04ID:LriVeEv0「ソースの表示」をやってみると
「NULL文字を含むファイルです。半角スペースに変換してから表示します」
ってなって読みだした文字列の後に大量の半角スぺース(きっと元はNULL文字)が含まれているのが確認できるんですけど、
コレを無くすにはどうすればいいですかね。
AJAXで読み込んだときにNULL文字以下が表示されんくなってしまって困ってます。
誰か心当たりあったら解決策お願いします。
0691690
2009/08/30(日) 14:56:51ID:LriVeEv0スレ違いでした。
phpのスレで訊いてきます。
0692名無しさん@そうだ選挙に行こう
2009/08/30(日) 16:39:53ID:???0693NAME IS NULL
2009/08/31(月) 16:21:21ID:???Slave_runningの値「ON」か「OFF」をmysqlで求めるには、
どのようなクエリを渡せばいいのでしょうか?
0694NAME IS NULL
2009/08/31(月) 21:14:54ID:???を、それぞれのプログラミング言語で
select文と同じように実行すれば取れるよ。
0695693
2009/08/31(月) 22:39:04ID:???あ、ありがとうございます。
とりあえずphpからクエリを投げてみることにします。
phpmyadminばっかり使ってるとダメですね・・。
0696NAME IS NULL
2009/09/01(火) 18:48:52ID:???16桁の数字からなる商品番号を格納するカラムのデータ型は何がいいでしょうか?
(1) BIGINT型で、16桁の整数として格納する
(2) CHAR(16)型で、16個の文字からなる文字列として格納する
(1)と(2)と、どちらが検索が速いでしょうか?
データ件数は、10万〜100万件程度です。
アドバイスよろしくお願いします。
0697NAME IS NULL
2009/09/01(火) 19:02:40ID:???64bitならもちろん、32bitでも、bigint のほうが早いはずだぜ。
まぁ、やってみたら?
0698696
2009/09/01(火) 21:00:44ID:???アドバイス、ありがとうございます。
16桁の商品番号の格納は、BIGINT型で行ってみます!(・∀・)
一応ベンチマークも測ってみようと思って、今100万個のテストデータを作成中ですが、
MySQL5のストアドプロシージャとかで、乱数を一気に100万個ぐらい作る方法ありますかね?
=とりあえずPHPスクリプトで、5000個ずつINSERTしてます><
0699NAME IS NULL
2009/09/02(水) 15:23:36ID:???Where ColName Like '%検索ワード%'
と
Where match(ColName) against('検索ワード')
って結果が違います
これって正常なこと?
何か根本的に間違ってたりしますか?
0700699
2009/09/02(水) 15:45:21ID:???書き込んだ直前以降はちゃんと同じ値になってました。
なんか構文間違ってたんだと思います。
0701NAME IS NULL
2009/09/02(水) 19:14:03ID:???DB Error: unknown error
で止まっちゃうんだけど、これは正しい動作なの?
4.0のマニュアルには2147483647に丸められると書いてあるんだけど。
5.0のマニュアルにはどうなるか何も書いてない。
0702NAME IS NULL
2009/09/02(水) 19:24:15ID:???5.0でも2147483647に丸められるし、でてくる警告は
Out of range value adjusted for column 'a' at row 1
になる。
unknown errorを出しているのはMySQLじゃなくて
その上で動いている言語かツールじゃない?
0703NAME IS NULL
2009/09/02(水) 20:00:54ID:???PHPからPEAR::DBを通してアクセスしていたので、コマンドから打って試してみました。
ERROR 1264 (22003): Out of range value for column 'aaaa' at row 1
になりました。最大値に丸めて追加はされません。
ちなみに5.0じゃなくて5.1.35でした。
とりあえず最大値超えのチェックをPHPのプログラム側に入れることにします。
0704NAME IS NULL
2009/09/02(水) 20:09:52ID:???ちょっと関係ないかもしれないんだけど、
うちの環境で、5.1.35からMyTHTVがエラーを出すようになったんだよ。
5.1.34だと、正しく動いたりしない?
ここで何か変わったのかな。
0705NAME IS NULL
2009/09/03(木) 10:04:24ID:PDF3RFA2一つのテーブルに、for文で連続して10回くらいクエリするようなとき、
他のユーザからも同じテーブルにアクセスがあると問題にならないか気になります
(例えば、insertごとにlast_insert_id()を取る時など、PHPで)
そんなの気にする必要ないんでしょうか?
それとも他ユーザのアクセスから保護する方法はあるでしょうか?あったら教えてください。
よろしくお願いします
0706NAME IS NULL
2009/09/03(木) 10:16:54ID:???LOCK TABLE
0707NAME IS NULL
2009/09/03(木) 10:19:09ID:???LOCK TABLES だった
0708NAME IS NULL
2009/09/03(木) 10:27:13ID:PDF3RFA2ありがとうございます! 調べてみます
707さんは上のような条件の時、必ずLOCK TABLESやってますか?
0709NAME IS NULL
2009/09/03(木) 10:31:18ID:???> last_insert_id()を取る時
これは複数アクセスに関しても安全。
on key duplicate update id=LAST_UPDATE_ID()
かなにかやっとけば完璧。ググって。
0710NAME IS NULL
2009/09/03(木) 10:59:55ID:PDF3RFA2わかりました、どうもありがとう
0711NAME IS NULL
2009/09/03(木) 21:35:43ID:???ちゃんと勉強したほうがいいぞ?
0712NAME IS NULL
2009/09/04(金) 00:59:44ID:???もちろんそうだけど、MySQL(MyISAM)は、
小手先のテクニックでなんとかするDBじゃないかな。
少なくとも、insert idをユニークにするだけなら、トランザクションは要らないし。
0713NAME IS NULL
2009/09/04(金) 12:32:18ID:uLJTuQvZ画面構成としては当日のイベント詳細があって、その下に当月のカレンダーがつきます。
ここで、イベント詳細部分のデータ引き出しがどうしたらいいかわかりません。
条件として
1)当日のイベントがあれば当日のイベントを出力
2)当日のイベントが複数あれば、全てを出力する
3)もし当日イベントがなければ、次にイベントがある日のイベント全てを出力する
4)scheduleTblのカラムは、
ID<id>、2009-09-04(date型)<evDate>、イベント名<evName>、詳細テキスト<text> です。
当日の日付をプログラムで生成して、whereの条件にして当日データを取るくらいできますが、
当日イベントがなかった場合というのがどうしたらいいかわかりません。
日付に1日ずつ足してその都度クエリ、なんて非効率だし、
日付カラムに対して `evDate`>$today かなと思ったんですが、where, limitの指定方法がわかりません
0714NAME IS NULL
2009/09/04(金) 12:42:19ID:???where evDate = (select min(evDate) from schedule where evDate > '2009-09-04')
0715NAME IS NULL
2009/09/04(金) 13:50:22ID:???ありがとうございます!
本当に助かりました
0716NAME IS NULL
2009/09/06(日) 15:11:52ID:???これの検索のロジックって
東京・神奈川それぞれを個別に %東京% みたいにlike検索のキーワードとして、合計2回クエリしてるんでしょうか?
select * from `tbl` where `text` like %東京%
select * from `tbl` where `text` like %神奈川%
みたいに。
sqlスレで聞いた方が良いのかな?
良かったら教えてください、もっと効率的な方法があれば知りたいです。
PHP5.2.8 mysql5です
プログラム板のPHPスレで聞いたんですが、スレ違いということでこちらに来ました
良ければご意見お願いします
0717NAME IS NULL
2009/09/06(日) 15:25:50ID:sqLNCpnT聞く前にググレ
0718NAME IS NULL
2009/09/07(月) 07:00:19ID:UJq67Uhjデータベース(MySQLなど)を構築する場合は、それ専用のマシンを
用意しないといけないのでしょうか?
たとえばWebサーバとして使っているマシンに構築するのは不可能でしょうか。
よろしくお願いします。
0719NAME IS NULL
2009/09/07(月) 08:49:27ID:???やってみないの?たいした手間じゃないとおもうけど。
0720NAME IS NULL
2009/09/07(月) 09:04:09ID:???できるよ。
それに、WebサーバーとMySQLは、同じマシン内で動かしたほうが
セキュリティ的にもDBとWebアプリの通信内容が外に漏れず安心、
という面もある。(パフォーマンス的には別のもののほうがいいけど、
それはまぁ規模によりけり。)
大抵のLinuxサーバーなら、MySQL入るからやってみればいい。
もちろん、httpdとの相乗りも可能だよ。
0721NAME IS NULL
2009/09/07(月) 09:31:29ID:???それだけの情報だと言える事は
ソフトウェア的には同居は可能
0722718
2009/09/07(月) 12:22:13ID:UJq67Uhjどうやら大丈夫そうなので同一マシンで構築してみたいと思います。
ありがとうございました。本当に助かりました。
0723NAME IS NULL
2009/09/07(月) 17:17:40ID:1gVIiixw置換したいのですが方法が思いつきません
他の言語(PHPとか)を使って置き換えれたら楽なのですがそのサーバーにはMysql
しか乗っておらずなんとかSQL上だけでやりたいのですが
どのようにすればいいのでしょうか?
やりたいことは以下のようなことです(PHP)
preg_replace("/^(.*) $/","\\1","abc efg ");
0724NAME IS NULL
2009/09/07(月) 19:23:09ID:???Perlも入ってないの?
0725NAME IS NULL
2009/09/07(月) 22:07:05ID:???0726NAME IS NULL
2009/09/07(月) 22:22:50ID:???MySQLをWindiwsServer2003r2にmsiインストーラでインストールすると
直ぐに終了してしまい
[後でもう一度トライして下さい]の様なメッセージが出て
イベントログにも
[早すぎる終了]のようなメッセージがありました
インストールは可能ですよね?
何が駄目か検討つきません
助けて下さい!
0727NAME IS NULL
2009/09/07(月) 22:39:53ID:???> Windiws
> 検討
何か、インストール時にも読み違いや書き間違いがあるんじゃないのか?
0728726
2009/09/07(月) 22:55:07ID:???はずかしい!
やはりやり方が悪いんでしょうか...
0729NAME IS NULL
2009/09/07(月) 23:38:43ID:???あるいはPCの方で何か異常が生じているとか
0730NAME IS NULL
2009/09/08(火) 00:24:22ID:???0731NAME IS NULL
2009/09/08(火) 00:32:22ID:???おかしくなるんだろ。
M$トラップが発動したと思われ
0732726
2009/09/08(火) 07:58:25ID:???リモートではないコンソール画面からも
いく度か別のバージョンのインストーラでも試しましたが結果は同じでした
詳細のエラー調べてみます!
0733NAME IS NULL
2009/09/08(火) 09:03:57ID:m49/nbrVPerlすらはいっていません
純粋にOSとMySQLのみだけで動作してます
0734NAME IS NULL
2009/09/08(火) 09:46:09ID:???0735NAME IS NULL
2009/09/08(火) 12:13:24ID:???>詳細のエラー調べてみます!
最初にやれ!w
0736NAME IS NULL
2009/09/08(火) 13:55:01ID:m49/nbrV単順にSQL上で処理することは無理ということでしょうか?
ローカルサーバーと自分のPC以外からのアクセスを管理者に制限されているので
やろうとしたら環境整えなきゃいけなかったので方法があるなら
SQLだけでやりたかったのです
でも駄目そうなので環境作る方向でいきます
ありがとうございました
0737NAME IS NULL
2009/09/08(火) 17:09:12ID:???接続しているデータベースによって動作を変えたい場合がある
(具体的に言うとテスト系なのか本番系なのか)のですが、
現在接続しているデータベースが何なのかをSQLで知る方法という
のはあるのしょうか?
0738726
2009/09/08(火) 22:17:29ID:???もうしわけございません。
確認致しました。
以前にもWeb上で情報検索したのですが、解決策がわかりませんでした。
ダウンロード元(9/8現在):http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.38-win32.msi/from/pick
インストーラメッセージ
-----------------------------------------------------
MySQL Server 5.1 Setup Wizard ended
prematurely
The wizard was interrupted before MySQL Server 5.1 could be
completely installed.
Your system has not been modifiled. To complete installation at
another time, please run setup again.
------------------------------------------
イベントログ情報↓
-------------------------------------------------
イベントの種類: 情報
イベント ソース: MsiInstaller
イベント カテゴリ: なし
イベント ID: 11708
日付: 2009/09/08
時刻: 8:40:09
ユーザー: ********
コンピュータ: ********
説明:
Product: MySQL Server 5.1 -- Installation operation failed.
詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
データ:
-----------------------------------------------
Web上での調査は行ったのですが、、、
どうぞご存知の方いらっしゃいましたらご教授ください。
よろしくお願いいたします。
0739726
2009/09/08(火) 22:21:33ID:???他のサーバ(Winserver2003R2)で試みた結果も同様でした。
基本的にはローカルAdminをRDP接続で作業しています。
ドメイン環境(上位に別のドメイン有)、
SQLserverは稼働中です。
(その他Apache,rubyの環境です。)
不足あれば追記します。
よろしくお願いします。
0740NAME IS NULL
2009/09/09(水) 13:04:57ID:???関数DATABASE()の戻り値。
ただ、セッション変数を明示的に使用した
ほうがいいのでは。
0741NAME IS NULL
2009/09/09(水) 18:49:23ID:???まだセッション変数って何?というレベルなんで w これからも勉強します。
有難うございました。
0742NAME IS NULL
2009/09/09(水) 19:18:41ID:dvog8nafCSV 入力の書式が不正です (行: 607)
みたいなエラーメッセージがでて止まってしまいます。
そこまでは取り込めているんですが、これってダメな行があったら、そこを無視して次を取り込むみたいな設定がないんでしょうか。
一つ一つエラーが出る行をつぶしていくのは膨大すぎて……。
0743NAME IS NULL
2009/09/09(水) 21:14:50ID:???0744NAME IS NULL
2009/09/11(金) 00:04:21ID:MS7jWmW9・や.等の全角記号が無視されるようなのですが回避方法はありますか?
0745NAME IS NULL
2009/09/11(金) 10:51:27ID:???0746NAME IS NULL
2009/09/11(金) 20:04:52ID:???既存のマスタ-スレーブのレプリケーションに新しくスレーブを追加しようと思いました。
幸いマスタ側でバイナリログをすべて取っていたので空っぽなスレーブをつないですべてbinlogで読ませようと思いました。
今回追加したスレーブはテスト目的で、vmware上で動いており、スペックがかなり悲惨なのです。
スレーブの設定を終えてrelay-logをどんどん作ってくれたのですが、relay-logが多くてhddがいっぱいになってしまいました。
おかげでsqlスレッドも動かなくなりました。
i/oスレッドだけ止めるだとか、(レプリケーションをいじくりまわす)このあたりの小技とか、何か解決のヒントを教えてもらえませんか?
-- 既存のスレーブもunkスペックなのですが、マスタ開始当初から動いているためrelay-logはpurgeされてうまくうごけています。
>>742
そういった機能がなかったので結局取り込むためのコードかいて利用してます。
0747NAME IS NULL
2009/09/11(金) 20:21:16ID:???MySQLのFULLTEXTインデックスでは日本語に対応できないようなので、Tritonnを使おうと考えています。
しかし調べてみると、Tritonnの全文検索はMyISAMエンジンのテーブルでのみ機能するようです。
全文検索を実現するためにはMyISAMを使う必要がある、
しかしトランザクションが必須なのでInnoDBを使わなければならない
という状況になっており、解決方法が分かりません。
できればTritonnを使いたいのですが、Tritonn以外の方法も含めてMySQL+全文検索機能を実現する良い方法がありましたらご教授頂けないでしょうか?
よろしくお願いします。
0748NAME IS NULL
2009/09/11(金) 20:49:05ID:???テーブルを分けるとかじゃダメなの?
トランジャクション使うデータはInnoDBにして、全文が必要なデータはMyISAMにするとか。
何のデータか知らんから無理かもしれんが。
それか、分かち書きしたデータにFULLTEXT張ってMATCH 〜AGAINSTとか。
0749747
2009/09/11(金) 21:06:19ID:???回答ありがとうございます。
やはりテーブルを分けるのが筋でしょうか。
ブログ関係のWebシステムを作っていまして、ブログ記事のタイトルや内容、その他の関連テーブルからテーブルをまたがって全文検索する機能を作る予定です。
トランザクションは無くても大きな問題は無いように思うのですが、ここは上からの支持なので外せないのです。
また、分かち書きしてDBに入れることも提案したのですが、データ量が増えるとパフォーマンスに影響すると言われて却下されてしまいました。
トランザクションと全文検索の両方を必要とするテーブルを作らないようにDB設計を見直す方向でもう一度考えてみたいと思います。
ありがとうございました。
0750NAME IS NULL
2009/09/11(金) 22:10:16ID:???単にレコード数が多いだけのテーブルの方がチューニングのしようがあるのにな。
0751NAME IS NULL
2009/09/11(金) 23:17:52ID:???0752NAME IS NULL
2009/09/11(金) 23:59:30ID:???0753NAME IS NULL
2009/09/12(土) 00:22:14ID:???いきなり何を言い出すんだ、お前は。
あと、お前がCOBOLを全く知らないことは理解してあげた。
0754NAME IS NULL
2009/09/12(土) 00:26:58ID:???0755NAME IS NULL
2009/09/12(土) 00:29:58ID:???0756NAME IS NULL
2009/09/12(土) 01:14:14ID:???0757NAME IS NULL
2009/09/12(土) 04:00:56ID:???0758NAME IS NULL
2009/09/12(土) 07:51:42ID:???0759NAME IS NULL
2009/09/12(土) 13:36:51ID:???0760NAME IS NULL
2009/09/13(日) 02:17:01ID:8JHnWrpH今、DBサーバにMySQLをインストールしてます。
そのサーバにはディスクが2つあります。
バイナリログとアクセスログが書き込まれるディスクは今は同じなんですが、
アクセスログだけ、片方のディスクに書き込むようにすれば、性能ってあがりますか?
0761NAME IS NULL
2009/09/13(日) 05:35:26ID:???0762NAME IS NULL
2009/09/13(日) 11:36:34ID:???アクセスログって、クエリログのこと?
バイナリログもクエリログもデータベースディスクとわけるべきだと思う。
0763NAME IS NULL
2009/09/14(月) 00:35:25ID:???レプリケーションしてサマリテーブルつくってあげたらどうかな。
senna - toritonnでやってるけどunkスペックなスレーブで十分いけてる検索速度andサマリテーブル作成速度出してます。
0764NAME IS NULL
2009/09/14(月) 06:07:45ID:aUdaKzFoFROM{$table1}
LEFT JOIN {$table2}
ON {$table1}.id1 = {$table2}.id2
LEFT JOIN {$table3}
ON {$table1}.id1 = {$table3}.id3
LEFT JOIN {$table4}
ON {$table1}.id1 = {$table4}.id4
下のやり方でも失敗しました
FROM{$table1}
(((LEFT JOIN {$table2}
ON {$table1}.id1 = {$table2}.id2)
LEFT JOIN {$table3}
ON {$table1}.id1 = {$table3}.id3)
LEFT JOIN {$table4}
ON {$table1}.id1 = {$table4}.id4)
また、原因解決のためエラーログを見たいんですが、どこにあるんでしょうか?
当然自分でググって調べたんですがわからず
/var/log/mysqld.log にひとまとめにしてあるのかと思ってこっちを見ても
該当の情報がありませんでした
大変すみませんがご意見お願いします。centOS5 mysql5を使っています
0765NAME IS NULL
2009/09/14(月) 16:38:23ID:???上の結合については自己解決しました。ありがとうございました
下のエラーログについて、良かったら教えてください
0766NAME IS NULL
2009/09/14(月) 17:29:30ID:???mysqld.logには出ません
0767NAME IS NULL
2009/09/14(月) 18:13:37ID:aUdaKzFoどうもありがとうございます。公式を見ると
http://dev.mysql.com/doc/refman/4.1/ja/error-log.html
「mysqld がエラーログファイルを保存する場所を --log-error[=filename] オプションで指定できるようになっています。
ファイル名を指定しなければ、mysqld は Unix では mysql-data-dir/'hostname'.err」
と書いてあり、centOSなので find / -name localhost.err や find / -name *.err を試しても該当ファイルが見つからず
自前で設定しないとエラーログを保存できないのかなと思ってきました。
その理解で良いんでしょうか?
とりあえずこっちのページを見て(ttp://a-programmer.blog.so-net.ne.jp/2007-09-15)
mysqlmonitorで mysql> mysqld_safe --log-error=/var/log/myerror.log --log-warnings=1 して
わざとsqlエラーを起こしたんですがファイルも出来てません
エラー情報はどこにあるんでしょうか。mysqlディレクトリを見て回ったんですがわかりませんでした
mysqlのバージョンは5.0.45です
0768NAME IS NULL
2009/09/14(月) 18:29:48ID:???ディレクトリ構成がカスタマイズされてる。
付属版では /var/log/mysqld.log がエラーログで正しい。
0769NAME IS NULL
2009/09/14(月) 18:30:40ID:???RHEL5(CentOS5)付属のMySQL 5.0.45ね。
0770767
2009/09/14(月) 21:34:47ID:???どうもありがとうございます
vi /var/log/mysqld.log したんですが、起動/終了履歴しか書いてないです
これじゃないみたいです。mysql、自前で入れた覚えないんですが、うっかりやってしまったのかな…
0771NAME IS NULL
2009/09/14(月) 22:10:55ID:???たぶんあなたは、「エラーログ」について、なにか勘違いしてる。
>>767のurlにあるmysqldのエラーログってのは、
それこそ起動や(そのプロセス自体の)実行に関するエラーのことであって、
通常のSQLクエリを投げた時に、構文が間違ってたりした時の、
"You have an error in your SQL syntax〜〜うんたらかんたら"とか、
"Table(or column) doen't exist・・・"
ってゆうエラーのことではない。
で、そうゆう(SQL)エラーを記録するログは、>>766のとおり、mysqld自体にはついていない。
どんなクライアントアプリを使ってるかしらないけど、perlなりphpなりでやってるなら、
Apache(Webサーバ)のエラーログなり、別ファイルに書き出すなりの設定を、
クライアントアプリ側でトラップするしかない。
0772NAME IS NULL
2009/09/15(火) 03:30:38ID:qoH2jeyE会社で他の人が書いたソース(PHP+MySQL)を読んでいるのですが、
複数のテーブルをselectしてるだけのトランザクションがあります。
自分の理解では、トランザクションは更新のためのものであり、
selectだけの場合はトランザクションは必要ないと、理解していたのですが、間違いでしょうか?
selectだけのトランザクションは、どのような意味があるのでしょうか?
0773NAME IS NULL
2009/09/15(火) 04:12:25ID:???0774NAME IS NULL
2009/09/15(火) 10:02:13ID:???テーブルを作成し、address.dbにデータを登録しました
で、コマンドプロンプトにてSELECTで確認したところ、文字化けしていました
どうやらコマンドプロンプトはShift_JIS形式で、UTF-8形式だと文字化けするようですが、これを何とか出来ないでしょうか?
検索してchcp 65001なんてものを見つけたのですが出来ず、よく分かりませんでした
データベースに書き込み時にShift_JIS変換する方法 又は コマンドプロンプトで文字化け化を直す方法を教えていただけたらと思います
WindowsXP使用で、PHPでの書き込みです
0775NAME IS NULL
2009/09/15(火) 10:53:54ID:???テーブル作成時にキャラクタセットの指定はどのように?
create table 〜
(
〜
) ENGINE=InnoDB DEFAULT CHARSET=cp932;
みたいに指定はした?
0776NAME IS NULL
2009/09/15(火) 11:48:16ID:???set names cp932
する。
いいアイデアがあれば教えてください。
Year
NA
NA
NA
2000
2000
1998
のようなCSVを
read data local infile
で読み込むのですが…
0778NAME IS NULL
2009/09/16(水) 10:58:21ID:???教えていただいたように
$db->exec('CREATE TABLE address(id INTEGER PRIMARY KEY, name VARCHAR(50), address VARCHAR(150), tel VARCHAR(20), email VARCHAR(100)) ENGINE=InnoDB DEFAULT CHARSET=cp932; ');
のようにセットしたところ、まずENGINEに構文エラーが出て、ENGINEを消したところ、次はDEFAULTがエラーが出てしまいました
>>776
コマンドプロンプトを起動するとc:\Documents and Settings\メイン>となりますが、ココにset names cp932と打ち込むのでしょうか?
自分は色々な場所に打ってみたのですが、環境変数 namesが設定されていませんと出てしまいました
0779775
2009/09/16(水) 11:39:51ID:???(こちらのMySQLのバージョンは5.1.37)
MySQLのバージョンは?
CREATE TABLE address(
id INTEGER PRIMARY KEY
,name VARCHAR(50)
,address VARCHAR(150)
,tel VARCHAR(20)
,email VARCHAR(100)
) ENGINE=InnoDB DEFAULT CHARSET=cp932;
setについては俺は接続する際の文字列として
以下のものを使用している(excel vbaからだけど)
*印のところは適示そちらの環境に合わせて
DB_CnString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& " SERVER = ********;" _
& " DATABASE = ******;" _
& " UID = *******;" _
& " password = ******;" _
& " STMT=SET CHARACTER SET cp932;" _ ←ここ
& " OPTION =3 "
これ以上は俺には知識は無いんで他の方にお願いしてくれw
0780NAME IS NULL
2009/09/16(水) 13:57:11ID:WDq6aOQrNAMAZUでもいいんじゃね?
mknamazuのタイミングが問題だが
0781NAME IS NULL
2009/09/16(水) 19:05:40ID:???mysqlコマンドラインを知らないのか?
だったら、それを調べることから。
あるいは、MySQL GUI Toolsを使え。
初心者みたいだし、超おすすめ。
0782767
2009/09/17(木) 03:17:34ID:???おおお、解説ありがとうございます。
まさにおっしゃる通り、カラムがないとかデータ型がおかしいとか
そういうエラーがmysqlの機能として出力されるのかと思ってました
>クライアントアプリ側でトラップ
やってみます、ほんとにありがとう!
0783NAME IS NULL
2009/09/17(木) 14:10:45ID:9P/or61pMySQLをインストールしようと思い、mysql-5.1.38-linux-i68-glibc23.tar.gzを /usr/local に展開しました。
cd mysql-5.1.38-linux-i68-glibc23
./configure --以下オプション…
上記のコマンドを入力しても、bash: ./configure: そのようなファイルやディレクトリはありません、となります。
ディレクトリに./configureファイルがあったと思うのですが、どこにいってしまったのでしょうか。
0784NAME IS NULL
2009/09/17(木) 14:28:41ID:???( concat( column1 , column2 , column3) like '%word1%' )
複数カラムのいづれかに指定文字がある検索をしたいのですが
上記の記述では いづれかにNULL があると対応できません
NULLがあっても検索にヒットするようには
どのような記述にすれば良いでしょうか?
よろしくお願いします
0785NAME IS NULL
2009/09/17(木) 16:17:54ID:???where c1 like '%word%' or c2 like '%word%' or ...
と、or でつなげちゃダメ?
0786NAME IS NULL
2009/09/17(木) 16:32:16ID:???バイナリ版をダウンロードしてなんでビルドしようとしてるの?
0787NAME IS NULL
2009/09/17(木) 17:46:07ID:9P/or61pあれこれじゃないですか?どれをダウンロードすればいいでしょうか。
0788NAME IS NULL
2009/09/17(木) 18:49:06ID:???mysql-5.1.38.tar.gz
0789NAME IS NULL
2009/09/17(木) 19:26:55ID:9P/or61p有り難うございます(T_T)あなたのイエス様のような導きで救われました。
0790NAME IS NULL
2009/09/17(木) 23:28:56ID:???バイナリ版をそのまま使うのが吉
0791NAME IS NULL
2009/09/18(金) 16:36:46ID:???まだβ品質みたいですが、そろそろ使い物になってくるかな。
0792NAME IS NULL
2009/09/18(金) 21:17:45ID:???text型の使い道って今でもあるのでしょうか?
長文テキストはvarcharに、でっかいバイナリデータならblobに入れれば済んでしまいそうです。
単純に65535文字以上のテキストを格納する場合にのみtext型を使うのですか?
それとも文字制限以外にvarcharでは不都合なケースというのがあるのでしょうか?
0793NAME IS NULL
2009/09/18(金) 22:36:01ID:???0794NAME IS NULL
2009/09/18(金) 23:52:52ID:???textは文字列をそのまんま格納
varcharは余分な空白を削除する
textfieldに対応するカラムはtextにしときゃいい
0795NAME IS NULL
2009/09/19(土) 15:58:46ID:???0796NAME IS NULL
2009/09/19(土) 21:50:02ID:???「改行がある」と「改行を使う必要がある」は全く違う意味だろ
お前さんの言うやり方で、どうやって改行のある長文を復元できるわけ?
0797NAME IS NULL
2009/09/19(土) 22:02:18ID:???0798NAME IS NULL
2009/09/20(日) 09:48:20ID:???テーブルのデータをdeleteしてからmysqlを再起動すると
同じ値が再利用されるってのを最近知った
0799NAME IS NULL
2009/09/20(日) 19:32:06ID:DbTnU+4kmysql> CREATE DATABASE transcript_production;
と入力したところ、
ERROR 1006 (HY000): Can't create database 'transcript_production' (errno: 2)
というエラーが発生します。データベースが作成できないのは何故でしょうか?
0800NAME IS NULL
2009/09/20(日) 20:38:48ID:K6cwfdto0801NAME IS NULL
2009/09/20(日) 20:43:14ID:K6cwfdto0802NAME IS NULL
2009/09/21(月) 01:48:42ID:ki/ZQtAj0803NAME IS NULL
2009/09/22(火) 09:24:58ID:pzId1jk0NULLを許可したフィールドにNULLを入れるのと
データを入れるのとでは使用するサイズに違いはありませんよね?
(実際やってみても同じサイズでした)
これをNULLだとほとんどサイズを使用させたくないのですが可能でしょうか?
0804NAME IS NULL
2009/09/22(火) 14:57:30ID:???固定長だと無理じゃない?
別テーブルにして、inner join したら?
0805NAME IS NULL
2009/09/22(火) 17:08:39ID:E7b8KwR3>
>どうやら比較的単 純な換字暗号らしい(そうではないかも)。
>解読の結果はある電話番号で、解読に成功すればそこに自 分の名前やメールアドレスなど連絡先を残すことができるという仕掛けだ。
>
>http://jp.techcrunch.com/archives/20090921google-is-searching-for-beautiful-minds-but-so-far-no-m-i-t-students-have-broken-its-code/
>暗号
>http://cache0.techcrunch.com/wp-content/uploads/2009/09/Googel-job-code.jpg
MySQL使うらしいぞ
>1.初歩的に重複しない文字列を抜き出す
>2.おもむろにMySQLを立ち上げる
>
>解のヒント
>↓
>@UNHEX関数を使ったAES暗号複合
>AWGS84座標系、ユニバーサルメルカトル図法
誰かやってくれ!!
0806803
2009/09/22(火) 17:25:08ID:???値以外にNULLかどうかの区別が付いてるんでもしかしたら出来るのかな? とは思ったんですが…
別テーブルからinner joinすることにします。ありがとうございました
0807NAME IS NULL
2009/09/22(火) 17:53:02ID:???0808NAME IS NULL
2009/09/22(火) 23:53:58ID:ATIBidir0809NAME IS NULL
2009/09/23(水) 00:08:10ID:???datetime使ったほうがいいとおもうぞ。
addtime()とか時間処理関数使えるし
0810NAME IS NULL
2009/09/24(木) 23:13:44ID:43eZZEHL0811NAME IS NULL
2009/09/25(金) 14:08:44ID:???聞いちゃいないがSETはcheckboxの値を収める時なんかには使う
0812NAME IS NULL
2009/09/25(金) 18:49:20ID:???>ENUM
フツーに使う。
クエリの結果を生で見たときにちょっと
わかりやすいから。
ヘビーな用途じゃなきゃ問題ないだろ。
0813NAME IS NULL
2009/09/25(金) 18:52:52ID:???いんじゃね。
ちなみに、オレはほとんどそうする。
ファイルのタイムスタンプを多用する
都合にあわせてるからなんだけど。
0814NAME IS NULL
2009/09/26(土) 05:48:22ID:???http://docs.google.com/gview?a=v&q=cache:C-Tl5DCz3XsJ:www.percona.com/files//presentations/OSCON2008-Wonderful-World-of%2520MySQL-Storage-Engines.pdf+MyISAM+Innodb+Falcon+Maria+PBXT&hl=en
0815NAME IS NULL
2009/09/27(日) 14:04:02ID:nuIWLu+4desc name や show create table nameの結果が全部出力されるような感じを考えています。
desc *; や show create table *; という感じで出来るといいのですがそういう方法はありますでしょうか?
0816NAME IS NULL
2009/09/27(日) 14:07:13ID:???show tables;
じゃだめなの?
0817NAME IS NULL
2009/09/27(日) 16:50:23ID:nuIWLu+40818NAME IS NULL
2009/09/27(日) 18:27:56ID:???説明たりねーよ。ボケ
mysqldumpコマンドくらい知らねーのか!
0819NAME IS NULL
2009/09/27(日) 19:55:25ID:nuIWLu+4イメージとしては、そのデータベースにある全tableの
desc name や show create table nameの結果が全部出力されるような感じを考えています。
0820NAME IS NULL
2009/09/28(月) 03:52:05ID:???0821NAME IS NULL
2009/09/28(月) 13:08:10ID:???つ information_schemaデータベース
0822NAME IS NULL
2009/09/29(火) 12:50:09ID:ko2ZqKaeMySQL5.1で、異なるDBサーバにあるテーブルの結合(join)をすることが出来るでしょうか。
■構成
MySQL5.1をインストールしたDBサーバが2台あり、それぞれ別のテーブルが入っている
(レプリケーションしているわけではなく、別の種類のデータが入っている)
■要件
両サーバにあるテーブルを結合(join)したい。
db1のtable1と、db2のtable2を結合したいということです。結合に用いるカラムは存在
します。
table1のデータとtable2のデータを別々に取得し、プログラムを用いて照会するという
方法もありますが、出来るだけDBへ発行するSQLの本数を少なくしたいというのがクライ
アントさんのご要望で、現在つまずいています。何かわかりましたらお教えください。
宜しくお願いします!
0823NAME IS NULL
2009/09/29(火) 17:27:48ID:???案2 spider storage engine
0824NAME IS NULL
2009/09/29(火) 18:00:25ID:ko2ZqKaeありがとうございます。案1でいけそうですね。
0825NAME IS NULL
2009/09/30(水) 15:42:42ID:???mysqladmin shutdownをすると、リレーログの内容はすべて反映されてから
mysqldが落とされるのでしょうか?
何がいいたいかというと、mysqldが落ちた状態の時は、リレーログや
リレーログインデックスは削除したいのです。
MySQLを実行しているホスト名を変えたいのですが、現状は
リレーログファイル名にホスト名がついてしまっているので、
ホスト名を変更した後、リレーログとリレーログインデックスを
削除してからmysqldを上げようと考えているのですが・・・。
0826825
2009/09/30(水) 15:43:47ID:???o mysqldが落ちた状態の時に、
0827NAME IS NULL
2009/10/01(木) 15:40:00ID:Y2Zf4H+pま、どっちにしても
ホスト名かえるならマスターとスレーブ両方ともstopしなきゃならんだろ。
権限テーブルだって見直ししないとならんし。
だったら、マスターから落として、スレーブにマスターの最終更新が反映されたことを確認してから
スレーブも落とせば問題ないんじゃないの
どっちかを稼働させたまま作業するなんてばかなことはやめたほうがいい。
問題はレプリケーションだけじゃないから。
上にかいたが権限とか、MySQLはホスト名依存の汚い部分があるから。
0828NAME IS NULL
2009/10/02(金) 20:58:04ID:???0829NAME IS NULL
2009/10/06(火) 10:35:34ID:???0830NAME IS NULL
2009/10/06(火) 12:57:28ID:???0831NAME IS NULL
2009/10/10(土) 23:44:04ID:???CustId ---char(8)
挿入時に、ID に 0を付けた値をCustIdに入れられますか?
たとえば、ID=1 であれば、CustId=00000001 みたいに
以下はトリガは作成できても、アプリから実行するとエラーになります。
create TRIGGER generateCustId after insert on customer for each row
begin
set @custid = CONCAT(Left("00000000",8-Length(new.ID)),new.ID);
update customer set CustID=@custid where ID = new.ID ;
end
0832NAME IS NULL
2009/10/11(日) 12:52:43ID:I0TScHXPたまに"MySQL server has gone away"と出てきて
MySQLとの接続が切断されるばかりか
一度exitしてもう一度接続しようとすると
パスワードを打った瞬間に
MySQL Command Line Promptの窓が閉じます。
ですから、毎回コンピューターを再起動しなければなりません。
原因は(不適切にデータベースにアクセスした、など)複数あるみたいなので
その追求は後でするとしまして、
"MySQL server has gone away"が出た後でも
コンピューターを再起動せずにMySQLを起動できる方法を教えてください。
何かリセットのコマンドはありませんか?
0833NAME IS NULL
2009/10/11(日) 15:05:30ID:???再起動してるコンピュータはサーバ側でいいんだよね。
ヒント: /etc/init.d/
0834832
2009/10/11(日) 18:38:45ID:I0TScHXPはい、サーバー側でいいんですが
Windows Vistaなのでそのヒントでは
どこをいじればいいのか分かりません。
具体的にどこをどうするのか教えてください。
0835NAME IS NULL
2009/10/11(日) 18:43:55ID:???サービスの再起動したらいい
0836832
2009/10/11(日) 19:00:54ID:I0TScHXPそれなら既にやっています。
Apache2.2が起動している状態から
→停止→再起動
としても正常に起動されないので質問しているんです。
スタートメニューからApacheのstartとstop、
そして、Administrative Toolsでstartとstopと直接やっても起動されません。
他の方法はありませんか?
0837NAME IS NULL
2009/10/11(日) 19:11:22ID:???どっからapacheが。。
いや、えー
だから、MySQLもapacheのようにサービスを再起動したらいいと言っている
0838NAME IS NULL
2009/10/11(日) 19:52:27ID:???net start mysql
net stop mysql
あるいは管理ツールのサービスからMySQLを選んで
起動させる
0839NAME IS NULL
2009/10/11(日) 19:55:54ID:???とか、返ってきそうで怖い
0840NAME IS NULL
2009/10/13(火) 08:51:57ID:???アッー サービスにmysqlあったんだ!って感じなんじゃねの?
0841832
2009/10/13(火) 12:11:35ID:KasnJFahいやいや、
net start mysql
net stop mysql
は知りませんでしたが、
「管理ツールのサービスからMySQLを選んで起動させる」は既にやってます。
それで出来ないから質問してるんですが。
0842NAME IS NULL
2009/10/13(火) 13:10:00ID:???後出乙。832からはexitコマンドとPC再起動しか読み取れない。なにが「ですが」だよ。
0843NAME IS NULL
2009/10/13(火) 13:18:44ID:???>>840が親切にサービスからの事を書いたら
>>841の返答かよ
勝手に悩んでろ
0844NAME IS NULL
2009/10/13(火) 15:56:22ID:???0846NAME IS NULL
2009/10/14(水) 08:25:48ID:lFiZMz2+「全部|A-Z|あ|か|さ|た|な|は|ま|や|ら|わ」で、「あ」を押した時には
相田、青山、飯山、井村、織田 って感じでア行に所属する名前を表示をしたいと思います。
この場合、where以下の検索条件はどうしたらいいでしょうか?
パラメータは「key=あ」がセットされるものとします。
where `name` like '{$key}%' で考えたけどこれは平仮名指定だし、無理でしょうか?
centOS5.3、Mysql5、PHP5で動かしています
0847NAME IS NULL
2009/10/14(水) 09:54:27ID:???振り仮名のカラムを作れよ
0848NAME IS NULL
2009/10/14(水) 22:46:34ID:???そうですね。気がつかなかった、ありがとうございました
0849NAME IS NULL
2009/10/14(水) 23:52:17ID:0LwxIgqj会社のイントラネットでドキュメントなどのデータベースに利用したいのですが
これはライセンス的にOKでしょうか?
0850NAME IS NULL
2009/10/15(木) 01:13:30ID:???何を心配しているのか分からん
0851NAME IS NULL
2009/10/16(金) 15:00:58ID:???外部スクリプト(PHPかBASHスクリプトを検討)を呼び出したいと思います。
外部スクリプト側で一定間隔で監視対象のテーブルを
SELECT COUNT(*) FROM hoge WHERE ...することを
検討してましたが、数秒以内のレスポンスを要求されているため、
この方法でやるのは効率が悪いと考えています。
そのため別の方法を検討しています。
トリガからストアドを呼び出せそうなことはわかりましたが、
ストアドから外部スクリプトをコールすることは出来ますか?
MySQLのVersionは5.0を利用しています。
0852NAME IS NULL
2009/10/16(金) 20:55:01ID:???トリガーで監視対象テーブル更新で更新状態フラグテーブルのフラグを更新して、
その更新フラグテーブルをselectしたら1秒もかからないんじゃないのかな?
0853NAME IS NULL
2009/10/16(金) 23:45:25ID:???0854NAME IS NULL
2009/10/17(土) 18:11:07ID:???SSHのような、パスワード認証で、
通信だけ暗号化したいんだが、mysqlでできますかね?
よろしくお願いします。
0855NAME IS NULL
2009/10/17(土) 20:55:31ID:???暗号化はmysqlの担当じゃないな。
VPNとかで暗号化した通信経路を作って
その上にmysqlの通信を通すのがJK
0856NAME IS NULL
2009/10/17(土) 22:41:14ID:???俺の質問の仕方が悪かった。ごめん。
mysqlで5.x?だと、SSLと連携するようなんですが、
クライアントアプリの全部に、認証鍵とか埋め込むのが、
面倒なんで、通信だけ暗号化できないのかと。。。。
よろしくです。
0857NAME IS NULL
2009/10/19(月) 22:21:05ID:???そして結局は、そのラッパーを通すためにクライアントアプリを変更する羽目に
0858NAME IS NULL
2009/10/20(火) 11:25:20ID:???開発者以外がクライアント使うなんて想像できないんだが
オペレータがSQL使うの?
開発時点で暗号化なんて、それどんなapple?
SQLクライアントは禁止にして、
Webアプリ化、暗号化はhttpsに任せるがJK
0859NAME IS NULL
2009/10/20(火) 11:25:29ID:???show statusで人生相談に表示するCom_系の値って基本的に加算されてゆくと思うのですが、
計測しているとあるタイミングで減少しているようです。
特にflush statusは実行してないのですがmysqld側でリフレッシュをかけているのでしょうか?
また、もしかけているなのなら実行時間のログなどはありますでしょうか?
0860NAME IS NULL
2009/10/20(火) 11:28:23ID:???> 人生相談
kwsk
0861859
2009/10/20(火) 11:29:38ID:???× show statusで人生相談に表示する
◯ show statusで表示する
コピペミスです
読みにくくてすみません
0862NAME IS NULL
2009/10/20(火) 15:03:48ID:???何をコピペミスしたのかkwsk。
0863NAME IS NULL
2009/10/20(火) 16:13:02ID:???0864NAME IS NULL
2009/10/20(火) 17:04:49ID:???やばい
0865NAME IS NULL
2009/10/20(火) 18:42:54ID:???ERROR 1064 : 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 '俺の人生' at line 1
0866NAME IS NULL
2009/10/20(火) 19:10:10ID:???0867NAME IS NULL
2009/10/20(火) 23:50:08ID:???レスサンクスです。
最終的に、各PCに常駐アプリいれる予定として、アプリの種類は、
資産管理ツール+ロギングの分類です。HTTPSのPOSTメソッドで、
データベースへの最低限の編集、変更などは、PHP記述で
なんとかなったので、後は、直接アプリからSQLサーバーへ
コネクトして、監査結果やらロギングを行いたいと思いまして、
アプリの開発は、mysql_ssl_set()とか使えば、なんとかなりそうなんですが、
暗号鍵のペア準備が面倒だったので、認証だけは、従来のパスワード認証で接続し、
通信だけ、暗号化したい思いまして。。。どうなんでしょうか?
0868NAME IS NULL
2009/10/21(水) 01:16:33ID:???0869NAME IS NULL
2009/10/21(水) 01:38:51ID:???そういう用件だとして置いといて
クライアント側で認証鍵とかmysql_ssl_setとか使うなら、まずクライアント側でopensslが利用できないと
いけないけどその機能をクライアント側は有してるんでしょうか?
そもそもopensslがクライアント側に入ってなければ各クライアント全部にopenssl入れないといけないだろうし
使うにしてもCAファイルはクライアント側で必要みたいだし
VPNが一番楽だと思うけど
0870NAME IS NULL
2009/10/21(水) 01:54:26ID:???まるほど。SQLインジェクション、PHPもろでした。ーー;
事前にqueryして、文字列を比較すれば良いのかな。ああ、しんど、
0871NAME IS NULL
2009/10/21(水) 02:19:20ID:???レスさんくすです。mysql_ssl_set()
SSHのPermitパスワードAUTHっぽい動作ができるかの確認で、
mysql_ssl_set()を全部NULL指定で、該当ユーザーのGRANTに、
REQUIRE SSLを指定したけど弾かれました。なにかしら、
クライアント側で鍵を用意しないとダメかもしれません。
>>クライアント側で認証鍵とかmysql_ssl_setとか使うなら、
>>まずクライアント側でopensslが利用できないと
>>いけないけどその機能をクライアント側は有してるんでしょうか?
将来へ向けてのトライアル試験なので、
VSではコンパイルしないので、しばらくは大丈夫。
>使うにしてもCAファイルはクライアント側で必要みたいだし
>VPNが一番楽だと思うけど
VPNってのがピンとこないのですが、ローカルのクライアントポートに、
SSHのリダイレクトポートを設ける奴でしょうか?。ポートFWで、
持ち出しPCとかで流行っていますが・・・それでもいいかな。
SSHコマンドのトンネル方式か、それともSSL埋め込みか。
0872NAME IS NULL
2009/10/21(水) 02:36:55ID:???>http://dev.mysql.com/doc/refman/5.1/ja/secure-connections.html
0873NAME IS NULL
2009/10/21(水) 10:26:23ID:???stunnel辺り使うのが1番楽な気がするけど。
0874NAME IS NULL
2009/10/21(水) 11:53:51ID:???0875NAME IS NULL
2009/10/21(水) 17:01:24ID:???いやPHPの話じゃなくて、アプリから直接SQLサーバにつなぐんだろ?
てことは当然、コマンド送り放題なわけだから何でも出来てしまう。
で、>>858に帰結すると思うんだが。
編集にPOSTを使っておいて、なんで閲覧にGETを使わないの?
0876NAME IS NULL
2009/10/22(木) 00:03:37ID:???>いやPHPの話じゃなくてアプリから直接SQLサーバにつなぐんだろ?
アプリ自身に、単純にパスワードを埋め込む方法だと、
通信が暗号化されても、配布しているバイナリーを解析されたら、
該当パスワードは容易に抽出できてしまうかもしれない。
結局アプリ側でなんでもできてしまう。ふむふむ。
パスワード方式は、限界で、クライアント側の公開キーを生成して、
サーバー側へ設定するしかないのか。キーはインストール時に、
自動生成して、システム管理へ投げるようにしてもらうか。
>編集にPOSTを使っておいてなんで閲覧にGETを使わないの?
GETもPOSTもPHP側の受処理としてはほぼ同じっすよね?
強い理由があってPOST閲覧している訳ではないです。
>>872、873
いろいろ情報サンクスです。アプリに埋め込むパスワード方式は
限界っぽいので、もうmysqlのSSLでやって見ようと思います。
まだシビアな情報を扱うDBにはなっていないのでいずれ。
0877NAME IS NULL
2009/10/22(木) 00:59:56ID:???ある程度独自のシード使って
ていうかバイナリー解析されたらとか心配してたら何も出来ないよ
ちょっといろいろ心配しすぎ
0878NAME IS NULL
2009/10/22(木) 01:03:12ID:???0879NAME IS NULL
2009/10/22(木) 11:00:37ID:???countを使うと、group毎にcountしてしまうので。。
0880NAME IS NULL
2009/10/22(木) 11:27:12ID:???select count(*) from (select -中略- group by aa) as c
で大丈夫でした。
スレ汚し申し訳ないです。
0881NAME IS NULL
2009/10/22(木) 18:09:06ID:Gyb9EKM2http://journal.mycom.co.jp/news/2009/10/22/018/index.html
だとさ
しかし今さらMySQLだけ買おうって会社なんかあるんかね
つぶれそうなところをSunに拾ってもらったんだろ
0882NAME IS NULL
2009/10/22(木) 18:38:00ID:???ラリーがIBMに売るわけがない
0883NAME IS NULL
2009/10/22(木) 19:44:52ID:???有料化されちゃうの?
0884NAME IS NULL
2009/10/22(木) 21:37:23ID:???IBMはDB2あるからあんま意味無いんじゃ。
こういう話で国内企業が名前だけでもでて来ないのはちょっと寂しい。
0885NAME IS NULL
2009/10/22(木) 21:51:38ID:???ま、IBMもMySQLはいだんだろうが
米国勢で買えそうな資金があるのはGoogleとYahooとMSくらいか
Googleは社内で大量に使ってるからおかしな会社に売られるくらいなら買うかもしれないが、
Google社内にMySQLのエキスパートがたくさんいるからいまさらどうなっても痛くもかゆくもないだろ
5.4なんてもろにGoogleパッチでできてるようなもんだろうしな
一番の理由になりそうなのはGoogleがソフトウエア売買ビジネスをやるはずもないってことだろうな
Yahooもソフトウエア販売はやらんだろう
MSはどうかね。MSが買う気になるとは思えんが、万が一そう思ってもOracleが売らないだろう。
となると、買うとしたらヨーロッパのソフト会社かね
日本では知られていないが資金力のあるところはあるんだろう
SAPとかは有名だが
日本国内だと楽天が手をあげる可能性はあるかも。
一気に世界企業の仲間入りできそうじゃん
三木谷好きそうじゃん
0886NAME IS NULL
2009/10/22(木) 22:11:18ID:???selectした結果がnullの時はポイントとかついてくれたら嬉しい w
0887NAME IS NULL
2009/10/22(木) 22:26:40ID:???0888NAME IS NULL
2009/10/23(金) 04:19:53ID:???0889NAME IS NULL
2009/10/23(金) 04:44:16ID:???もしかして select count(distinct aa) from tbl
0890NAME IS NULL
2009/10/23(金) 13:51:53ID:???その暁にはTTreeと呼べや
0891NAME IS NULL
2009/10/24(土) 08:21:52ID:???TTreeって、ROOT(http://root.cern.ch)思い出すな。
0892NAME IS NULL
2009/10/26(月) 16:26:55ID:???text型は、MySQLコマンドブックでは最大長65535バイトとありますが、
可変長と考えてよろしいのですか?
0893NAME IS NULL
2009/10/26(月) 16:28:39ID:???可変長
ところで、innodb プラグイン試してみた?
0894892
2009/10/26(月) 17:04:27ID:???ありがとうです。
プラグインというのは初めて知りました w
ぐぐって見たら .38からとの事。今5.1系列では40が最新だから使って見ても大丈夫そうな? w
調べてみます。
0895NAME IS NULL
2009/10/27(火) 18:22:45ID:b3uBGirQこれで面倒な管理をやらないで済むようになると思いきや
http://blog.masuidrive.jp/index.php/2009/10/27/amazon-released-rds/
ここ見ると落ちてたらしい
落ちたらあかんがな!!
0896NAME IS NULL
2009/10/27(火) 18:43:53ID:sUuPMg09myiで運用しながらのコピーだとロックがかかるし時間もかかるし
0897NAME IS NULL
2009/10/27(火) 19:12:02ID:uR+M8xJO結局のところ生のmysqlだから
コネクションが足りなくなったりすることもあると思うんだけど
0898NAME IS NULL
2009/10/27(火) 19:24:24ID:PGbJvuUVデフォルトのDBエンジンはInnoDBだが、ほかのエンジンも利用できる。
スキーマ設計、インデックス作成、パフォーマンスチューニングなども可能で、
使い勝手はネイティブのMySQLと大きく違わないという。
結局チューニングは自分でしないといけないのか
面倒くささあんまり変わらないじゃないか
0899NAME IS NULL
2009/10/28(水) 03:25:32ID:AvOezp4B質問なのですが、
テーブルで使われているデータを調べて、最適な型を教えてくれるコマンドがあったはずなのですが、どのサイトを調べても出てこないので教えてください。
例えば、BIGINTで宣言されたカラムに、INT以下のデータしか入ってなく、NULLが無い場合、INT UNSIGNED NOT NULLと出たり、
CHAR(10)にもし"YES"と"NO"しか入ってない場合は確かENUM("YES","NO")が出力されました。
探し方が悪いのか、ずいぶん検索したのですが結局出てきませんでした。
よろしくお願いします。
0900NAME IS NULL
2009/10/28(水) 07:26:33ID:???delete from data where id is not in ( select id from list );
のように、別のリストのidに含まれない物を消そうとすると、
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
となってしまいます。
noo in (サブクエリ) の構文を最適化して書き直せませんでしょうか?
0901NAME IS NULL
2009/10/28(水) 08:05:57ID:???dataテーブルのレコード数だけlistテーブルのフルスキャンが走る
delete from data where not exists
(select 1 from list where list.id = data.id)
0902NAME IS NULL
2009/10/28(水) 09:38:52ID:???ありがとうございます。
魔法のようなクエリですね。
0903NAME IS NULL
2009/10/28(水) 23:04:24ID:???サブクエリを使わずに、
delete data from data left join list on data.id=list.id where list.id is null
という方法もある。
0904NAME IS NULL
2009/10/29(木) 11:15:10ID:???ライセンスについてなんか論議されている。
taka2って言うのが一人だけやたら斜め上からで変な持論展開
0905NAME IS NULL
2009/10/29(木) 11:25:31ID:???ありがとうございます。
手持ちの環境では効率に差がないようですが、
サブクエリよりは、left join のほうが一般的におすすめでしょうか?
0906NAME IS NULL
2009/10/31(土) 09:22:36ID:o/Jls4e4漢字コードは何にした方が、実務上問題が少ないのでしょうか?
よろしくお願いします。
0907NAME IS NULL
2009/10/31(土) 09:56:12ID:???utf8じゃだめなの?
0908NAME IS NULL
2009/10/31(土) 10:23:52ID:???ajax使うのにらくだからと思ってサイトもDBも全部utf8にしちゃったけど、今後なにか不都合とかデメリットとかってあるでしょうか?
0909NAME IS NULL
2009/10/31(土) 13:32:02ID:???入口から出口までutf8で通すのが一番楽だと思うけど、
古い携帯とかサポートしたいのかな?
0910906
2009/10/31(土) 16:04:30ID:o/Jls4e4レスありがとうございます。
日本MySQLユーザ会のホームページで、
「utf8 はご存じの通り、到底整理されているコードとは言い難く」って
書かれていましたので、質問させて頂きました。
>>909
「入口から出口まで」のutf8の指定場所は、
HTMLの「<meta 〜 charset=」と、
ソースエディタの漢字コード指定と
MySQLでの指定で、全てなのでしょうか?
よろしくお願いします。
0911NAME IS NULL
2009/10/31(土) 16:07:59ID:???最近のブラウザや携帯電話では問題ないよ。
IE6とか、古い携帯電話だと機種によってはutf8が甘いのもあるけど、
とりあえずは無視しても良いと思う。
utf8は根強い反対派も居るけど、俺は歓迎してるよ。
(確かに問題も含んでいるのは確かだけど。)
全部utf8で統一すれば、変換テーブル問題もないし。
ただ、適所で正規化が必要かも。そこは面倒だね。
0912910
2009/11/02(月) 20:07:03ID:cL+4Y1kFレスありがとうございます
「正規化が必要」とは、どういうことでしょうか?
0913NAME IS NULL
2009/11/02(月) 21:45:30ID:???auto_incrementに関する質問です。あれは番号を削除した場合つめる事が出来ないですよね。皆さん
どの様にされてます?独自の連番システムを作ってるとかですか?
現在作っているのはPKとしてのみ使い、それを使って検索するとか表示するとかする予定は無いのですけど。
0914NAME IS NULL
2009/11/02(月) 22:11:11ID:???どのようにしているもなにも、番号をつめる必要を感じない
0915NAME IS NULL
2009/11/02(月) 22:49:21ID:???まァそう言えばそうなんですが w
では、逆に(削除が有った時に)詰める必要があるとしたらどうすれば良いと思います?
0916NAME IS NULL
2009/11/03(火) 00:26:04ID:???ひょっとして、正規化って概念すら知らんのか?
>>915
別のカラム作れ
0917NAME IS NULL
2009/11/03(火) 01:56:54ID:???unicodeが嫌われる理由の一つが、その正規化なんですよね。
Macの「〜」とか。
まぁ、調べてみてくれ。
0918912
2009/11/03(火) 07:55:58ID:zLDyRTuEレスありがとうございます。
「正規化」という言葉の意味ではなく、
「何」を正規化しなければいけないのか?
という質問です。
よろしくお願いします。
0919NAME IS NULL
2009/11/03(火) 09:07:23ID:???何って、unicodeの話してるんじゃないのか?
0920NAME IS NULL
2009/11/03(火) 09:55:34ID:???0921NAME IS NULL
2009/11/03(火) 21:16:26ID:???正規化必須ってわけじゃないからなぁ。
0922NAME IS NULL
2009/11/04(水) 04:35:48ID:???たくさん(といっても10クエリ/秒)来ているとき、
ほとんどの場合で良好にさばいてくれるのですが、
あるとき、(たぶんupdate)処理がスタックして、
そのテーブルが絡むselect等も一斉に止まり、
timeoutして再び動き出すことがあります。
止まっている間、dead-lock が生じているわけでもなく
CPUやI/Oもidle状態で、なぜ止まっているのか分かりません。
試しにMyISAMにしてみると、そのロックはおきませんでした。
なので外部キー制約かと思って、InnoDBに戻して外部キー設定を外してみたのですが、
やはり同じようにロックが生じてしまいます。
ちょっとこれだけの情報で何を質問しているんだと怒られそうですが、
具体的に何がロックしているのかも分からないので、どうしたものかわかりません。
InnoDBに特有の有名な注意点があったりするのでしょうか。
抽象的な質問ですみません。
0923912
2009/11/04(水) 07:35:59ID:aSZSVXtb正規化の意味は分かりました。
再質問ですが、
正規化しなければいけないのに、なぜutf8が良いのでしょうか?
(SJISだと、どういう欠点があるのでしょうか)
0924NAME IS NULL
2009/11/04(水) 10:14:16ID:???0925NAME IS NULL
2009/11/04(水) 12:27:01ID:???0926NAME IS NULL
2009/11/04(水) 14:36:44ID:???使う予定のアプリや文字が、全部sjis前提なら、何も問題ない。
でも、そんなことあるか?
0927NAME IS NULL
2009/11/04(水) 14:51:59ID:???途中Unicodeになると、変換再変換が面倒くさい。
0x5c,0xa5みたいなのとか。
0928923=912
2009/11/04(水) 16:43:22ID:aSZSVXtbレスありがとうございます
0929NAME IS NULL
2009/11/04(水) 22:21:36ID:gnz0MBuh| 日時 | 人(id) |入・出 | 時間 |
+----------+---------+-------+----+
| 20061002 | 222627 | b | 13:26:47 |
| 20061002 | 222627 | c | 13:36:14 |
| 20061002 | 585717 | b | 13:36:41 |
| 20061002 | 585717 | c | 13:37:26 |
| 20061002 | 1142463 | b | 13:38:01 |
| 20061002 | 1142463 | c | 13:40:50 |
| 20061002 | 402399 | b | 13:40:58 |
| 20061002 | 402399 | c | 13:44:24 |
↑は,銀行の窓口のテーブルです。
bが人が入ってきた時間で,cが出ていった時間とします。
そこで,人が窓口にいない遊休時間の平均を算出したいのですが,
どのようにしたらよいのでしょうか?
MySQLは5.0です。
0930NAME IS NULL
2009/11/04(水) 23:54:54ID:???0931929
2009/11/04(水) 23:58:22ID:gnz0MBuhレスありがとうございます。
テーブルは他人が作ったもので、私が遊休時間の平均を算出するように頼まれました。
例えばどういうテーブルが良いでしょうか?
0932NAME IS NULL
2009/11/05(木) 10:33:43ID:???プログラムでゴリゴリ書くしか思いつかんなあ
int number = 0;
boolean idle = false;
long begin = 0L;
long end = 0L;
rs = conn.executeQuery("select ... from ... order by 時間");
while (rs.next()) {
if (rs.getString(3).equals("b")) {
number++;
} else if (rs.getString(3).equals("c")) {
number--;
} else {
throw ...
}
if (number == 0) {
begin = rs.getTimestamp(4).getTime();
idle = true;
} else if (idle == true) {
end = rs.getTimestamp(4).getTime();
idleList.add(end - begin);
idle = false;
}
}
0933NAME IS NULL
2009/11/05(木) 12:07:22ID:???素直に集計スクリプト書いたら?
0934NAME IS NULL
2009/11/05(木) 13:16:28ID:???SELECT AVG(diff) FROM (
SELECT IF(
COUNT(IF(c2.入・出 = 'b', 1, NULL)) = COUNT(IF(c2.入・出 = 'c', 1, NULL)),
TIME_TO_SEC(TIMEDIFF(c1.時間, MAX(c2.時間))),
NULL
) AS diff
FROM 窓口 c1, 窓口 c2
WHERE c1.入・出 = 'b' AND c1.時間 > c2.時間
GROUP BY c1.id
) diffs;
0935NAME IS NULL
2009/11/05(木) 13:38:27ID:???ent_date varchar2(8)
,guest_id varchar2(6)
,ent_type varchar2(1)
,ent_time date
);
create table time_table ( t_time varchar2(4) );
0936NAME IS NULL
2009/11/05(木) 13:41:04ID:???select str_h || m2.str_m2 || m1.str_m1 -- as t_time
from (
select str_h2 || str_h1 as str_h
from
( select '0' as str_h2 from dual
union all select '1' as str_h2 from dual
union all select '2' as str_h2 from dual ) h2
,( select '0' as str_h1 from dual
union all select '1' as str_h1 from dual
union all select '2' as str_h1 from dual
union all select '3' as str_h1 from dual
union all select '4' as str_h1 from dual
union all select '5' as str_h1 from dual
union all select '6' as str_h1 from dual
union all select '7' as str_h1 from dual
union all select '8' as str_h1 from dual
union all select '9' as str_h1 from dual ) h1
where str_h2 || str_h1 between '00' and '23' ) hh
,( select '0' as str_m2 from dual
union all select '1' as str_m2 from dual
union all select '2' as str_m2 from dual
union all select '3' as str_m2 from dual
union all select '4' as str_m2 from dual
union all select '5' as str_m2 from dual ) m2
,( select '0' as str_m1 from dual
union all select '1' as str_m1 from dual
union all select '2' as str_m1 from dual
union all select '3' as str_m1 from dual
union all select '4' as str_m1 from dual
union all select '5' as str_m1 from dual
union all select '6' as str_m1 from dual
union all select '7' as str_m1 from dual
union all select '8' as str_m1 from dual
union all select '9' as str_m1 from dual ) m1
-- order by t_time
;
0937NAME IS NULL
2009/11/05(木) 13:42:08ID:???100 * ( 1 - sum(excl_flg) / count(*) )
from (select
tt.t_time
,u_io.excl_flg
from time_table tt
left join
(select distinct
1 as excl_flg
,i_time
,o_time
from ( select guest_id ,to_char(ent_time ,'hh24mi') as i_time from hoge where ent_type = 'b' ) u_i
left join ( select guest_id ,to_char(ent_time ,'hh24mi') as o_time from hoge where ent_type = 'c' ) u_o
on u_i.guest_id = u_o.guest_id ) u_io
on tt.t_time between i_time and o_time
);
0938NAME IS NULL
2009/11/05(木) 13:48:24ID:???時間のテーブルを別に用意してやってみた。
・窓口の数
・人の滞在時間の重複
・平均算出の単位
・窓口の開始・終了時間
・処理単位は秒?分?
このあたりも考えないとダメだけど。
あと、構文はOracleです…。
ていうか質疑応答スレじゃないのに良かったのかな。
0939NAME IS NULL
2009/11/06(金) 09:54:48ID:???神クエリを見ることが出来たので、許す。
0940NAME IS NULL
2009/11/06(金) 10:36:52ID:???0941NAME IS NULL
2009/11/06(金) 11:11:52ID:ZUvcKSUf0942NAME IS NULL
2009/11/06(金) 14:20:10ID:???行頭スペースを全角で置き換える気力がなかったの。ごめんね。
つーか、MySQLのスレでOracleSQL書いて褒められるってwww
質問者さんには伝わったかなぁ…あ、ホントに使うなら検証してね!
ノシ
0943NAME IS NULL
2009/11/08(日) 15:54:38ID:???SQLの方言、ちょっと使わないと忘れるよな。
そういえば、sedやawkは忘れないのに、perlは使えなくなるのはなんでだぜ?
0944NAME IS NULL
2009/11/09(月) 13:48:24ID:???今までSQLite使っていました
SQLiteはファイルシステムにデータベースを生成する場合を使って、samples.sqliteというファイルを事前に作り、そこにに書き込んでいました
今MySQLを使っているのですが、MySQLはいったい何処の何にデータベースを書き込んでいるのでしょうか?
MySQLフォルダを見ても何か書き込みようのものが見当たるわけでもありませんし、パスはどこに指定されているのかとか良く分かりません
テーブルとかのデータはいったいどこに格納されているのでしょうか?
0945NAME IS NULL
2009/11/09(月) 14:05:02ID:???/var/lib/mysql/testdb とかの
testtbl.frm
testtbl.MYI
testtbl.MYD
など。
0946NAME IS NULL
2009/11/09(月) 14:21:34ID:???専用機なら良いんだろうけど
0947NAME IS NULL
2009/11/09(月) 14:24:16ID:???すみません、色々再確認してみたのですが、どうもそのようなファイル、フォルダがbin、lib、shareしかなく、見当たりませんで、拡張子も.pdbというのがいくつかあるだけでした
で、my.iniを確認してみたのですが、
#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.1/"
#Path to the database root
datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"
というのが見つかったのですが、このどちらかのパスで指定された場所にあるのでしょうか?
デフォルトのまま使っているのですが、Application Dataというフォルダが自分のには見当たらなくて、結局何処にあるのか分かりませんでしたが
0948947
2009/11/09(月) 14:56:33ID:???0949NAME IS NULL
2009/11/09(月) 15:19:33ID:???0950NAME IS NULL
2009/11/09(月) 16:00:10ID:???0951NAME IS NULL
2009/11/09(月) 16:02:40ID:???0952948
2009/11/09(月) 16:04:41ID:???xcopy コピー元ディレクトリ コピー先ディレクトリ /S /E
コレを使って、C:/Program Files/MySQL/MySQL Server 5.1/の下に自分で作ったdataフォルダの中にコピーを入れました
そしたら自分で作ったデータベースの名前のフォルダが出てました
その上でパスをこのフォルダに変更しました
別に出し惜しみしたわけではありません
悪しからず
0953NAME IS NULL
2009/11/09(月) 23:32:50ID:9hIX4tWWのクエリでid 3 が検索にヒットしてしまうのですが何がおかしいでしょうか?
ちなみにPHP+mysql5です
0954NAME IS NULL
2009/11/10(火) 02:30:18ID:???■Apache 2.2 → http://localhost/のページは表示される。
■MySQL 5.1 → Command line clientからはDBにアクセスできる。
■PHP 5.2.5 → http://localhost/index.php のスクリプトはちゃんと動く。
■phpMyAdmin → rootでパスワードを入力して実行を押すとパスワードのエラーは出ずに
「Internet Explorer ではこのページは表示できません」 となる。
Vista x64 home premiumの時はphpMyAdminもちゃんと動いていたのですが、
Win7proにしてインストールし直した時に何か設定が変わったのか、ブラウザでphpMyAdminのログイン後の表示ができません。
何がわるい?
0955NAME IS NULL
2009/11/10(火) 13:58:34ID:IvLtg11n0)関連するテーブルは次の2つ
1)「メニュー自体のテーブルmenuTable(id, uId, menuName, price, category)」
2)「メニューのカテゴリーのテーブルcategoryTable(id, uId, cate1, cate1_open, cate2, cate2_open, …中略…cate5_open)」
3)2つの関係は、menuTableのcategoryの値は"cate1" または "cate2"が入る。uIdは登録ユーザで両方とも同じ。
この条件のとき、所属するカテゴリーが公開状態(cate1_openもしくはcate2_open(初期値0)が1の場合)のメニューだけ
SELECTしたいと思います。
どういうSQLを書いたら良いでしょうか?
テーブルJOINしてPHPで公開してないアイテムを除外して出力が賢いかと思いましたが、クエリで実現したいです。
よろしくお願いします
0956NAME IS NULL
2009/11/10(火) 14:19:06ID:???select
id
,uid
,menuName
,price
,category
from menuTable mt inner join
( select id ,uid ,cate1 as cate from categoryTable where cate1_open = 1
union select id ,uid ,cate2 from categoryTable where cate2_open = 1 ) ct
on mt.id = ct.id
and mt.uid = ct.cid
and mt.category = ct.cate
order by id
;
全然動かしてないから構文エラー出るかも…。
idはそれぞれのテーブルで関連無いのかな。
不要なら結合条件から外してくだせぇ。
0957NAME IS NULL
2009/11/10(火) 21:17:27ID:???0958NAME IS NULL
2009/11/10(火) 21:18:20ID:???0959955
2009/11/10(火) 22:50:37ID:???ありがとうございます。LEFT JOINしか使ったことがないのでイマイチよくわからないですが、勉強してみます。
もう一つ、漠然とした質問なんですが、よくjoinを使った場合と個々のテーブルに複数回クエリした場合で
必ずしもjoinの方が早くなるわけじゃないと言いますが、何万件以上の規模にならなければ
そんな差は出ないものでしょうか? 数千件程度で遅くなったりしますか?(JOINで)
0960NAME IS NULL
2009/11/11(水) 09:30:46ID:???0961NAME IS NULL
2009/11/12(木) 16:22:19ID:satwQTs/下記のようにstmt1を閉じる前にstmt2を生成すると、最後の行で
"Commands out of sync; you can't run this command now"エラーが
起きてしまいます。
1つのコネクションで複数のクエリを同時に発行したいのですが、どう
実装すれば良いのでしょうか。
MYSQL_STMT *stmt1 = mysql_stmt_init(&mysql);
char *query1 = "select * from foo";
mysql_stmt_prepare(stmt1, query1, strlen(query1));
mysql_stmt_execute(stmt1);
MYSQL_STMT *stmt2 = mysql_stmt_init(&mysql);
char *query2 = "select * from bar";
mysql_stmt_prepare(stmt2, query2, strlen(query2));
0962NAME IS NULL
2009/11/13(金) 00:16:01ID:???mysql_stmt_bind_result() してみるとか。
0963NAME IS NULL
2009/11/13(金) 01:40:11ID:???オラクルのSUN買収でMySQLの行く末があやしい状態なのによお
linuxディストリにMySQLがバンドルされなくなったら面倒だろ?
forkが出てきたとしても、PHPが対応するとも限らんだろ?
どうなっちまうのかねえ〜
0964NAME IS NULL
2009/11/13(金) 01:55:51ID:???0965NAME IS NULL
2009/11/13(金) 06:41:46ID:???意味分からん
0966NAME IS NULL
2009/11/13(金) 07:47:54ID:???0967NAME IS NULL
2009/11/13(金) 11:12:46ID:???0968NAME IS NULL
2009/11/13(金) 14:03:47ID:???UTF-8の4バイト文字対応ぐらいじゃない?
0969NAME IS NULL
2009/11/13(金) 14:51:04ID:???無駄な工数といえる
0970NAME IS NULL
2009/11/14(土) 01:53:42ID:X2Zii3C+でもテーブルの量が多すぎて修正しきれないんだけどいい方法無いですか?
0971NAME IS NULL
2009/11/14(土) 05:28:10ID:???バックアップ取ってこっそりかえてみて、苦情が来なければOKとか…。
そんな変態コード使うとろくな事無いぞ。
0972NAME IS NULL
2009/11/14(土) 11:08:17ID:???mysqldumpで取得したファイルをtestに入れてみようと思い、以下の
コマンドを入れたのですが、
c:\>mysql test < "c:\data.sql" -u root -pxxxxx
ERROR at line 76:Unknown command '\''.
と出てしまいます。念のため同じくmysqldumpで取得している
他のDBを同じコマンドで入れてみたらそちらは正常に入れる事が出来ました。
両方ともDBの中のテーブルはInnodb、キャラクタセットはcp932で作っている
のですけど。
で、mysqldumpで出来たファイルの中身を秀丸(utf-8でエンコードし直し)でみると
らしき所には
'<Sample>\r\n と確かに'\'があります(text型のカラムの所ですけど)。
どうすれば、リストア出来るのでしょうか?
0973NAME IS NULL
2009/11/16(月) 17:06:08ID:izYklsWS1,a
1,b
2,a
3,a
3,b
4,a
これから結果を下記のように取り出すことは出来るのですか?
結果:
1,ab
2,a
3,ab
4,a
0974NAME IS NULL
2009/11/16(月) 17:43:44ID:???0975NAME IS NULL
2009/11/16(月) 18:38:49ID:???select ifnull(max(id),0), count(*) as kensu from data
としているのですけど、ifnullってmysql固有の関数ですよね?
それでこれを標準のcaseを使って書き変えた場合、どのように
書けば良いのでしょうか?
0976NAME IS NULL
2009/11/16(月) 19:10:37ID:???ありがとうです。
あるんですねー。
手元の本には見つけらんなーと
思っていたら、バージョン3とか・・・。
0977973
2009/11/17(火) 18:40:39ID:LfUIkQITこれでいけるとおもいきや、
リリース環境のmysqlバージョンが4.0.24で、
GROUP_CONCATが使えません orz
他の方法ありますか?
0978NAME IS NULL
2009/11/17(火) 23:12:16ID:???プログラムでがんばってください
0979NAME IS NULL
2009/11/18(水) 01:48:14ID:sB/M8f+C噂によるとオラクルでは1000個以上の項目をin句に指定するとエラーになるそうです。
このような制限はMySQLにもありますか?
あるとしたら、それは何個まででしょうか?また、制限以上の個数をin句に指定したい場合のSQLの書き方を教えてください。
よろしくお願い致します。
0980NAME IS NULL
2009/11/18(水) 04:43:46ID:???どこまで他力本願なんだか
0981972
2009/11/18(水) 14:55:49ID:???mysqldumpでダンプを取得する際に以下のパラメータを追加
--default-character-set=cp932
でダンプを取り直し、それをtestDBに入れたらすんなり入りました。
0982NAME IS NULL
2009/11/19(木) 15:18:39ID:T8+3uiLrupdate hoge_table set h1 = $1,h2 = $2,h3 = $3,h4 = $4 where id =1;
select h1,h2,h3,h4 from fuga_table where id =3;
サブクエリだといけると思うのですが全部サブクエリはさすがに重たい処理になる気がしました。
update hoge_table set h1 = (select h1 from fuga_table where id=3),h2 = (select h2 from fuga_table where id=3),長いので省略... from fuga_table where id =3;
ご教示お願いいたします。
0983NAME IS NULL
2009/11/20(金) 02:38:32ID:???deleteしてinsertするのはどう?
insert into hoge_table select h1,h2,h3,h4 from fuga_table where id=3;
トランザクション使えば、データの整合性は問題ないし。
0984NAME IS NULL
2009/11/20(金) 21:15:31ID:fcpTVk0Z1)登録ユーザー名と、そのユーザーがアップロードした直近の写真3つをリスト表示するアプリ用のクエリ。
2)ユーザーは複数。アップできる写真に上限はない。
3)ユーザテーブル uTable は、uId , uName
4)写真テーブル pTableは、id uId pName
自分なりに作ったのは
SELECT uTable.uId, uTable.uName, pTable,pName
FROM uTable LEFT JOIN pTable ON uTable.uId = pTable.uId
って感じだったのですが、これだとユーザとその登録写真全てが取れるのはいいけど
写真100件写真を登録してたら不要な97枚までとってしまい無駄です。
どうしたら、3つに限定できますか? LIMIT 3と末尾に書いたんですが、
当然ユーザまで限定されてしまいダメでした。 宜しくお願いします。
0985NAME IS NULL
2009/11/21(土) 17:59:29ID:???indexに関する質問です。Innodbでレコードを削除し、
其の後てOptimize tableで最適化した時、indexも合わせて最適化
されるんですか?
0986NAME IS NULL
2009/11/22(日) 04:58:46ID:ViAte70gこれは1つのSQLだけでは実行できない。
以下のように2段階で行うしかない。
1. select uId from uTable.
2. select pName from pTable where uId = {1で取得したuid} limit 3
→これはユーザ数分実行する。
あと、テーブルの設計がまちがってると思う。
pTableの主キーがuIdならテーブルを分割する意味はない。
写真テーブルは、pId, pName, uId(主キーはpIdな)とするべき。
あと、「直近の」を判断する情報がない。
pTableにタイムスタンプのカラムを追加するか、
pIdをauto_incrementにした上で、order by pId desc limit 3みたいにしなきゃだめだ
0987NAME IS NULL
2009/11/22(日) 09:04:33ID:???される。InnoDBのoptimize tableは
create table as selectしてテーブルを作り直しているので
インデックスも作り直される。
0988NAME IS NULL
2009/11/22(日) 10:44:28ID:???回答有難うございます m(_ _)m
0989984
2009/11/22(日) 12:50:06ID:HWUWqa+Aありがとうございます、感謝いたします。
初心者で、どういうものだったら一つのクエリで実現できるのか、判断できないんで困ってました。
クエリを2つ実行する必要があると言うことですが、現実には
1つ目のクエリで1000人分のuIdを取得した場合、2つ目のクエリは1000回発行することになります。
そんなことしてもDBは大丈夫なんでしょうか? 全然平気なのかなぁ。。
たとえば、写真の登録を上限10個にした場合、無駄なデータ取得は10-3で7つです。
クエリ1回だけど7つ程度の無駄なデータの取得負荷あり(JOINを利用)と、1000回クエリはどっちがマシなのか、
判断するにはどうしたら良いでしょう?そういう本があるんですか?
>あと、テーブルの設計がまちがってると思う。
>pTableの主キーがuIdならテーブルを分割する意味はない。
ごめんなさい、情報の書き方が正確じゃなかったです
pTableの主キーはid(auto_increment)なんですが、そうだとしても設計が間違ってるでしょうか?
0990984
2009/11/22(日) 14:25:24ID:HWUWqa+ASELECTを実行しようとしたらエラーになり、WHERE以下の条件に指定したカラムが存在しないと言われます
#1054 - Unknown column 'table2.infoOpen' in 'where clause' と。
WHERE table1.`infoOpen`=1
AND table2.`infoOpen`=1
AND table3.`infoOpen`=1
1行目に異常があって、その直後に続く条件がエラーになるのかなと思い2行目を削除しても
AND table3.`infoOpen`=1 は何の問題もなくクエリ成功します。
なぜでしょうか?
table2.`infoOpen`は確実に存在してるんですが。phpMyAdmin で確認しても値も入って存在してます。。
怪しい点などご意見貰えたら嬉しいです。くだらない質問ですみませんが、宜しくお願いします。
0991984
2009/11/22(日) 14:35:54ID:???0992NAME IS NULL
2009/11/22(日) 14:52:45ID:???0993984
2009/11/22(日) 16:01:39ID:???ありがとうございます。でもそれだと上下の条件も同じだし…
試しに全てのテーブル名とカラムを`で囲みましたが結果は同じでした。なぜだろう…
0994NAME IS NULL
2009/11/22(日) 21:34:07ID:???よ〜く見比べてみろ
0995NAME IS NULL
2009/11/22(日) 23:13:21ID:???前者はメモリ領域を無駄に食うだろ。JOINするなら尚更。
DBが別サーバならその分通信帯域も食う。
しかも結果を受け取った後スクリプト側で処理するんだろ。CPUリソースまで食う。
0996NAME IS NULL
2009/11/22(日) 23:14:29ID:???7000も無駄が発生するんだ。よく考えてみ。
0997984
2009/11/22(日) 23:37:31ID:???どうもありがとう、ほんとにありがとう
そのメモリとかの事情がわからないんですが、ともかく、手間を惜しまないってのが基本ですね
複数のクエリを発行てことはトランザクションが必要になるのかな。やってみます、ありがとう
0998NAME IS NULL
2009/11/23(月) 02:04:55ID:???コソーリ教えてよオラクルさんよ
0999NAME IS NULL
2009/11/23(月) 07:05:55ID:Q8mgWefm1000NAME IS NULL
2009/11/23(月) 07:22:03ID:???http://pc11.2ch.net/test/read.cgi/db/1258928470/l50
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。