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

MySQLってどうよ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
語ってくれ
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の排他制御はレコード単位ですか?
それともフィールド単位でしょうか?
0147デフォルトの名無しさんNGNG
テーブルやったと思う。
0148デフォルトの名無しさんNGNG
>147
これから使おうと思ってこのスレ読んでます。
テーブル単位なんですか?ちょっと大きすぎません?
0149デフォルトの名無しさんNGNG
>>148 仕様だからしようがない
0150デフォルトの名無しさんNGNG
>149 ウマイ!! 一点!
http://ponponponta.com/tentori/tentori.html かんけいないけど、おもしろい。
0151デフォルトの名無しさんNGNG
>150
http://plaza2.mbn.or.jp/~jinma/tentori/
こんなのもあるよ。
0152137NGNG
>> 148
InnoDB使えばいいんでない?

フリーのDBMSにどこまで期待するかによるけど、洒落にならんOLTPとか
走らせるつもりなら最初から商用DBMS検討した方が結果的には安く上がると思う。
漏れは研究で使うデータをMyISAMに突っ込んで使ってるけど、データの追加は
単純なバッチをぶん回すだけなんでロックの単位はどうでもよかったりする。
応答も早いし、管理は楽だしで漏れにはMySQLで充分。
0153デフォルトの名無しさんNGNG
>>148
>>149
http://www.mysql.com/products/mysql-4.0/index.html

[Other features available from MySQL 4.0.0]
The table handler InnoDB is now offered as a a feature of the standard
MySQL server, including full support for transactions and row-level locking.
0154デフォルトの名無しさんNGNG
お試しで使うなら DB2 開発者版の方が良いじゃん。
あれだけで十分実運用に耐えられる品質ゴホゴホ
0155小僧NGNG
社内システムとして昨年から使ってます。あ、でも社内システム
と言っても、工数0なんですけどね。会社で自由に使えるサーバ
がWindowsしかないのでWindowsで動くバージョンがあり、かつ
フリー(商用利用でなければ)のDBを捜したら、MySQLがあった
のでつかってます。小さな規模なので、マイクロソフトのSQLサ
ーバと同じエンジン使っているMSDE(だっけ?)とかも有ったの
ですが、始めのころに割り当てられていたマシンがWindows95の
遅いましんだったので、MySQLを選んだ次第です。トランザクシ
ョンが普通に扱えないのが最初は気がかりでしたが、LOCK TABLES
で問題になるようなことは無いです、今のところ。PostgreSQLに
比べるととてもシンプルに全てが出来ているので、メンテナンス
なんかが楽でいいです。
この前までPHP4と組み合わせていたのですが、JSPとかXML、XSLTを
使いたかったので、Resin + 横浜BaykitのXi + JDBCで今は作ってます。


0156デフォルトの名無しさんNGNG
>>155
Win95はいってる遅いマシンをLinuxとかに
いれかえるのはどうよ?
0157小僧NGNG
>>156
あ、ご心配なく。最近ようやくXPがまともに動くマシンが来たので、相当
安定性と速度が上がりましたので。以前は初代セレロン300MHz+メモリ64M
+Win95....正直DB使うにはあり得ない構成だったです。これにApatch入れ
て・・・今想像するだけでゾっとする構成でしたよまったく。世の中には
Win95でしか動かないアプリを仕事で使わないといけないところもありま
してね、つらいですよねそういう場合って。あ、ちなみにコード書いてる
マシンはPC-9821Xa20だったりするし、しかもメモリ32Mだったりして。
あまりにもハングしまくるので、自前でSIMM挿して64Mにしてなんとか
って感じで作ってます。
WindowsNT系のマシンからmysqlクライアントでサーバに接続すると、
打ち込んだコマンドがヒストリ機能でカーソルキーの上下で出てくる
んですが、Win95からだとそれが効かないし、SQLをコピーペーストすると
全角文字だけ消されちゃうしで、もう手がつりそうになるっすよ。だから
今はTelnetでXPに入って、その中からmysql使ってます。コマンド打ち間
違うとBeep音が鳴ってしまうので、XPで仕事やってる人がビックリするん
で、家間違えだけには注意しないといけないですけどね。



0158デフォルトの名無しさんNGNG
プロバにDB鯖は置けないけど、
自宅鯖で稼働しているMySQL鯖に外からつなぎたいのですが…

自宅鯖(Win)では、ActivePerlにDBIモジュールやらなんやら入れて
perlからアクセスできるようになったのですが、
プロバ(FreeBSD)ではモジュールが用意されていなくて、
落としてきたソースをコンパイルしなきゃならなくて…
PREFIX=/home/〜で導入ディレクトリ指定したけど標準のところへ
入れようとしてこけてしまう (;´Д`)

自宅でFreeBSD環境作ってコンパイルして必要なものだけ上げれば
いけますでしょうか?
0159デフォルトの名無しさんNGNG
>>158
自宅鯖にDBを操作するスクリプトおいといて、
プロバにそのスクリプトとソケットでやりとりする
スクリプトを置く。
0160158NGNG
>159
おおお、その手をすっかり忘れてました。
さっそくやってみます。
0161デフォルトの名無しさんNGNG
レコードロックできないようだけど、
みんなテーブルロック使ってるの?
0162デフォルトの名無しさんNGNG
>>161
ここを読め。
http://www.softagency.co.jp/mysql/Manual/html/manual.ja_MySQL_Optimization.html#Table_locking
0163デフォルトの名無しさんNGNG
InnoDB よく売れているみたいだねぇ。
Innobase Oy sales in January to May 2002 exceeded projections by 83 %.
だってさ。
0164デフォルトの名無しさんNGNG
linux で CのAPIを使用としていますが、
コンパイルで”undefined reference to `mysql_init'”
となります。
コンパイルオプションに”-L/usr/lib/mysql -lmysqlclient -lm -lnsl”
を付け、ファイルも有るんですが、何が悪いんでしょうか?
0165デフォルトの名無しさん NGNG
os:win98
mysql:3.23.49
cコンパイラ:ボーランド・BCC5.5.1

の環境でCからmysqlに接続しようとしてるのですが・・・。
インクルードファイル"mysql_com.h"の115行目で、
「宣言部に;がない」とのコンパイルエラーが出ます。
mysql_com.h自体にはmysqlをインストールしてから手は加えてませんでしたし、
実際に見てみてもそれらしい場所でゃ見当たりません。
何か心辺りあります??
0166デフォルトの名無しさんNGNG
仕事でOracle、DB2、SQL Server、PostgreSQLと使ったが、
PostgreSQLはDB2、SQL Serverよりは良さげな感じだった。
MySQLは実際のところ、どうなんだろ? 検討する価値有?
0167小僧NGNG
>>166

MAXの方じゃないと普通のコミット、ロールバックができないので、
一般的なRDBMS感覚だとつらいかも。でーも、LOCKコマンドとか
マニュアルで説明しているような方法でトランザクション処理を回避
することもできるので、頭を柔らかくできればキビキビ動くスポーツ
カーのようなDBだと思います。あと、全体的に使うまでの手間とか
管理が簡潔なので、僕はとても好きです。

0168デフォルトの名無しさんNGNG
>>167
同意
0169166NGNG
>>167
ありがとー。仕事では辛そうなので、自宅サーバの方で
使ってみます。
0170デフォルトの名無しさんNGNG
MySQLのJDBCで、

PreparedStatement #setDate(int parameterIndex, Date x, Calendar cal)
ResultSet#getDate(int columnIndex, Calendar cal)

が機能するものってないでしょうか?

gweMysqlはこのメソッドを受け付けてくれるけど処理してくれない(泣)
mm mysqlに至っては、実装すらしていない...
0171デフォルトの名無しさんNGNG
ODBC経由でMySQLに接続した場合、mysqladmin -u root -p processlistで
セッションを確認するとUserがODBCになっているんだけどそういうものですか?
ODBCなんてユーザ作成していないのに・・・・
ODBCユーザの権限ってどうなっているのでしょうか?
わかる人がいれば教えてください。

0172165NGNG
自己解決しました。
WINDOWS.Hをインクルードしてなかったのが原因でした。

>〉164
リンク時に直接ライブラリ・ファイルを指定してやったら、うまい事行くかと。
0173デフォルトの名無しさんNGNG
age
0174デフォルトの名無しさんNGNG
>>167
なんかトランザクションがないって思いこんでいる人も多いけど、
InnoDB table や BerkeleyDB table にすれば、トランザクションも
使えるし、たとえトランザクションを使わない場合でも明示的に lock
する必要はなくなるぞ。

しかも、InnoDB だとトランザクション使っても performance がそれほど
落ちないどころか、上がる場合すらある。
http://www.innodb.com/bench.html

とはいえ、web 用の user information DB だとか BBS の backend 用 DB
とか、商品ページ表示用 DB に使うのならいいけど、勘定系の DB には
ちょっと使えないっていうのは確かだけど。
0175デフォルトの名無しさんNGNG
>>174
トランザクションがあれば勘定系でも使えそうだけど、
どのへんがきびしいの?
0176デフォルトの名無しさんNGNG
>>175
トランザクションがあれば勘定系でもつかえるのか!!!!!

じゃあMSDEでもダイジョウブだね。
0177デフォルトの名無しさんNGNG
>>170
gweMysqlですが、ちゃんと実装してみましょうか? (^^)
0178デフォルトの名無しさんNGNG
>>176
MSDEでOKじゃん。
ダメなの?
であればその理由を述べよ。
0179デフォルトの名無しさんNGNG
>>176
感情系に使うの?( ´_ゝ`)フーン
0180170NGNG
>>177
是非お願いします。
面倒が減って助かります。
0181デフォルトの名無しさんNGNG
>>180
考えてみるけど...
そもそも、Calendarを引数で使わなくても、Calendar引数が不要なsetXXXメソッドで代用できない?
0182デフォルトの名無しさんNGNG
mysqlで、あるユーザがあるDBに対し、
LAN内(192.168.0.%)及びlocalhostからの接続をしたいのですが、
権限等どのように設定するのがいいんでしょうか?
user@localhost と [email protected].%を完全に別物として考えれば分かるん
ですが、管理が二重になってしまうのがどうにかならない物かと悩んでおります。
■ このスレッドは過去ログ倉庫に格納されています