私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【この先一体】MySQL 総合 Part15【どうなるの】
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
最近必要に迫られDBをいじっています。
で、使用しているのは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)の方がかなり早いようなんですが、チューニングが悪いんでしょうか?
それとも正規表現は処理速度が遅いんでしょうか?
で、使用しているのは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)の方がかなり早いようなんですが、チューニングが悪いんでしょうか?
それとも正規表現は処理速度が遅いんでしょうか?
>>399
こんなのが公表されてんだ、あいつらにとっちゃ好都合なもんだよな。探す媒体を増やすのは分かるが、どうなんかねえ
こんなのが公表されてんだ、あいつらにとっちゃ好都合なもんだよな。探す媒体を増やすのは分かるが、どうなんかねえ
パフォーマンスが悪くなってshow processlistしてみたら
数十秒かかってるLockedなプロセス(INSERT文、UPDATE文)がいくつもあるんですが
どのような原因が考えられr、どう対処したらよいでしょうか?
なるべくKILLはしたくないです
数十秒かかってるLockedなプロセス(INSERT文、UPDATE文)がいくつもあるんですが
どのような原因が考えられr、どう対処したらよいでしょうか?
なるべくKILLはしたくないです
>>403
全然つかっていないのに無意味にINDEX張っているとかいう可能性は?
全然つかっていないのに無意味にINDEX張っているとかいう可能性は?
>>403
KILLより再起動が基本だね。
KILLより再起動が基本だね。
>>409
ヒント: パーティション
ヒント: パーティション
>>403
Locked じゃなくて、長時間かかっているクエリが原因
Locked じゃなくて、長時間かかっているクエリが原因
datadirは一つだけど、その中のサブディレクトリを
別のドライブに移動することができるよ
別のドライブに移動することができるよ
MySQLの本いろいろ見たんですが、解らん事あるのでお知恵をください。
データをインポートする場合です。
csv形式固定長で1レコード毎に改行コードが入る場合はすんなり行くのですが、これ
が、未改行の場合のインポートの仕方が解らないのです。
別会社のシステムで吐き出すため、改行入れてくれとも言えず、仕方ないので自前で
改行挿入するプログラムを噛ませて取り込んでいるのですが、そのまま出来ないもの
かと思いまして。
こう定義すれば出来るとか、それは出来ないとか教えてもらえれば幸いです。
データをインポートする場合です。
csv形式固定長で1レコード毎に改行コードが入る場合はすんなり行くのですが、これ
が、未改行の場合のインポートの仕方が解らないのです。
別会社のシステムで吐き出すため、改行入れてくれとも言えず、仕方ないので自前で
改行挿入するプログラムを噛ませて取り込んでいるのですが、そのまま出来ないもの
かと思いまして。
こう定義すれば出来るとか、それは出来ないとか教えてもらえれば幸いです。
なんで、だからなのかな。
汎用機からエクスポートされたデータでパディング付きの固定レコード長だったり、
単に LF 以外の文字を改行マークとしている事を改行コードが無いと言ってるだけかもよ。
後者なら LINES TERMINATED BY で済むかもしれないけど、前者なら…
汎用機からエクスポートされたデータでパディング付きの固定レコード長だったり、
単に LF 以外の文字を改行マークとしている事を改行コードが無いと言ってるだけかもよ。
後者なら LINES TERMINATED BY で済むかもしれないけど、前者なら…
>>416-418
舌足らずで申し訳ないです。
例えば、以下のような感じです。
項目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
と変換して取り込んでいるんです。
これでイメージつかめますか?
舌足らずで申し訳ないです。
例えば、以下のような感じです。
項目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
と変換して取り込んでいるんです。
これでイメージつかめますか?
>>420
うまくいけばindex mergeするかもしれないけど
aとbにそれぞれindexつけて
select ... where a = ?
union
select ... where b = ?
とするのはどう。
OracleでもPostgreSQLでもこの手のクエリは苦手
うまくいけばindex mergeするかもしれないけど
aとbにそれぞれindexつけて
select ... where a = ?
union
select ... where b = ?
とするのはどう。
OracleでもPostgreSQLでもこの手のクエリは苦手
MySQL4.1-->5.0にして戸惑ったんで質問です。
テーブルaにカラム1~9があると仮定します。
MySQL4.1では、カラム1~7のみデータをinport出来ていたのですが、
5.0だとカラム8~9も追加したカラム1~9からなるデータでないとinport
できませんでした。
仕様変わったんですか?
まぁ正確なデータを作成していないのが悪いんですが、ファイル作成
プログラム作り直したりと、かなり不便ですねぇ。
テーブルaにカラム1~9があると仮定します。
MySQL4.1では、カラム1~7のみデータをinport出来ていたのですが、
5.0だとカラム8~9も追加したカラム1~9からなるデータでないとinport
できませんでした。
仕様変わったんですか?
まぁ正確なデータを作成していないのが悪いんですが、ファイル作成
プログラム作り直したりと、かなり不便ですねぇ。
>>426
カラム名を1..7だけ指定してimportすれば済む話じゃね?
カラム名を1..7だけ指定してimportすれば済む話じゃね?
レス番、間違った。
>>427だった、自分にresしてどうするw
>>427だった、自分にresしてどうするw
キーがユニークキーがひとつのとき、
fld1 char(10) uniqueと書くのと、
primary key(fld1)と書くので
何か性能面等で違いは出ますか?
fld1 char(10) uniqueと書くのと、
primary key(fld1)と書くので
何か性能面等で違いは出ますか?
>>430
InnoDBならPrimary Keyの方が速い
これを読もう
http://www.mysqlconf.com/mysql2009/public/schedule/detail/6661
InnoDBならPrimary Keyの方が速い
これを読もう
http://www.mysqlconf.com/mysql2009/public/schedule/detail/6661
上でカラム指定インポートの質問したものですが、追加でまた御教示ください。
邪道かもしれませんが、各カラムが日本語名となっております。
上記のインポートの際、
LOAD DATA INFILE "sample.txt" INTO TABLE sample_table (`カラム1`,`カラム2`,~略~,`カラム7`)
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
としてもエラーになります。
カラム指定の場合、日本語表記カラムはNGなんでしょうか?
邪道かもしれませんが、各カラムが日本語名となっております。
上記のインポートの際、
LOAD DATA INFILE "sample.txt" INTO TABLE sample_table (`カラム1`,`カラム2`,~略~,`カラム7`)
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
としてもエラーになります。
カラム指定の場合、日本語表記カラムはNGなんでしょうか?
my.cnfでメモリ周りのチューニングを行おうと思ってます。
現在InnoDBのみ利用しています。
この場合key_buffer_sizeの項目はInnoDBでは全く利用していないということで最小値に設定してまってもいいのでしょうか。
他の部分で少しでも利用分を増やしたいと思っています。
よろしくお願いします。
現在InnoDBのみ利用しています。
この場合key_buffer_sizeの項目はInnoDBでは全く利用していないということで最小値に設定してまってもいいのでしょうか。
他の部分で少しでも利用分を増やしたいと思っています。
よろしくお願いします。
ある意味どうでもいい事かもしれませんが、ユニークな項目としてauto incrementを使う事ってあるのでしょうか?
個人的にauto incrementは好きではないのですが・・・。
個人的にauto incrementは好きではないのですが・・・。
>>436
>auto incrementは好きではない
気持ちはわかる。
勝手に数字をふられるのが嫌なんだろ。
オレも最初はそうだった。
しかし、今では望んで使う。
レコード固有の一意な識別子としては
とても便利だからだ。
理由や理想じゃない。
我慢してちょっと使ってみろ。
>auto incrementは好きではない
気持ちはわかる。
勝手に数字をふられるのが嫌なんだろ。
オレも最初はそうだった。
しかし、今では望んで使う。
レコード固有の一意な識別子としては
とても便利だからだ。
理由や理想じゃない。
我慢してちょっと使ってみろ。
明示的に nextval か auto increment か、という話じゃないのけ?
俺はinsertした後に「さっきの値」を取得するという操作がなんとなく
気に入らない。
俺はinsertした後に「さっきの値」を取得するという操作がなんとなく
気に入らない。
>>434
内容無さ杉ですね、すみません。
以下のようなテストをしてみました。
使用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文は良い様に思えるのですが、どこか間違っているのでしょうか?
内容無さ杉ですね、すみません。
以下のようなテストをしてみました。
使用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文は良い様に思えるのですが、どこか間違っているのでしょうか?
>>442
以下のSQLで行けましたよ。ちなみに環境はwindowsの5.0.82。
LOAD DATA INFILE 'D:/test.csv'
INTO TABLE test_tbl
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(`基準日`,`営業所コード`)
以下のSQLで行けましたよ。ちなみに環境はwindowsの5.0.82。
LOAD DATA INFILE 'D:/test.csv'
INTO TABLE test_tbl
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(`基準日`,`営業所コード`)
>>445
そこかよw
そこかよw
大変申し訳ないです、全く気付きませんでした。
月曜会社行ったら確認してみます(大汗
月曜会社行ったら確認してみます(大汗
無事やりたい事が出来ました。
カラム指定って一番最後でないと駄目みたいですね、>>443さんありがとう。
あ、カラム名が"業営所コード"って具合になってた原因は、navicat for mysql使ってるんですが、
これでテーブル定義すると結構な確立でなるんですよね。
普段はエディタでゴリゴリ書いちゃうんであまり気にしてませんでした(汗
カラム指定って一番最後でないと駄目みたいですね、>>443さんありがとう。
あ、カラム名が"業営所コード"って具合になってた原因は、navicat for mysql使ってるんですが、
これでテーブル定義すると結構な確立でなるんですよね。
普段はエディタでゴリゴリ書いちゃうんであまり気にしてませんでした(汗
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- 【MySQL】下らねぇ質問はID出して書き込みやがれ 2 (985) - [21%] - 2012/10/17 7:16
- 【】 MySQLを買収したSunを買収したOracleを 【】 (112) - [19%] - 2023/1/22 14:15
トップメニューへ / →のくす牧場書庫について