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

私的良スレ書庫

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

元スレMySQL 総合 Part15

mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
501 : NAME IS - 2009/02/13(金) 12:39:29 ID:??? (+51,+30,+0)
502 : NAME IS - 2009/02/13(金) 15:02:29 ID:??? (+60,+29,-4)
>>500
>レコードの存在チェックをかけたいカラムはプライマリキーではありません。
503 : NAME IS - 2009/02/13(金) 17:15:30 ID:??? (+11,-11,+0)
ユニークならok
504 : NAME IS - 2009/02/14(土) 00:22:16 ID:??? (+50,+28,-4)
>>491
どの文字がどのように化けるか具体的に。
505 : NAME IS - 2009/02/14(土) 00:22:38 ID:??? (-2,-29,+0)
>>494
それ sjis のことじゃね?
506 : NAME IS - 2009/02/14(土) 11:51:21 ID:??? (-1,-29,-49)
>>491
この条件で文字化けが起きるのはおかしいので、
表示する時の問題な気がする。
例えば、プログラムで表示してるなら、そっちの設定がおかしいとか。

どうでも良いけど、set names 何回するのかとw

>>494
sqlインジェクションとujisは関係ない。set names の問題と勘違いしてるのかな?
http://blog.ohgaki.net/set_namesa_mcb_asc
508 : NAME IS - 2009/02/14(土) 21:37:04 ID:??? (+2,-29,-51)
mysqlbenchでコネクション数を1000より大きくしたいのですが。。。
どなたか方法ご存知ありませんか?
509 : NAME IS - 2009/02/15(日) 10:34:34 ID:??? (+25,+2,+2)
>>508
存じております><
510 : NAME IS - 2009/02/16(月) 16:04:35 ID:??? (+9,-29,-29)
>>501
横やりなんだけど
> ON DUPLICATE KEY UPDATE を利用する時は DELAYED オプションは無視されます。
ってあるじゃん。やっぱりそうなると大規模じゃ無理ぽ?みんなどうしてるのかな。
511 : NAME IS - 2009/02/16(月) 16:05:27 ID:??? (+68,+28,-1)
>>490
読んだけど、けども・・・。
512 : NAME IS - 2009/02/16(月) 16:33:10 ID:??? (+62,+29,+0)
>>511
なんだ、はっきり言え
513 : NAME IS - 2009/02/17(火) 08:55:16 ID:RjANfwsW (+55,+28,-10)
オートインクリメントで0から始める事ってできないんですか?
514 : NAME IS - 2009/02/17(火) 09:31:00 ID:??? (+13,-30,+0)
>>512
他に読むべき本が・・・、あるっ・・・!
初心者向けなのはわかるけど、あまり理系に向いてないというか浮かんでくる疑問が多くてこれ一冊じゃわかった気にならない。

>>513
手動でsequenceのテーブル書き換えるかAUTO_INCREMENTを0にしたらどうかな。結果報告待ってます。

最近こんなのが出て頻繁に落ちるようになっちゃった。メモリ不足なのかな・・・。
090217 9:29:42 - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=402653184
read_buffer_size=2097152
max_used_connections=18
max_threads=151
threads_connected=12
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 1013224 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
うーん。
515 : NAME IS - 2009/02/17(火) 12:32:07 ID:??? (+0,-3,-34)
>>514
OSは何なの?
物理メモリーやスワップはどのくらい?
516 : NAME IS - 2009/02/17(火) 13:19:04 ID:??? (+0,+0,+0)
>>515
返信ありがとう。チューニングのチュの字もわかんないへたれです。
FreeBSD, メモリ4G, スワップ1Gです。

%uname -a
FreeBSD kennedy.l3tp.org 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 08:58:24 UTC 2009 root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
%swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b 1048576 36 1048540 0%
%dmesg |grep mem
usable memory = 4280016896 (4081 MB)
avail memory = 4122501120 (3931 MB)
%pkg_info -Ix mysql-server
mysql-server-5.1.30 Multithreaded SQL database (server)

key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 384M
innodb_buffer_pool_size = 2000M
#innodb_additional_mem_pool_size = 20M
innodb_additional_mem_pool_size = 512M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

そこまで高負荷とは思ってないのですが、phpMyAdminでつなぐと頻繁に落ちる気がしてます。
517 : NAME IS - 2009/02/17(火) 13:30:37 ID:??? (+52,+29,+0)
チュの字ってなんか笑える
518 : NAME IS - 2009/02/17(火) 14:04:01 ID:??? (+52,+29,-3)
俺はお前にホの字だこのやろう
519 : NAME IS - 2009/02/17(火) 15:03:57 ID:??? (+52,+29,-2)
こりゃあ御の字だ
520 : NAME IS - 2009/02/17(火) 17:05:36 ID:??? (+0,+29,-8)
お前らのせいで>>516が口をへの字にしちゃったよ
521 : 513 - 2009/02/17(火) 22:05:38 ID:zRRDspbr (-18,+29,-12)
>>514
無理でした。どうやっても1から始まります。
オートインクリメントを使わず毎回自分で+1にするようにします。
524 : NAME IS - 2009/02/17(火) 23:08:43 ID:??? (+0,-29,-31)
アパッチを使いMySQLサーバを立て
別のPCからMySQLモニタでサーバにアクセスすることって可能ですか?
525 : NAME IS - 2009/02/17(火) 23:51:23 ID:??? (-2,-29,-4)
>>524

> アパッチを使いMySQLサーバを立て

意味がわかんない。
530 : NAME IS - 2009/02/18(水) 05:39:36 ID:??? (-5,-30,-135)
select
NC.NUMCOMMENT AS NUMCOMMENT,
T.BODY AS BODY,
T.TITLE AS TITLE,
C.CATEGORY_NAME AS CATEGORY_NAME
from
TOPIC T,
CATEGORY C,
(select TOPIC_ID, count(*) as NUMCOMMENT
from COMMENT group by TOPIC_IC) NC
where
NC.TOPIC_ID = T.TOPIC_ID
and
T.CATEGORY_ID = C.CATEGORY_ID

(注意点)
俺は酔っぱらっている。
532 : NAME IS - 2009/02/18(水) 10:19:19 ID:??? (+48,+29,-2)
>>531
小泉じゃねーかYO!中川じゃねーんかYO!
533 : NAME IS - 2009/02/18(水) 10:24:41 ID:??? (+54,+29,-26)
>>522
INSERT INTO (・・・) SELECT ・・・
が使えるんじゃ?

つかオートインクリメントの数字そのものは気にするものじゃないよ。
どうしてもというのなら、自分でストアド書いたほうがマシかもね。
535 : NAME IS - 2009/02/18(水) 13:33:05 ID:??? (+3,-30,+0)
要は次のものを取得したいという事で良いのかな?

・あるcategory idを持つ記事全てに対して付けられたcomment数の合計
・あるcategory idを持つ記事のbodyとtitle全て

だとすれば、これはクエリをcomment数を求めるクエリとbodyとtitleを
求めるクエリの2つに分けるのが、その後のアプリの実装も含めて結果的
には一番楽だと思う。

select
COUNT(*) AS NUMCOMMENT,
CA.CATEGORY_NAME AS CATEGORY_NAME
from TOPIC T, CATEGORY CA, COMMENT CM
where
T.CATEGORY_ID = CA.CATEGORY_ID AND
T.TOPIC_ID = CM.TOPIC_ID and
T.CATEGORY_ID = ???
group by CATEGORY_NAME

select
T.BODY AS BODY, T.TITLE AS TITLE,
CA.CATEGORY_NAME AS CATEGORY_NAME
from TOPIC T, CATEGORY CA
where
T.CATEGORY_ID = CA.CATEGORY_ID and
T.CATEGORY_ID = ???
537 : NAME IS - 2009/02/18(水) 21:45:06 ID:??? (+62,+29,-141)
結局ソートで一回、結合で一回インデックスを読みに行くことで
実現されるから、大事なところにインデックス貼っておけばそうは
変わらないと思う。
あとはAとBのレコード数と、制約条件などの有無でも変わってくる
はずなので、具体的にはデータ依存としか言いようがない。

あとLEFT JOINを使っているけど、NULLを含む列をORDER BYに
使ったとき並び順は実装依存なので。明確に外部結合が必要で
無い限り内部結合を使った方が無難です。
538 : NAME IS - 2009/02/18(水) 21:45:41 ID:??? (+3,-30,-113)
ストアドプロシージャの初歩的な書き方について質問です。
プロシージャ内でテーブル名を変数に入れてクエリするにはどうしたらよろしいでしょうか?
具体的には
-----------------------------------------------------------------------
delimiter //

CREATE PROCEDURE table_count (OUT count INT , IN table_name text )
BEGIN
SELECT COUNT(*) INTO count FROM table_name;
END;
//

delimiter ;
-----------------------------------------------------------------------
のようなことをしたいのですが、table_nameを変数として展開せずにtable_nameというテーブルを探しにいってしまいます。
どう書いたらよろしいのでしょうか?

よろしくお願いします。
540 : 539 - 2009/02/19(木) 03:43:15 ID:??? (+56,+28,-19)
自己解決スマソ
更にサブクエリとすれば良かっただけでした
541 : NAME IS - 2009/02/19(木) 16:53:51 ID:??? (+35,-30,+0)
質問です

複数のカラムを1つのカラムに見立てて
ユニーク制約をかけることって出来ないのかな?
複数カラムの全レコードを通して一意の値を持たせたいんだけど。

動作的には空テーブルに
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 1 , 2 , 3 );
が成功したとき、

INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 3 , 1 , 2 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 4 , 5 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 5 , 3 ); も
失敗するような感じになって欲しい。
成功するのは
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 5 , 6 );
のように、c1,c2,c3とおして全く使用されていない値だけで
組み合わされた時だけにしたい。

UNIQUE (c1,c2,c3)みたいな表制約だと、c1,c2,c3の組み合わせの値が
同一のときだけしか制約されないので、これじゃないと言う事だけは
判ったんだけど。

やっぱりプログラム側で事前に重複チェックするしかないのかな?
542 : NAME IS - 2009/02/19(木) 16:55:22 ID:??? (+2,-29,-143)
昇天してしまったマシンからデータベースのバックアップを取りたいと
思っています。(マザーボードが死んだ)ディスクは生きているのですが、
適当なマシンにディスクをマウントしてバックアップをとる場合、mysqldumpを
使ってバックアップなどできるのでしょうか?os bootcdからrescueモードで
できればと考えています。OSはCentOS5です。

よろしくお願いします。
543 : NAME IS - 2009/02/19(木) 18:01:48 ID:p33S2AI3 (-14,-8,+0)
>>542
OSに関係なく可能。
544 : NAME IS - 2009/02/19(木) 18:45:23 ID:??? (+59,+29,-3)
>>541
それどんなシステムなの?
545 : 541 - 2009/02/19(木) 19:01:29 ID:??? (+63,+30,-65)
一件づつにユニークなナンバリングがされたアイテムを3つ用意して
それを登録してもらうんだけど、間違って同じ番号を複数入力されると
既に出来ている参照系に大きな影響が出てしまって
困るので、こういう風にしたいなぁと。

本当なら正規化してテーブル分けて云々するのがスジなのも
わかっているんだけど、よんどころない事情でそれも出来ないんだ
546 : NAME IS - 2009/02/19(木) 22:07:07 ID:??? (+12,-30,-85)
>>541
トリガぐらいしか思い浮かばないな、俺の頭じゃ
該当テーブルの BEFORE INSERT/UPDATE/DELETE で
CREATE TABLE selected (識別子 型 UNIQUE); なテーブルにも反映させる
547 : NAME IS - 2009/02/19(木) 22:41:59 ID:??? (+12,-30,-192)
c1, c2, c3 に入れる値を
任意の自然数nの代わりに
2の(n-1)乗になる数字を入れる

つまり
>>541
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 1 , 2 , 4 );
が成功したとき、

INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 1 , 2 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 8 , 8 , 16 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 16 , 32 , 4 ); も
失敗するような感じになって欲しい。
成功するのは
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 16 , 32 , 64 );
・・・
と置き換える
549 : NAME IS - 2009/02/20(金) 09:44:10 ID:??? (+36,+11,+0)
time型はそのためにある
550 : NAME IS - 2009/02/20(金) 09:54:26 ID:??? (+7,-30,-87)
>>549

開始時刻 | 終了時刻 | 経過時間
16:33:00 | 16:23:00 | 00:10:00
10:40:00 | 10:31:00 | 00:09:00
12:33:00 | 09:21:00 | 03:12:00
13:15:00 | 11:14:00 | 02:01:00
13:19:00 | 10:41:00 | 02:38:00

経過時間は,timediff関数を使って求められたのですが,
経過時間の合計や平均の出し方が分からないんです。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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