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

私的良スレ書庫

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

元スレMySQL 総合 Part18

mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - megab + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
751 : NAME IS - 2010/11/25(木) 00:06:23 ID:??? (+28,+29,-32)
>>749
ありが㌧
なんで解決策がどこにもないんだよ……orz
とか思ってたら、誰も解決の必要性に駆られなかったのね。

BIGINTにすれば毎秒1億件更新してカウンターを釣り上げても100年は余裕だったのか。
755 : NAME IS - 2010/11/25(木) 14:10:15 ID:??? (+23,+29,+0)
>>754
なるほど、理解できました。ありがとうございます。
756 : NAME IS - 2010/11/25(木) 15:37:24 ID:??? (-14,-24,-105)
稼働中のMySQLに入っているデータを全文検索する必要があり、
その方法を探しております。
ネットで調べると、trittonというプロジェクトが見つかったのですが、
MyISAM限定のためトランザクションが使えないようです。
全文検索とトランザクションを両立出来るような方法は無いでしょうか?
mecabというフリーのエンジンがありますがこれをMySQLのデータと連携させることなどは可能ですか?
全文検索を実現しているWebサイトはたくさん見かけますが一般的にどのように実現されているのかを知りたいです。
757 : NAME IS - 2010/11/25(木) 16:53:44 ID:??? (-24,-30,-165)
>>756
MeCabは以下のいずれの方法でも必要。それ単体でMySQLの全文検索はできない

# MySQL 5.0系
MyISAM + Tritonn用のDBを別に立ててレプリケーションのスレーブにする
全文検索時参照用DBとしてアプリ側で接続先を制御

# MySQL 5.1系
mysqlftppc mecab plugin を使う
これも「まだ」MyISAMしか対応してないはずなので、れぷり(ry


人柱になるならgroongaストレージエンジン(5.1系)
クエリのテスト見る限り、トランザクションは使えない様子


全文検索用にテーブルつくって、マスタ文書の更新、挿入時に
そっちに放りこむようにしてもいいんじゃないかな
758 : 756 - 2010/11/25(木) 19:26:18 ID:??? (+29,+29,-48)
>>757
とても貴重な説明ありがとうございます。
こういう情報はネットで集めるのはなかなか難しいですね。。

レプリケーションにするのは自分には少しハードルが高いので
全文検索用のテーブルを別に作る方法で行こうと思います。
761 : NAME IS - 2010/11/26(金) 22:56:13 ID:??? (-26,-29,-88)
topコマンドを叩くと、mysqldのCPU使用率が常に140%程度になっております。
(load averageは常に6~8程度)

原因としてはやはり重いクエリが実行されている可能性が高いのでしょうか?
スロークエリログを取りたいのですが、mysqld実行時にオプションを付けて起動しないといけなかったようなのでログを取ることが出来ません。
どのように調査を進めればいいのかアドバイスを頂けないでしょうか。
762 : NAME IS - 2010/11/27(土) 01:21:46 ID:??? (-1,-4,-1)
オプションつけて再起動すればいいじゃないか
763 : NAME IS - 2010/11/27(土) 13:54:57 ID:??? (+27,+29,-12)
>>762
実稼動中で今さら再起動できませんコッソリ対処したいんです
っていうことだろ言わせんな恥ずかしい
764 : NAME IS - 2010/11/27(土) 14:16:04 ID:??? (-26,-29,-74)
再起動しても数秒クエリが止まるだけで不整合にはならないし
それでシステム全体が不具合でるならそれはそれで堅牢性がやばい。

とりあえずshow full processlistで秒オーダかかるクエリは見えるから
explain付けて再実行してみたらいいよ。
765 : NAME IS - 2010/11/27(土) 19:16:46 ID:??? (-26,-29,-60)
InnoTopとかツールを入れて、クエリを全部とって、
それぞれexplainして実行計画を見るとか。
まぁCPUがそんだけ上がるのはほぼ間違いなくINDEX使ってない重いクエリだろうね
後は無茶な件数のソートか。
766 : NAME IS - 2010/11/28(日) 02:00:34 ID:bvaFGsGN (+24,+29,-62)
統計解析関係の関数が無くて困ってます
助けてください。
いいリファレンスは無いですか?
768 : NAME IS - 2010/11/30(火) 21:32:36 ID:??? (-29,-27,-19)
>>767
出来ないのでは?
差分ならバイナリログかな?
769 : NAME IS - 2010/12/01(水) 06:53:42 ID:??? (+24,+29,-2)
>>768
ありがとです。
そちらの方を少し調べてみます。
770 : NAME IS - 2010/12/02(木) 17:29:45 ID:??? (-26,-29,-104)
このツールの質問はこちらでよろしいでしょうか?

SQLyog trial -MySQL GUI v8.71 を使って、特定tableを正常な文字で表示したいのですが、

DB内に「・ト」「・・ツ」「・B」と言った化けた文字が出てしまい、
まともに何が書いてあるか分かりません。ここに貼ると形が変わってしまいますが、黒塗りの「?」のような文字だったり、♀だったりします。
おそらくlatin1の文字だと思うのですが、
このように化けてしまった文字を編集する方法はありますでしょうか?数値の欄なので、これらの文字は
何かしらの数字を表していると思います。
771 : NAME IS - 2010/12/03(金) 21:30:49 ID:??? (+15,+5,-121)
稼働中のMySQLのあるテーブルのカラムにインデックスを付加したいのですが、
単純にcreate indexを実行するだけで良いのでしょうか?

自分の認識では、インデックスとは索引テーブルを持つことだという認識なので、
どこかのタイミングでそのテーブルが作成されなければならないと思うのですが、
create indexを実行した時に索引テーブルも作成されるのでしょうか?
create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
772 : NAME IS - 2010/12/03(金) 21:55:27 ID:??? (-19,-29,-124)
>>771
>単純にcreate indexを実行するだけで良いのでしょうか?
Yes

>create indexを実行した時に索引テーブルも作成されるのでしょうか?
Yes (「索引テーブル」とは呼ばないが)
レコード数が多いとそれだけ create index の処理時間も長くなる

>create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
Yes
773 : 771 - 2010/12/03(金) 22:16:56 ID:??? (+30,+29,-55)
>>772
ありがとうございます!
今実際に50万件程度のレコードがあるテーブルに実行してみましたが、10分ぐらいかかりました。
その間テーブルにロックがかかりサービスがほとんど停止状態に。。
すごく焦りましたが何とか上手くいきました。
774 : NAME IS - 2010/12/03(金) 23:56:02 ID:??? (-8,-8,-77)
>>772
>>create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
>Yes

そりゃ違うと思うんだがの。
「create indexが終了した直後から」ならyesだろうが。
775 : NAME IS - 2010/12/04(土) 18:34:39 ID:??? (-29,-30,+0)
レンタルサーバを乗り換えたときにMySQLのバージョンが上がってしまい、これまで
提供していたサービスが使用できなくなって困っています。

以下のようなスクリプトで、PHP5のPDOを使用してアクセスしていているのですが、
$sql = 'UPDATE link SET code=?, site_name=?, site_url=?, banner=?, category=? WHERE code=?';
$stmt = $dbh->prepare($sql);
$stmt->execute(array($new_code,$site_name,$site_url,$banner,$category,$code));
バージョンアップ後は、
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in...
と出てエラーになり動かなくなってしまいました。

errorInfoで出力したところ、
array(1) { [0]=> string(5) "HY093" }
と出ていて、どうも?の数とarrayの引数があっていないような感じです。

なお、
$sql = 'UPDATE link SET code=' . $new_code . ', site_name="' . $site_name . '", site_url="' . $site_url . '", banner="' . $banner . '", category="' . $category . '" WHERE code=' . $code;
のように引数を直書きすると正常に動きました。

ただ似たような部分はほかにも多くあり、できれば今の方式で対応したいです。
原因と対処方法をご教授いただけないでしょうか。
よろしくお願いいたします。
777 : NAME IS - 2010/12/04(土) 22:16:45 ID:??? (+26,+29,-99)
>>776
返信ありがとうございます。
元のサーバーのバージョンはもう確認できないのですが、おそらく
上がっていると思います。
ちなみに現状は、
PHP 5.2.11
MySQL 5.0.87
です。
PHPのバージョンが上がるとそこまで大きな仕様変更が起こったりするのでしょうか。
てっきりこの程度の下位互換はあるのかと思っていましたが。。

また後だしになってしまい申し訳ないのですが、他の場所の稼働確認をしてみたところ、
同じ構文で正常に動いている部分もあることがわかりました。

ということは、上記の書き方が間違っているのでしょうか。。?
781 : NAME IS - 2010/12/06(月) 19:16:28 ID:??? (+22,+29,-1)
タイムシフト視聴できねーのかよ
782 : NAME IS - 2010/12/06(月) 21:27:50 ID:??? (+22,+29,-6)
タイムシフトは終わってからじゃね?
783 : NAME IS - 2010/12/07(火) 15:52:55 ID:??? (-27,-30,-53)
20G程のデータをを持っているdatabaseを削除したのですが、
dfコマンドで確認しても削除前と容量が変わっていません。
しかしdatabaseは削除されています。

drop databaseコマンドではデータ本体は削除されないのでしょうか?
もう使わないdatabaseなのできれいさっぱり削除したいのですが、
どのように削除するのが正しい方法ですか?
788 : NAME IS - 2010/12/07(火) 19:01:28 ID:??? (-27,-30,-42)
リンクされたとこを読めば、、、
bigintのunsighedなら、18446744073709551615まで入るって書いてある。

プログラムから、MySQLへアクセスしてるからでしょ。
変数の型も合わせないと。
791 : NAME IS - 2010/12/07(火) 20:48:05 ID:??? (-27,-30,-59)
+------+----------+
| id | sum(cnt) |
+------+----------+
| 1 | 2000 |
| 2 | 3000 |
| 3 | 1000 |
| 4 | 3000 |
| 5 | 1000 |
| NULL | 10000 |
+------+----------+
6 rows in set
792 : NAME IS - 2010/12/07(火) 20:48:45 ID:??? (-27,-30,-73)
この最後のnullの所に '小計'という文字を入れたいのですが
select
case
when id is null then '小計'
else id
end as i
,sum(cnt)
from rolluptest
group by id with rollup;
でもNULLのままです。
どうすれば宜しいんですかね
794 : NAME IS - 2010/12/07(火) 21:02:34 ID:??? (-27,-25,-13)
>> 792

http://dev.mysql.com/doc/refman/5.1/ja/group-by-modifiers.html

クライアント側でなんとかせい、ってことではないですかね
795 : NAME IS - 2010/12/07(火) 21:48:43 ID:??? (-5,-3,-33)
>それらをクエリそのものの中で NULL 値としてテストすることは
できません。
http://dev.mysql.com/doc/refman/5.1/ja/group-by-modifiers.html

なんてこったいw

>クライアント側でなんとかせい、ってことではないですかね

わかりました w
796 : NAME IS - 2010/12/07(火) 22:06:41 ID:??? (-27,-30,-201)
俺の環境だと上手くいくんだけど・・・

mysql> select
-> case
-> when id is null then '小計'
-> else id
-> end as i
-> ,sum(cnt)
-> from test
-> group by id with rollup;
+------+----------+
| i | sum(cnt) |
+------+----------+
| 1 | 2000 |
| 2 | 3000 |
| 3 | 1000 |
| 4 | 3000 |
| 5 | 1000 |
| 小計 | 10000 |
+------+----------+
6 rows in set (0.02 sec)

mysql> select version();
+------------------+
| version() |
+------------------+
| 5.1.50-community |
+------------------+
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - megab + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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