のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,605,643人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレMySQL 総合 Part17

mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
51 : NAME IS - 2009/12/10(木) 16:16:36 ID:??? (+49,+30,-207)
>>50
ウチでちょっと前にやってみた時は、
レコード500万、テーブルサイズ約300MB(可変長時)、約800MB(固定長時)のテーブルで、

正味、プライマリーキー(int型)に対する検索だけでははほぼ五分。
でも、一緒に引いてくるカラムがvarcharの時とcharの時で、後者が方が約10%程度早かった。

ちなみにインサート時は、Load Data Infile ではこれまたほぼ五分だけど、
一行ごとのインサートや、後からAlter table等でIndexの追加、変更なんかをした時は、
固定長の方が5%前後早かった。

まああくまで自前の環境と自前のデータでちょっとやってみただけなので、他環境のことは知らない。
自分的には、ファイルサイズ三倍弱で、この程度のパフォーマンスUpだと割りに合わないと感じたので、
可変長に戻した。あとは自分でやってみて判断してくれ、としか言えない。
52 : NAME IS - 2009/12/10(木) 16:36:03 ID:??? (-29,-29,-40)
amebaの開発者が書いたmysqlの本だかに、
結局IO周りでボトルネックになるからvarcharのほうがいいよって書かれてた気が。
53 : NAME IS - 2009/12/10(木) 18:50:12 ID:??? (+52,+29,-64)
>>51
乙。
参考として聞きたいんだけど、
そのcharカラムのサイズは?

>>52
可変長カラムは間接アクセスが必要
なので、一般的に、固定長カラムよりも
速度的には不利だと、公式ドキュメントに
書いてあったはず。
54 : 51 - 2009/12/10(木) 21:29:53 ID:??? (-11,-30,+0)
>>53
テーブル構成はこんな感じ
(c1 int(10) unsigned,
 c2 varchar(32),
 c3 varchar(128),
 primary key(c1) )CHARSET=ASCII
なんのデータなのかは想像におまかせします・・(w)。

>>52
そう、そのことも念頭にあったので、datadirをRamdisk上に配置して、
さらにmysqld起動直後に、インデックスとテーブル両方メモリキャッシュに
読見込んだ上でやってみた結果が>>51

いろいろやってみて面白かったのは、select * from と select c1,c2,c3 で取った時は、
可変、固定ともに差が出ないのに、select c2,c3 とか、select c1,c3 とか、select c3 とか
の時は、固定長の方が明らかに優位があった(最大で10%程度)(まあ予想通りっちゅやそうだが)。
あと、c2をインデックス化して、where c2 = ** の時も、固定長の方が早かった(これはようわからん)。

上のパターンでは、ファイルサイズで大体予想つくと思うが、可変時で1レコード当たり約60byte程度、
固定長ではレコードあたり約160byteなので、容量が実用量の2.5倍以上になる。

予想としては、varcharカラムが多くて、且つ avg(length()) の割合が高ければ高いほど、
固定長にする値打ちが上がって来るように思う。
逆に、実容量がカラム定義より少なく、且つメモリに乗らないくらい大きくなればなるほど、
可変長の方が有利になるんでないかな。
55 : NAME IS - 2009/12/10(木) 21:30:21 ID:??? (-28,-29,-42)
varchar(300)で済むカラムをvarchar(65534)にすると、なにかデメリットってありますか?
実質、使用容量もシーク時間も変わらないのでは? と思ってしまうのですが

バージョンは5系です。
56 : 53 - 2009/12/11(金) 09:01:35 ID:??? (+5,+13,-6)
>>54
肝心なことを聞き忘れた。orz
ストレージエンジンはMyISAMだよね?
57 : 54 - 2009/12/11(金) 16:38:42 ID:??? (-25,-29,-11)
>>56
もちろん。ってか、MyISAM以外で、Row_format=fixedには出来ないんじゃないの。
Innodbはテーブルの格納の仕方がかなり違うみたいだし。
58 : 53 - 2009/12/11(金) 19:02:21 ID:??? (+29,+29,-28)
>>57
了解です。どーも。

>Innodbはテーブルの格納の仕方がかなり違うみたいだし。
InnoDBはけっこう冗長だそうなんで
完全に別として、MEMORYだったりは
するかも、とちょっとおもてた。
59 : 48 - 2009/12/12(土) 10:09:15 ID:??? (+22,+24,-53)
どうやら、OSのリソースリークをMySQLが誘発してるっぽいんですが、
過去事例とかご存知の方いらっしゃいませんか。
60 : NAME IS - 2009/12/12(土) 10:40:42 ID:??? (-26,-29,-6)
http://bugs.mysql.com/
キーワード:leak
ステータス:All
で検索したら230件ヒットしたから確認してみたら。
61 : NAME IS - 2009/12/12(土) 11:12:01 ID:??? (+38,+29,-61)
マルチポストっぽいが、誘導されてここに来ました。

ネットワークエンジニアなんだが、昨日、会社からデータベーススペシャリストの
資格取れと言われた。
MySQLからはじめようと思うのだが、MySQLの良い基本書はないかな?
できればコマンドラインからの入力から説明している基本書がいい。
Webの説明は見にくいのが辛い…。
62 : NAME IS - 2009/12/12(土) 14:29:34 ID:??? (+36,+29,-15)
>>61
資格を取るのが目的なら、その資格の参考書買って勉強するのが一番てっとり早い
63 : NAME IS - 2009/12/12(土) 14:34:29 ID:??? (+24,+29,-50)
>60
thx。一通り目を通したけど、怪しいような違うようなというのが多いですわ。
リーク系バグの影響を受けてるんだとは思うけど、
それなら開発環境で再現するだろって内容が再現しないから厳しい・・・
64 : NAME IS - 2009/12/12(土) 17:28:32 ID:??? (-21,-23,-71)
俺が手元に置いてんのは

MySQLコマンドブック
インストールから関数の解説までは一通り載っている。
入力についてもmysqlコマンドラインでの説明もある。

けどMySQLで資格と言っても…w
65 : NAME IS - 2009/12/12(土) 23:14:43 ID:??? (+34,+30,-88)
>>62
>>64

レスサンクス。
一応、DBスペシャリストの参考書は持っている。
しかし、正規化とかあんまよくわかっていない。
SQLも理論ではわかりづらいので、フリーのDBで勉強しようと思ったまで。
マジレスするが、MySQLで受かるとは毛頭思っていない。
ただ、フリーのDBがPostgreSQLとMySQLくらいしか思いつかんかった。
まぁ、こんな調子だからDBスペシャリストの勉強もベトナム戦争のように
泥沼化して、不合格になるのがオチだろうなw
66 : NAME IS - 2009/12/12(土) 23:35:49 ID:??? (-27,-29,-21)
>>65
他にも
SQLServer ExpressEditionとかOracle10gXEがあるよ
67 : NAME IS - 2009/12/13(日) 02:32:22 ID:??? (-28,-29,-16)
>>65
MySQL GUI Toolsが超オススメ。
68 : NAME IS - 2009/12/13(日) 19:27:00 ID:??? (-22,-21,-10)
>>55
のことも教えてください><
69 : NAME IS - 2009/12/13(日) 21:55:21 ID:??? (+24,+27,-16)
>>68
かわらんと思う
VARCHARは実データが何バイト入るかだけが問題
70 : NAME IS - 2009/12/13(日) 22:25:09 ID:??? (-21,-19,-3)
INNER JOINってややこしくないですか?
72 : NAME IS - 2009/12/13(日) 23:57:55 ID:??? (+0,+0,+0)
myisamで起こるロックについて質問させてください。
現在ちょっと重たいSELECTを発行しています。
すると他のselect文もロックされてしまいます。

> 5924480 wp 192.168.xxx.xxx:63080 wordpress Killed 9533 Sending data SELECT count(*) FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
> INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE 1=1 AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('22407',........)
> 5924495 wp 192.168.xxx.xxx:63105 wordpress Query 9532 Locked SELECT count(*) FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
> INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE 1=1 AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('91717')

http://blogs.sun.com/takemura/entry/myisam%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%B3%E3%82%AB%E3%83%AC%E3%83%B3%E3%83
%88%E3%82%A4%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%88%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
> MyISAMは皆さんご存知のように、テーブルレベルのロックのみで行レベルでのロックがサポートされていません。MySQLではSELECTコマンドの実行時に暗黙的リードロック(Shared Read lock)がかかるようになっており、
一般的にはこのロックが対象のテーブルに存在している場合には、書き込み処理(INSERT,UPDATE,DELETE,ALTER TABLEなど)がロック待ちとなります。SELECTの実行が完了してからINSERTなどが実行される形になります。
この辺があやしいのかとも思うのですが、
> 書き込み処理(INSERT,UPDATE,DELETE,ALTER TABLEなど)がロック待ちとなります。SELECTの実行が完了してからINSERTなどが実行される形になります。
とあるので、selectがロックする->updateがロックされる->selectがロックされる
となるのかな、と思ってるのですが原因と断定できず困っています。

この辺のことを詳しく書いてあるようなサイト・書籍・キーワードなどを探しています。教えてもらえませんか?
73 : NAME IS - 2009/12/14(月) 10:14:01 ID:??? (+6,+10,+1)
>>69
ありがとうございます!
74 : NAME IS - 2009/12/15(火) 06:48:43 ID:??? (+37,+29,-139)
>>65
ぶっちゃげRDBMSはPostgreSQL、教科書は増永先生などの基礎論のを
一冊買って勉強した方が良い。
標準SQLの対応としてはPostgreSQLの方が一日の長があるし、正規化
も数学的に大変クリアな概念なので一度ちゃんとした教科書できちんと
した理屈付けや定義は見ておいた方が良い。
遠回りに見えるかもしれないけど標準SQLも関係代数もつぶしがきく
知識なので絶対に無駄にはならないと思うよ。
76 : NAME IS - 2009/12/16(水) 00:56:57 ID:??? (-19,-30,+0)
質問させてください。板違いなら誘導おねがいします。

質問◆MySQLをインストールする前の状態にするにはどうしたらいいのでしょうか。

経緯◆データベースの勉強のためLAN内のサーバ(CentOS5.4)に、PC上のsshクライアントから
yumでインストールしました。
# rpm -qa mysql
mysql-5.0.77-3.el5
# rpm -qa mysql-server
mysql-server-5.0.77-3.el5
# rpm -qa perl-DBD-MySQL
perl-DBD-MySQL-3.0007-2.el5
# rpm -qa php-mysql
php-mysql-5.1.6-23.2.el5_3

ところが初回起動時、自分が意図しないパスワードを設定したらしく(※)下記のエラーで立ちあがりません。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
そこで、権限無視モードで立ち上げる方法を検索して起動しました。
# /etc/init.d/mysqld start --skip-grant-tables
MySQL を起動中: [ OK ]
しかし
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
となってしまいました。
クライアントが無事起動したら
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';  とするつもりでした。

(ちなみに「# mysqladmin -u root」は大量の情報を吐いたあとrootプロンプトにもどってしまいました。
また 「$ mysql」 一般ユーザでは立ち上がります)

# yum remove mysql
Erasing : mysql 1/4
Erasing : php-mysql 2/4
Erasing : perl-DBD-MySQL 3/4
Erasing : mysql-server 4/4
Complete!
と削除したあと、またインストールしてみましたが同じ結果でした。サーバのコンソールからもやりましたが同様でした。


どうやらパスワードリセットの方法は使えないようなので、MySQLをインストールする前の状態にしたいのです。

(※)自分が意図しないパスワードを設定したというのは、sshクライアントの画面の内容を保存しておこうと、大量の文字をコピーした
んですが、それをsshに貼ってしまったのです!なかなかプロンプトが帰ってこず、Ctrl+Cをしたら画面には Clean up... と出ていました…。
なにかをClean up中にCtrl+Cしてしまったわけです。

よき解決策をご教示いただければ大変にたすかります。
よろしくおねがいいたします。
77 : NAME IS - 2009/12/16(水) 04:08:48 ID:??? (-25,-30,-31)
>>76
rm -rf /var/lib/mysql/*
/usr/bin/mysql_install_db

以上。
mysql_install_dbは、mysql-serverパッケージに含まれてる。
79 : NAME IS - 2009/12/16(水) 15:53:33 ID:??? (+22,+29,-10)
そんなホイホイあげられるかよ
80 : NAME IS - 2009/12/16(水) 17:18:42 ID:??? (-17,-30,-108)
WinXP + MySQL5.1.41

optimize について教えてください。mysqlで以下のメッセージが出ました。対象テーブルはInnoDBです。

mysql> optimize table ***;
+----------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------+----------+----------+-------------------------------------------------------------------+
| test.*** | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| test.*** | optimize | status | OK |
+----------+----------+----------+-------------------------------------------------------------------+
2 rows in set

Optimizeではなく テーブルを再作成してAnalizeを代わりに使えって言ってるみたいですけど、
InnoDBはOptimizeをサポートしていないんですか?
82 : 80 - 2009/12/16(水) 21:28:22 ID:??? (+31,+29,-9)
問題は無い…という風に理解してよろしいのでしょうか?
83 : 76 - 2009/12/16(水) 21:57:40 ID:??? (+24,+29,-3)
>>77
出来ました!感謝です。
色々と試してみたいと思います。

ありがとうございました。
84 : NAME IS - 2009/12/17(木) 00:45:08 ID:??? (+18,+24,+1)
>>82
よろしいです
85 : NAME IS - 2009/12/17(木) 13:41:21 ID:??? (-27,-30,-99)
NULL と 0 が同義に扱われてると知らなかったのですが、
値が正確に NULL か 0 かを評価することってできないのでしょうか?

やりたいことは、

+----------+
| num | data |
+----------+
| 0 | A |
| 1 | B |
| NULL | C |
+----------+

ここでフィールド num の値が 0 以外のものをすべて SELECT で抽出したいのです。
(表の場合だと B と C のレコードだけ取りだしたい)

以下では 0 が NULL と扱われているようで、うまくいきませんでした。

SELECT * FROM tbl_name WHERE num != 0 ×
SELECT * FROM tbl_name WHERE num + 1 != 1 ×

詳しい方教えていただけないでしょうか。
87 : NAME IS - 2009/12/17(木) 21:33:12 ID:??? (-29,-29,-7)
>>84
了解しました m(_ _)m
88 : NAME IS - 2009/12/18(金) 06:45:22 ID:??? (+0,+10,+1)
>>86
ありがとうございます!
91 : NAME IS - 2009/12/18(金) 14:43:13 ID:??? (+17,+24,-30)
>>90
一回外部キー制約自体を削除して新たに制約をALTERするのじゃだめですか?
92 : NAME IS - 2009/12/18(金) 15:03:58 ID:??? (+30,+29,+0)
>>91
それで大丈夫でした。ありがとうございました。こうやってやるんですね。
96 : NAME IS - 2009/12/19(土) 19:43:17 ID:??? (+14,+24,+1)
ソ\\\
97 : NAME IS - 2009/12/19(土) 19:50:27 ID:??? (-21,-16,-86)
>>94
状況不明。
手順をもっと具体的に。

推測できる問題は、ターミナル、MySQL
クライアントの文字エンコーディングの
設定か?

ちなみに、ちゃんとした環境だったら、
\とかいちいち気にしなくてもいいはず。
98 : NAME IS - 2009/12/19(土) 20:37:49 ID:??? (+28,+29,-68)
>>95
VBAって\によるエスケープってありましたっけ?

>>96
ダメでした


>>97
先に挙げたクエリを叩いたら文法エラーって言われたので何でだろ?ってだけで。
正直、それ以上の手順はありません。

>ちゃんとした環境
そうなんですよね。
前にMySQLを使ってた時(バージョンは不明)は、そんな問題を気にしたことが無かったんで。偶然かもしれませんが。
100 : 94 - 2009/12/20(日) 00:54:36 ID:??? (+19,+29,-30)
今気づいた。
>94のクエリ例にWhere句がくっついてるのは気にしないでください。
必要な部分だけ切り貼りしたり、書き換えてる時にミスったようです。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について