トップページ⇒tech
647コメント186KB

MySQLってどうよ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
語ってくれ
0046デフォルトの名無しさんNGNG
どの程度の複雑なクエリーがだめなの?
服問い合わせが出来ないことは分かったけど。
0047sql初心者NGNG
使ってみましたが、mysqldやると、
innodb_data_file_pathの設定が無い
と怒られます。my.cnfに書いてもダメ。
何か良い参考書あります???
0048デフォルトの名無しさんNGNG
MySQLってYahooでも使ってたって聞いたことあるよ。
0049 NGNG
>>46
http://www.mysql.gr.jp/jpdoc/3.23/manual.ja_Compatibility.html#Missing_functions
0050デフォルトの名無しさんNGNG
InnoDBはスラッシュドットが使っているらしい。
InnoDBは今月中にトランザクションのSERIALIZABLEに対応し、
ホットバックアップとインクリメンタルバックアップに対応するらしい。
これでスピードがあまり下がらなかったら、十分に使えるのでは?
もともとスピードは桁違いだし。

ちなみにMyISAMで業務処理を開発している。
単純なSQL文を発行して、処理をプログラム側で
行うのがうちでは主流なので全く問題ない(今までBrieveベースだったので)。

一番問題になるのは、トランザクションがないことだけども、
小規模の場合だったら今のところ問題はない。
中規模以上だったら、DBの書き込みのところを分散コンポーネントにすれば
問題ないのではないかと思っている。
また、バックアップががエンジンを止めないといけないが、ファイルコピーで
すむので、ありがたい。

ちなみにMySQLがトランザクションはサポートしないが
アトミックオペレーションで対応すると言っている。
これは結構おもしろいと思うが、どうか?
サブクエリー、ストアドプロシージャに関しては、追々対応していくみたいだし。
0051デフォルトの名無しさんNGNG
http://www.sqlmag.jp/
0052デフォルトの名無しさんNGNG
副問い合わせが使えないのがかなり痛い。まあ JOIN で逃げるわけだが。
トランザクションは実装されるけど、どこまでパフォーマンスが低下するか。
逆にいい点は、SELECT に LIMIT があることだな。「この条件で、何番目から何個分のレコードを返せ」ってのが簡単にできる。
これを他の SQL でやるとかなり面倒。

基本的には参照系に使うもので、大量に更新が発生するものには向かない。だから参照がメインになる Web 関連で使われる……ってとこじゃないかね。
0053デフォルトの名無しさんNGNG
>>50
>DBの書き込みのところを分散コンポーネント

って、DBへの書き込み処理を一箇所にまとめて、そいつがキューを管理するっていうイメージ?
処理系は Java サーブレット? dRuby だったりして。
0054名無しさん@EmacsNGNG
MySQLでのトランザクションの実現って、InnoDBを使うのが主流になっ
てBerkeley DBは捨てられちゃうの?

Berkeley DBはMySQL無しの単独で使った事があって、DBエンジンとして
かなり信頼してるんだけど、何でInnoDBがMySQLに入ってきたのか経緯
知ってる人いる?
0055 NGNG
PostgleSQLは?
0056デフォルトの名無しさんNGNG
Berkeley DBは確か商用では相当高価だったはず。
そもそもBerkeley DBの機能追加っていまだに行われているの?

本当はNuSphereを使ってみたいんたんだけど...。

PostgreSQL
005750,56NGNG
ごめん、途中だった。

PostgreSQLはもちろん、良い。フリーの標準か?って思っている。
2つのDBの機能面の比較は、今まで何度となくされてるし、その通りだと思う。
よって、うまく使い分けたり、いやむしろ、PostgreSQLに飛びつきたいくらい。

しかし、運用面ではWindowsに正式に対応し、扱いが非常に簡単というのは
大きい。
Linuxはやはり難しい。技術者は良くても、うちの場合はそれだけでまわっ
ているわけではないから。
差分バックアップなんて怖くてやらせられないくらいのレベルだが、
その人たちの担う役割は大きい。
005854NGNG
>>56
Berkeley DBそのものを商品として売らない限り対価は不要なはず。
最近の機能追加は2フェーズコミット関連をやってた気がする。

それより、56はInnoDB詳しい?
005956NGNG
58>>
確かに、Berkeley DBは2フェーズコミットに対応している。。
がしかし、本家のメーリングリストでInnoDBとBerkeley DBの発言数を比べると...。

>それより、56はInnoDB詳しい?
なにをもって詳しいとするかが、意見の分かれるところだけど、
nnoDBに関しては詳しいというほどでもないと思う。
テストしたり、調べたりという程度。
006054NGNG
>>59
あ、詳しいってのはMySQLプロジェクトでの扱いとかね。

軽く調べた限りではInnoDB, Berkeley DBともMySQLに対して提供する機
能が被ってる(トランザクション、障害回復等)んで、どういう経緯で
InnoDBが追加採用されたのかなと思った。
0061ひろゆきと愉快な信者達NGNG
115 :参加するカモさん :01/12/21 19:46
http://gotonext.cool.ne.jp/gazou/hiroyuki02.jpg
ひろゆき、歯まっ黄色!!
歯糞だらけ!!びっくり!!(・∀・)キタナイ!!ビークリ!!

ひろゆきへ

歯みがきしましょうね・・・・

156 :参加するカモさん :02/01/08 14:08
>>115
死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死
死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死
死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死
死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死
死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死
死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死

157 :参加するカモさん :02/01/08 14:11
>>115
呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪
呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪
呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪
呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪
呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪
呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪
0062デフォルトの名無しさんNGNG
訴えちゃったよ
0063NuSphereNGNG
訴えられちゃったよ
0064デフォルトの名無しさんNGNG
カーソルが使えないのはイタイな〜
0065デフォルトの名無しさんNGNG
VC6のSTANDARDでコンパイルできたヤシいる。
MySqlManagerがリンクできんモヨリ
0066デフォルトの名無しさんNGNG
InnoDB、ホットバックアップのベータがでた模様です。

http://www.innodb.com/
0067デフォルトの名無しさんNGNG
MySQLでのJDBCってどれが良いの?

http://www.t3-jpn.com/

って、ところにあったけど、カウンターが6000台って、大丈夫なのか?
0068デフォルトの名無しさんNGNG
>>67
大丈夫だよ。
検索エンジンなどにはTopページではなく、JDBCドライバのあるページを
登録しているから、あまり多くないんだよ。
0069デフォルトの名無しさんNGNG
>>67
その gweMysql Driver がついさっき update されたみたい。
0070デフォルトの名無しさんNGNG
MySQLのドライバが数種類あるので迷っています。
たぶん、gweMysqlかmm.mysqlあたりがいいと思うのですが..。
どっちがいいんでしょうか?
0071デフォルトの名無しさんNGNG
>>70
外国の方や日本の方も大抵 mm mysql Driver を使ってるみたいです。
ただ、この mm mysql はソースがとても汚くて不具合もいろいろあるみたい。

gweMysql Driver は 日本人が作製しているので、日本人向けかも。
外国の方も日本の方も使ってる人もちゃんといます。
0072デフォルトの名無しさんNGNG
mm mysql Driverしか使ったことないけど、gweMysql Driver とどう違うの?
0073デフォルトの名無しさんNGNG
mysqlってレコードのロックも掛けられないのですか?
0074デフォルトの名無しさんNGNG
>73
 ロック信者ハケーン!!

 
0075デフォルトの名無しさんNGNG
>>73はロックマン
0076デフォルトの名無しさんNGNG
>>73
レコードロックって、どういう使い方してるの?
それによって変わるから、サンプルのSQL文が見たい。
0077デフォルトの名無しさんNGNG
>>76
C/S構成の更新主体のシステムだと長時間の悲観ロック使いたくなるが。
普通使わないのかな?
0078デフォルトの名無しさんNGNG
ロックマンロックマンロックマンロックマンロックマンロックマン
0079デフォルトの名無しさんNGNG
ガッチャマン
0080ロックマンNGNG
テーブル・ページロックで十分な気もする
008176NGNG
>>77
ケースバイケースだと思う。悲観の方が組むのも楽だし。
だけど楽観の方の設計にしておいた方が、後々楽だと思う。
MySQLの場合、悲観的ロックだと専用のフィールドかテーブルを持たす必要があるしね。

>>73
MySQLは他のDBと別のパラダイムを持っていると思う。
他のDBを使っている開発者から見れば、トランザクションがない、明示的な行ロックが
ないなどと不満も多いと思う。

だけどそれも設計と、書き換えでなんとかなる場合が多い。
書き換えても、それを補って余りあるパフォーマンスもあるし。

結局は使い方だと思うけど、どう?
0082デフォルトの名無しさんNGNG
>81
 まぁ、そりゃ全てのDBに言えることだわな。使い方次第ってのは。

 トランザクションなしで、行ロックなしとなれば、参照系しか使う用途は
ないにしても、その反面パフォーマンスが桁違いなら、間違った選択じゃ
ないとは思う。
0083デフォルトの名無しさんNGNG
>>82
MySQLはトランザクションや行ロックがなくとも、更新系でもやっていけるぞ。
81が言いたかったのは、SQLの書き方や設計などでそれがまかなえるということでは?

確かマニュアルにそこらへんのことって書いてなかった?
0084デフォルトの名無しさんNGNG
MySQL-Max(InnoDB)にすればトランザクション使えるよ
0085デフォルトの名無しさんNGNG
MySQLのトランザクションには3つの考え方があったはず。
1つ目は、通常のトランザクション(InnoやBDB)。
もう1つがアトミックオペレーション。
もう1つが、LOCK TABLES, フラグなどを使い直接書く。
0086デフォルトの名無しさんNGNG
>>72
ソースの起源は gweMysql Driver のソースにあるみたいです。
それを参考にしてマークマシュー(MM)さんが書き直したような
感じです。本人に直接聞いた訳ではないですが...。
で、現在のgweMysql Driver は、大本のソースがとっても不具合
だらけで、機能がほとんど無かったので、大幅に修正&機能追加
して、mm mysql Driver に追いついたって訳。
いや、抜いたかな?
あと、「漢字」などの問題があれば、積極的に対応しますよ。

しかし、彼(MM)は、分散トランザクション(2phase-commit)用の
JDBCインターフェースを実験的に実装し始めているので、抜かれ
たかな?

そんなところです。
0087デフォルトの名無しさんNGNG
MySQL はビルド時にデータベースを置くディレクトリが決定されますよね?
たとえば /var/lib/mysql とか。

一般のユーザのホームディレクトリの下にデータベースファイルを
格納するということはできるのでしょうか?
0088デフォルトの名無しさんNGNG
どうもデータベースを格納するディレクトリはデーモンの起動時に
ただひとつに決定されるようなので、シンボリックリンクで対処することにします。
0089デフォルトの名無しさんNGNG
ということは、$HOME/.my.cnf には [mysqld] グループを
書いても無意味ってことですね?

/home/mysql/.my.cnf なら意味あるのかもしれませんが。
0090デフォルトの名無しさんNGNG
My.iniに以下を追加しただけでは日本語ダメなんでしょうか?

[mysql]
default-character-set=sjis
[mysqld]
default-character-set=sjis
[mysqldump]
default-character-set=sjis

試しに日本語名のDB作ろうとしたんですけどエラーになっちまいます。
C:\mysql\bin>mysqladmin -u root -p create 漢字表示
Enter password: *******
mysqladmin: CREATE DATABASE failed; error: 'Incorrect database name '漢字表示''






0091デフォルトの名無しさんNGNG
>>90
サーバとクライアントにそれぞれどのOSを使ってるかとか、MySQLのバージョンは
とかが不明だと答えられない気もするが
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=5258
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=5259
あたりをまず参照。
0092デフォルトの名無しさんNGNG
うううう・・・
最近はじめたが訳わからん・・・
超基礎的なとこから解説してるところありませんか?
0093俺のいにNGNG

[mysqld]
default-character-set=sjis
datadir=C:/mysql/data

[mysql]
default-character-set=sjis

[mysqldump]
default-character-set=sjis
0094ロックマンNGNG
>>92
ケチらず本買おう
0095デフォルトの名無しさんNGNG
PostgreSQLってどうよ。
0096デフォルトの名無しさんNGNG
>>91
ありがとう。
リンク先の記事を参考に、以下のサイトからsjis対応のクライアントDLしたら、
ちゃんと日本語使えたよ。
http://www.softagency.co.jp/mysql/pro/win_winclients.html
0097デフォルトの名無しさんNGNG
>>96
ちなみにmysql.exeはdefault-character-set=sjisを設定してると動かないよ。
0098デフォルトの名無しさんNGNG
MySQLで簡単なWebデータベース作ったんだけど、
急にサーバーのCPU負荷が高くなった・・・
レコード数は200ちょっと(マダマダ増える)
サイトのアクセス数は一日平均2万アクセス。

今までhtmlでページ作ってたのをMySQLでデータをまとめて
検索機能を付けたら、CPU負荷が倍以上に・・・

こんなもんスか?
0099デフォルトの名無しさんNGNG
レコード数が200くらいだとそうなのかな。
0100デフォルトの名無しさんNGNG
>>98
どういう検索が頻繁なのかに因る。
010198NGNG
>>99
レコード200だとMySQL動かすだけ損なのかな?

>>100
select * from TABLE group by name having name like '%$word%'
です。

PHP4から発行しています。
ひょっとしてMySQLの負荷じゃなくて、PHPの負荷なのかな?
0102デフォルトの名無しさんNGNG
なじぇ、having を使うのだろう。
0103デフォルトの名無しさんNGNG
102>>
having以外に何かある?
0104デフォルトの名無しさんNGNG
>>103
や。
当方 MySQL は知らないので(興味あるが)、勘違いした
事を言っていたら申し訳ないが、「 where 」を使わない
理由が見えなかったもので。

MySQL が having 使った方が速いとかリソース喰わない
とか言う理由があるなら、それで良いのだろうが。
0105デフォルトの名無しさんNGNG
>>104
いんや・・・
group byを使うとwhereが使えない。
ただそれだけです。
0106デフォルトの名無しさんNGNG
>>105
よく判らないけど。MySQLがそういう仕様だと言う事?
それともデータ構造的に、無理だと言うこと?
0107デフォルトの名無しさんNGNG
>>105
関数で処理された結果を絞り込む時はwhereが使えない仕様なんです。

0108デフォルトの名無しさんNGNG
「SQLの仕様なんだよ、この厨房!ケツ拭いて寝ろ!」とはっきり言ってやれ…。
0109デフォルトの名無しさんNGNG
>>108
へ?
0110デフォルトの名無しさんNGNG
>>98
MySQLのバージョンを教えてください。
0111デフォルトの名無しさんNGNG
>>110
MySQL -> 3.23.47
RedHatLinux -> 7.0
Apache -> 1.3.17
PHP -> 4.1.1

ございます。
0112デフォルトの名無しさんNGNG
>>107
distinct 使ったselectやれば?where使えるよ。
0113デフォルトの名無しさんNGNG
>>112
distinct使ったら取り出せるカラムは一つだけじゃなかったっけ?
0114デフォルトの名無しさんNGNG
もうすぐ、4.0がでるそうな・・・
0115デフォルトの名無しさんNGNG
>>111
最新の 3.23.49a にしてみてはどうですか?
以前、本家の MySQL ML に同じような報告していた方がいたような
気がします。

ひょっとして、SMPマシンを使ってらっしゃいますか?
0116デフォルトの名無しさんNGNG
重複したカラムを取り除くんでは?

って、やべーテクニカルエンジニア(データベース)受験したばかりだっつーのに
0117デフォルトの名無しさんNGNG
>>116
不合格通知きてないか?(w

no name mail sex

のテーブルでsexをdistinctしたら、noやnameのデータが取り出せないって事
0118116NGNG
スマソ、select name ....じゃなくって、
select * ....だったのね
0119デフォルトの名無しさんNGNG
innoDBって何をすれば使えるようになりますか?
仕事で使ってみたいのですが
0120デフォルトの名無しさんNGNG
     ___      ___________
   //・ ● |\    /
   /  \・ ⌒  \< postgresに決まってんだろ、おめーら
   |         |   \___________
   ヽ          ノ__________
    \____/| パソパソパソパソパソパソ | \
   /⌒ヽ     ゝ パソパソパソパソパソパ丿  ヽ
   (__)        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    )
  (      ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ )
0121デフォルトの名無しさんNGNG
>>119
--with-innodbでconfigureして、my.cnfでinnodb_data_file_pathその他を指定して、
InnoDBテーブルの保存先ディレクトリを作成する。
詳しくは
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Table_types.html#InnoDB
あたりを参照。
0122デフォルトの名無しさんNGNG
>>121
ありがとうございます。

>>--with-innodbでconfigureして、my.cnfでinnodb_data_file_path

Windowsで使用する場合、これはどこで打ち込んだら良いのですか?

0123121NGNG
>>122
Windowsの場合はバイナリを取得。
http://www.mysql.com/downloads/mysql-max-3.23.html
0124デフォルトの名無しさんNGNG
>>123
mysql> CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A)) TYPE = InnoDB;
Query OK, 0 rows affected (0.07 sec)

バイナリを落としてオプテョン書き換えてDB作って上記のクエリを流したら
うまくいったみたいです。
ありがとうございました
0125デフォルトの名無しさんNGNG
やっぱりダメでした。
Connection.Begintranceで落ちます。トランザクションがサポートされていないとの事です。

My.iniの内容はこんな感じなんですけど変ですか?
default-character-set=sjis
datadir=C:/mysql/data
port = 3306
socket = /tmp/mysql.sock
skip-locking
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = table_cache=64
set-variable = sort_buffer=512K
set-variable = net_buffer_length=8K
set-variable = myisam_sort_buffer_size=8M
log-bin
server-id = 1

# Uncomment the following if you are using Innobase tables
innodb_data_file_path = ibdata1:1000M;ibdata2:500M
innodb_data_home_dir = c:\ibdata
set-variable = innodb_mirrored_log_groups=1
innodb_log_group_home_dir = c:\iblogs
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=30M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_arch_dir = c:\iblogs
innodb_log_archive=0
set-variable = innodb_buffer_pool_size=60M
set-variable = innodb_additional_mem_pool_size=6M
set-variable = innodb_file_io_threads=4
set-variable = innodb_lock_wait_timeout=50
0126デフォルトの名無しさんNGNG
jjj
0127125NGNG
変っつーか繋がらないですね。>>125

んで、何が悪いのかわからないのですが、

1:mysqlMax-3.23.49をインストール
2:My.iniに最低限の設定を書き込む
3:DB作成
4:InnoDB用の設定をHELP見ながら設定
5:Type=InnoDBでテーブル作成
6:VBでトランザクションを試みるが失敗

なんか足りない事とかありますか。
3.23のバイナリは入れてないです
0128125NGNG
DOSでやったら動いた。
ODBC経由だとダメらしい。なんで?
0129デフォルトの名無しさんNGNG
だれか手順を教えて下さい。
0130デフォルトの名無しさんNGNG
MySQLのMyって何を意図しているのですか?
0131デフォルトの名無しさんNGNG
潜行中
0132デフォルトの名無しさんNGNG
>>130
M:もててもてて
Y:やりまくり
0133デフォルトの名無しさんNGNG
漏れの同僚のことだ (T_T)
漏れは
M=もてなくて
Y=やれないので
ときどきヘルスにいくだけ。
セクースなんて一年に何回かだけだYO!
お金に余裕のあるときだけね。
0134デフォルトの名無しさんNGNG
>>133
かわいそう…頑張ってください
0135デフォルトの名無しさんNGNG
>>130
> MySQLのMyって何を意図しているのですか?

| MySQL の名前の由来は完全には明らかではありません。
| 我々のベースディレクトリと多くのライブラリとツールは
| 接頭辞“my” を10 年以上も使っています。
| しかし、Monty の娘 (何年か若い) も My という名前です。
| そのため、この2 つのどちらがMySQL に名前を与えたかは、
| 我々にとっても未だ謎です。


0136デフォルトの名無しさんNGNG
linux(Redhat6.2)にMySQLをインストールしたんですが、Cでアクセスプログラムを作成し、
実行するとセグメンテーションエラーでcoreダンプします。
shell> mysql -uroot -pxxx でアクセスでき、リンクエラーも出ませんが、
何か足りないんですか?
0137デフォルトの名無しさんNGNG
まずはゲロ(core)吐くのがどのプロセスなのか教えれ。
自分で作ったクライアントなら、gdbに喰わせてトレースしてみそ。
0138デフォルトの名無しさんNGNG
>>136
MySQLはソースからコンパイルしたのか?それともRPMか?
0139デフォルトの名無しさんNGNG
mysql_init(mysql)でcoreダンプします。
さすがに、この中はトレースできません。
パラメータのmysqlは 
MYSQL *mysql;
で指定してあります。 
0140137NGNG
mysql_init(NULL);に変えてみ。
0141137NGNG
ネタだと思われたかも知れん。
mysql = mysql_init(NULL);だ。それでダメなら知らない。
0142デフォルトの名無しさんNGNG
OKでした。
パラメータをNULLにしておかないといけなかったようです。
0143デフォルトの名無しさんNGNG
PostgreSQL>>>>>>>>>>>>>>MySQL
0144デフォルトの名無しさんNGNG
MySQL>>>>>>>>>>>>>>PostgreSQL
0145デフォルトの名無しさんNGNG
Postgreの読み方はポストグレでよろしいでしょうか?
0146デフォルトの名無しさんNGNG
MySQLの排他制御はレコード単位ですか?
それともフィールド単位でしょうか?
■ このスレッドは過去ログ倉庫に格納されています