私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part18
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>749
ありが㌧
なんで解決策がどこにもないんだよ……orz
とか思ってたら、誰も解決の必要性に駆られなかったのね。
BIGINTにすれば毎秒1億件更新してカウンターを釣り上げても100年は余裕だったのか。
ありが㌧
なんで解決策がどこにもないんだよ……orz
とか思ってたら、誰も解決の必要性に駆られなかったのね。
BIGINTにすれば毎秒1億件更新してカウンターを釣り上げても100年は余裕だったのか。
>>754
なるほど、理解できました。ありがとうございます。
なるほど、理解できました。ありがとうございます。
稼働中のMySQLに入っているデータを全文検索する必要があり、
その方法を探しております。
ネットで調べると、trittonというプロジェクトが見つかったのですが、
MyISAM限定のためトランザクションが使えないようです。
全文検索とトランザクションを両立出来るような方法は無いでしょうか?
mecabというフリーのエンジンがありますがこれをMySQLのデータと連携させることなどは可能ですか?
全文検索を実現しているWebサイトはたくさん見かけますが一般的にどのように実現されているのかを知りたいです。
その方法を探しております。
ネットで調べると、trittonというプロジェクトが見つかったのですが、
MyISAM限定のためトランザクションが使えないようです。
全文検索とトランザクションを両立出来るような方法は無いでしょうか?
mecabというフリーのエンジンがありますがこれをMySQLのデータと連携させることなどは可能ですか?
全文検索を実現しているWebサイトはたくさん見かけますが一般的にどのように実現されているのかを知りたいです。
>>756
MeCabは以下のいずれの方法でも必要。それ単体でMySQLの全文検索はできない
# MySQL 5.0系
MyISAM + Tritonn用のDBを別に立ててレプリケーションのスレーブにする
全文検索時参照用DBとしてアプリ側で接続先を制御
# MySQL 5.1系
mysqlftppc mecab plugin を使う
これも「まだ」MyISAMしか対応してないはずなので、れぷり(ry
人柱になるならgroongaストレージエンジン(5.1系)
クエリのテスト見る限り、トランザクションは使えない様子
全文検索用にテーブルつくって、マスタ文書の更新、挿入時に
そっちに放りこむようにしてもいいんじゃないかな
MeCabは以下のいずれの方法でも必要。それ単体でMySQLの全文検索はできない
# MySQL 5.0系
MyISAM + Tritonn用のDBを別に立ててレプリケーションのスレーブにする
全文検索時参照用DBとしてアプリ側で接続先を制御
# MySQL 5.1系
mysqlftppc mecab plugin を使う
これも「まだ」MyISAMしか対応してないはずなので、れぷり(ry
人柱になるならgroongaストレージエンジン(5.1系)
クエリのテスト見る限り、トランザクションは使えない様子
全文検索用にテーブルつくって、マスタ文書の更新、挿入時に
そっちに放りこむようにしてもいいんじゃないかな
>>757
とても貴重な説明ありがとうございます。
こういう情報はネットで集めるのはなかなか難しいですね。。
レプリケーションにするのは自分には少しハードルが高いので
全文検索用のテーブルを別に作る方法で行こうと思います。
とても貴重な説明ありがとうございます。
こういう情報はネットで集めるのはなかなか難しいですね。。
レプリケーションにするのは自分には少しハードルが高いので
全文検索用のテーブルを別に作る方法で行こうと思います。
topコマンドを叩くと、mysqldのCPU使用率が常に140%程度になっております。
(load averageは常に6~8程度)
原因としてはやはり重いクエリが実行されている可能性が高いのでしょうか?
スロークエリログを取りたいのですが、mysqld実行時にオプションを付けて起動しないといけなかったようなのでログを取ることが出来ません。
どのように調査を進めればいいのかアドバイスを頂けないでしょうか。
(load averageは常に6~8程度)
原因としてはやはり重いクエリが実行されている可能性が高いのでしょうか?
スロークエリログを取りたいのですが、mysqld実行時にオプションを付けて起動しないといけなかったようなのでログを取ることが出来ません。
どのように調査を進めればいいのかアドバイスを頂けないでしょうか。
再起動しても数秒クエリが止まるだけで不整合にはならないし
それでシステム全体が不具合でるならそれはそれで堅牢性がやばい。
とりあえずshow full processlistで秒オーダかかるクエリは見えるから
explain付けて再実行してみたらいいよ。
それでシステム全体が不具合でるならそれはそれで堅牢性がやばい。
とりあえずshow full processlistで秒オーダかかるクエリは見えるから
explain付けて再実行してみたらいいよ。
InnoTopとかツールを入れて、クエリを全部とって、
それぞれexplainして実行計画を見るとか。
まぁCPUがそんだけ上がるのはほぼ間違いなくINDEX使ってない重いクエリだろうね
後は無茶な件数のソートか。
それぞれexplainして実行計画を見るとか。
まぁCPUがそんだけ上がるのはほぼ間違いなくINDEX使ってない重いクエリだろうね
後は無茶な件数のソートか。
統計解析関係の関数が無くて困ってます
助けてください。
いいリファレンスは無いですか?
助けてください。
いいリファレンスは無いですか?
このツールの質問はこちらでよろしいでしょうか?
SQLyog trial -MySQL GUI v8.71 を使って、特定tableを正常な文字で表示したいのですが、
DB内に「・ト」「・・ツ」「・B」と言った化けた文字が出てしまい、
まともに何が書いてあるか分かりません。ここに貼ると形が変わってしまいますが、黒塗りの「?」のような文字だったり、♀だったりします。
おそらくlatin1の文字だと思うのですが、
このように化けてしまった文字を編集する方法はありますでしょうか?数値の欄なので、これらの文字は
何かしらの数字を表していると思います。
SQLyog trial -MySQL GUI v8.71 を使って、特定tableを正常な文字で表示したいのですが、
DB内に「・ト」「・・ツ」「・B」と言った化けた文字が出てしまい、
まともに何が書いてあるか分かりません。ここに貼ると形が変わってしまいますが、黒塗りの「?」のような文字だったり、♀だったりします。
おそらくlatin1の文字だと思うのですが、
このように化けてしまった文字を編集する方法はありますでしょうか?数値の欄なので、これらの文字は
何かしらの数字を表していると思います。
稼働中のMySQLのあるテーブルのカラムにインデックスを付加したいのですが、
単純にcreate indexを実行するだけで良いのでしょうか?
自分の認識では、インデックスとは索引テーブルを持つことだという認識なので、
どこかのタイミングでそのテーブルが作成されなければならないと思うのですが、
create indexを実行した時に索引テーブルも作成されるのでしょうか?
create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
単純にcreate indexを実行するだけで良いのでしょうか?
自分の認識では、インデックスとは索引テーブルを持つことだという認識なので、
どこかのタイミングでそのテーブルが作成されなければならないと思うのですが、
create indexを実行した時に索引テーブルも作成されるのでしょうか?
create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
>>771
>単純にcreate indexを実行するだけで良いのでしょうか?
Yes
>create indexを実行した時に索引テーブルも作成されるのでしょうか?
Yes (「索引テーブル」とは呼ばないが)
レコード数が多いとそれだけ create index の処理時間も長くなる
>create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
Yes
>単純にcreate indexを実行するだけで良いのでしょうか?
Yes
>create indexを実行した時に索引テーブルも作成されるのでしょうか?
Yes (「索引テーブル」とは呼ばないが)
レコード数が多いとそれだけ create index の処理時間も長くなる
>create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
Yes
>>772
ありがとうございます!
今実際に50万件程度のレコードがあるテーブルに実行してみましたが、10分ぐらいかかりました。
その間テーブルにロックがかかりサービスがほとんど停止状態に。。
すごく焦りましたが何とか上手くいきました。
ありがとうございます!
今実際に50万件程度のレコードがあるテーブルに実行してみましたが、10分ぐらいかかりました。
その間テーブルにロックがかかりサービスがほとんど停止状態に。。
すごく焦りましたが何とか上手くいきました。
>>772
>>create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
>Yes
そりゃ違うと思うんだがの。
「create indexが終了した直後から」ならyesだろうが。
>>create indexを実行した直後から、インデックスの効果が現れると考えて間違いないですか?
>Yes
そりゃ違うと思うんだがの。
「create indexが終了した直後から」ならyesだろうが。
レンタルサーバを乗り換えたときに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;
のように引数を直書きすると正常に動きました。
ただ似たような部分はほかにも多くあり、できれば今の方式で対応したいです。
原因と対処方法をご教授いただけないでしょうか。
よろしくお願いいたします。
提供していたサービスが使用できなくなって困っています。
以下のようなスクリプトで、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;
のように引数を直書きすると正常に動きました。
ただ似たような部分はほかにも多くあり、できれば今の方式で対応したいです。
原因と対処方法をご教授いただけないでしょうか。
よろしくお願いいたします。
>>776
返信ありがとうございます。
元のサーバーのバージョンはもう確認できないのですが、おそらく
上がっていると思います。
ちなみに現状は、
PHP 5.2.11
MySQL 5.0.87
です。
PHPのバージョンが上がるとそこまで大きな仕様変更が起こったりするのでしょうか。
てっきりこの程度の下位互換はあるのかと思っていましたが。。
また後だしになってしまい申し訳ないのですが、他の場所の稼働確認をしてみたところ、
同じ構文で正常に動いている部分もあることがわかりました。
ということは、上記の書き方が間違っているのでしょうか。。?
返信ありがとうございます。
元のサーバーのバージョンはもう確認できないのですが、おそらく
上がっていると思います。
ちなみに現状は、
PHP 5.2.11
MySQL 5.0.87
です。
PHPのバージョンが上がるとそこまで大きな仕様変更が起こったりするのでしょうか。
てっきりこの程度の下位互換はあるのかと思っていましたが。。
また後だしになってしまい申し訳ないのですが、他の場所の稼働確認をしてみたところ、
同じ構文で正常に動いている部分もあることがわかりました。
ということは、上記の書き方が間違っているのでしょうか。。?
20G程のデータをを持っているdatabaseを削除したのですが、
dfコマンドで確認しても削除前と容量が変わっていません。
しかしdatabaseは削除されています。
drop databaseコマンドではデータ本体は削除されないのでしょうか?
もう使わないdatabaseなのできれいさっぱり削除したいのですが、
どのように削除するのが正しい方法ですか?
dfコマンドで確認しても削除前と容量が変わっていません。
しかしdatabaseは削除されています。
drop databaseコマンドではデータ本体は削除されないのでしょうか?
もう使わないdatabaseなのできれいさっぱり削除したいのですが、
どのように削除するのが正しい方法ですか?
リンクされたとこを読めば、、、
bigintのunsighedなら、18446744073709551615まで入るって書いてある。
プログラムから、MySQLへアクセスしてるからでしょ。
変数の型も合わせないと。
bigintのunsighedなら、18446744073709551615まで入るって書いてある。
プログラムから、MySQLへアクセスしてるからでしょ。
変数の型も合わせないと。
+------+----------+
| id | sum(cnt) |
+------+----------+
| 1 | 2000 |
| 2 | 3000 |
| 3 | 1000 |
| 4 | 3000 |
| 5 | 1000 |
| NULL | 10000 |
+------+----------+
6 rows in set
| id | sum(cnt) |
+------+----------+
| 1 | 2000 |
| 2 | 3000 |
| 3 | 1000 |
| 4 | 3000 |
| 5 | 1000 |
| NULL | 10000 |
+------+----------+
6 rows in set
この最後のnullの所に '小計'という文字を入れたいのですが
select
case
when id is null then '小計'
else id
end as i
,sum(cnt)
from rolluptest
group by id with rollup;
でもNULLのままです。
どうすれば宜しいんですかね
select
case
when id is null then '小計'
else id
end as i
,sum(cnt)
from rolluptest
group by id with rollup;
でもNULLのままです。
どうすれば宜しいんですかね
>それらをクエリそのものの中で NULL 値としてテストすることは
できません。
http://dev.mysql.com/doc/refman/5.1/ja/group-by-modifiers.html
なんてこったいw
>クライアント側でなんとかせい、ってことではないですかね
わかりました w
できません。
http://dev.mysql.com/doc/refman/5.1/ja/group-by-modifiers.html
なんてこったいw
>クライアント側でなんとかせい、ってことではないですかね
わかりました w
俺の環境だと上手くいくんだけど・・・
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 |
+------------------+
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 スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- MySQL 総合 Part12 (1001) - [94%] - 2008/1/30 17:34 ○
- MySQL 総合 Part13 (996) - [94%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part14 (1001) - [94%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part15 (1001) - [94%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part17 (1001) - [94%] - 2010/6/10 20:47 ○
- MySQL 総合 Part19 (982) - [94%] - 2011/6/9 2:33
- MySQL 総合 Part26 (860) - [89%] - 2023/2/2 9:30
- MySQL 総合 Part20 (995) - [89%] - 2011/10/17 4:48
- MySQL 総合 Part21 (1001) - [89%] - 2011/12/25 22:16
- MySQL 総合 Part22 (1001) - [89%] - 2012/7/10 16:45
- MySQL 総合 Part23 (992) - [89%] - 2013/8/11 17:00
- MySQL 総合 Part24 (1010) - [89%] - 2015/2/14 4:46
- MySQL 総合 Part25 (947) - [89%] - 2017/6/18 6:30
- MySQL vs PostgreSQL Part2 (941) - [31%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について