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

みんなの評価 : ○
レスフィルター : (試験中)
jikoku は TIME型、
今日の日付とデータベースの時刻から日時を作り出したいんだけど
SELECT ADDTIME( CURDATE(), jikoku ) FROM unko;
ってやったら 0000-00-00 00:00:00 になっちゃう。なんでだ?
今日の日付とデータベースの時刻から日時を作り出したいんだけど
SELECT ADDTIME( CURDATE(), jikoku ) FROM unko;
ってやったら 0000-00-00 00:00:00 になっちゃう。なんでだ?
>>653
第1引数は、時刻型か日付時刻型だど。
第1引数は、時刻型か日付時刻型だど。
データを保持してるテーブルに対して、カラム名を変更したり型を変えると中身のデータはどうなるのでしょうか?
カラムを削除したらそのカラムに関するデータが失われるだけですか?
カラムを削除したらそのカラムに関するデータが失われるだけですか?
>>656
ありがとうございます。
データの型を変えてもデータが失われないというのは意外でした。
実は会社のデータベースをいじる業務を任されましてテーブルの型を変えるのが怖かったのです。
動作中のWebサービスのテーブル構造を変えるのはよく行われることなのでしょうか?
ありがとうございます。
データの型を変えてもデータが失われないというのは意外でした。
実は会社のデータベースをいじる業務を任されましてテーブルの型を変えるのが怖かったのです。
動作中のWebサービスのテーブル構造を変えるのはよく行われることなのでしょうか?
型変更中はテーブルロックがかかりシステムが停止しますので、
行われません。
別のところできちんとテスト、リハーサルをして
データのバックアップを取って何が起こってもいいようにしてから
取り組みましょう。
行われません。
別のところできちんとテスト、リハーサルをして
データのバックアップを取って何が起こってもいいようにしてから
取り組みましょう。
おおなるほど…アドバイスありがとうございました。
カラムを変える時はバックアップ取って慎重に行うようにします。
カラムを変える時はバックアップ取って慎重に行うようにします。
Bash等で、ディレクトリやファイルの引数リストを */*とかにした場合は、
コマンドに渡る前にbashが各ディレクトリ/ファイルに展開してからコマンドに渡す。
コマンドに渡る前にbashが各ディレクトリ/ファイルに展開してからコマンドに渡す。
質問させてください。
3つのフィールドfieldA,fieldB,fieldCがあるとします。
fieldAとfieldBはINT型です。
fieldC = fieldA +fieldB
としたい場合、fieldCはどのようにCREATEしたら良いでしょうか?
3つのフィールドfieldA,fieldB,fieldCがあるとします。
fieldAとfieldBはINT型です。
fieldC = fieldA +fieldB
としたい場合、fieldCはどのようにCREATEしたら良いでしょうか?
テーブル考えるのも難しいね。
できるだけ幅広く対応できるようにリレーショナル組むと
ばっらばらで、どこに何のデータがあるのかわからなくなるし、一気に複数のテーブルを
読み込んで最終的にデータが重くなる。
かといってシンプルに組もうと思うとあとで拡張するのがしんどくなる。
テーブルの組み方もやっぱりセンスなのかな?
みんなはどう?
一度組んであーしとけばよかったー・・・って思うときある?
できるだけ幅広く対応できるようにリレーショナル組むと
ばっらばらで、どこに何のデータがあるのかわからなくなるし、一気に複数のテーブルを
読み込んで最終的にデータが重くなる。
かといってシンプルに組もうと思うとあとで拡張するのがしんどくなる。
テーブルの組み方もやっぱりセンスなのかな?
みんなはどう?
一度組んであーしとけばよかったー・・・って思うときある?
5.1.42 WinXP
my.iniで
[mysqld]
transaction-isolation = SERIALIZABLE
にしたんだけど、それが指定されたことってコマンドではどうやって確認出来ます?
show variables;
だと件数が多すぎて判らんっすw
my.iniで
[mysqld]
transaction-isolation = SERIALIZABLE
にしたんだけど、それが指定されたことってコマンドではどうやって確認出来ます?
show variables;
だと件数が多すぎて判らんっすw
会社のシステムのMySQLのパフォーマンス調査をしています。
ログを調べてみると大量のデータが入ったテーブルから
SELECT * FROM ~~~ LIMIT 1
というSQLでデータを取得しているクエリがたくさんあったのが気になりました。
LIMIT 1という指定は対象テーブルに含まれるデータ量に関係なく
1件のデータを読むだけの処理になるのでしょうか?
あるいは重い処理になりますか?
ログを調べてみると大量のデータが入ったテーブルから
SELECT * FROM ~~~ LIMIT 1
というSQLでデータを取得しているクエリがたくさんあったのが気になりました。
LIMIT 1という指定は対象テーブルに含まれるデータ量に関係なく
1件のデータを読むだけの処理になるのでしょうか?
あるいは重い処理になりますか?
>1件のデータを読むだけの処理になるのでしょうか?
そうですよ。
ORDER BY併用のときはかなり軽くなる可能性。
最小値、もしくは最大値だけ算出されれば、後は何億件該当があっても関係無いはずだもんね。
そうですよ。
ORDER BY併用のときはかなり軽くなる可能性。
最小値、もしくは最大値だけ算出されれば、後は何億件該当があっても関係無いはずだもんね。
回答ありがとうございました。すっきりしました。
違う箇所を調査してみることにします。
違う箇所を調査してみることにします。
>>669
slow ログと profile を有効活用すべし
version や環境によるけど一定時間 slowlog を 0秒にして、
全クエリを取得し、それを myslowdump で解析したら
改善すべきクエリが見えてきやすくなる。
# -s オプションの 「t: query time」 などを利用
0.1 秒程度だから大丈夫とか思ってるようなクエリでも、
それが全処理時間の 50% をしめるならば、そいつを半分の
時間で処理できるようにするだけで全体としては 25%稼げる。
クエリによっては半分にするのもそれほど大変じゃないしね。
slow ログと profile を有効活用すべし
version や環境によるけど一定時間 slowlog を 0秒にして、
全クエリを取得し、それを myslowdump で解析したら
改善すべきクエリが見えてきやすくなる。
# -s オプションの 「t: query time」 などを利用
0.1 秒程度だから大丈夫とか思ってるようなクエリでも、
それが全処理時間の 50% をしめるならば、そいつを半分の
時間で処理できるようにするだけで全体としては 25%稼げる。
クエリによっては半分にするのもそれほど大変じゃないしね。
MySQLサーバに接続回数が何回あったとか確認する方法はありますでしょうか?
今アプリケーションを作っていて、
オーバヘッドを少なくするために、できるだけ接続回数を少なくして処理するよう組もうと思ってるのですが、
アプリケーション側の挙動(関数などの)がイマイチ理解できていないもので、
実際にどのくらい接続してるのか目で確かめることができれば、試行錯誤できるのですが、
FTPサーバのようにリアルタイムでユーザの接続状況がわかるような機能や、
外部アプリケーションがあったら教えてください。
今アプリケーションを作っていて、
オーバヘッドを少なくするために、できるだけ接続回数を少なくして処理するよう組もうと思ってるのですが、
アプリケーション側の挙動(関数などの)がイマイチ理解できていないもので、
実際にどのくらい接続してるのか目で確かめることができれば、試行錯誤できるのですが、
FTPサーバのようにリアルタイムでユーザの接続状況がわかるような機能や、
外部アプリケーションがあったら教えてください。
>>674
675 でも書いてあるけど
「show global status like 'Connections';」
でmysqld起動後の接続合計が出るのでそれの差分をとる。
うちでは、1分毎に cron で取得して秒で割ってグラフ化してる。
専用のAPIがあれば負荷やMax_Connectionなどを気にしなくていいので
もっとうまい方法考えるんだけど、恐らくない。
あとは、「show processlist;」をみれば現在の接続数がわかる。
675 でも書いてあるけど
「show global status like 'Connections';」
でmysqld起動後の接続合計が出るのでそれの差分をとる。
うちでは、1分毎に cron で取得して秒で割ってグラフ化してる。
専用のAPIがあれば負荷やMax_Connectionなどを気にしなくていいので
もっとうまい方法考えるんだけど、恐らくない。
あとは、「show processlist;」をみれば現在の接続数がわかる。
>>674
DTrace が使える環境なら connection-start プローブを拾えば
リアルタイムで観測出来るよ。
http://dev.mysql.com/doc/refman/5.4/en/dba-dtrace-ref-connection.html
DTrace は Solaris, Mac OS X, FreeBSD なんかで使えるので、
解析用に一台用意しておくと重宝します。
DTrace が使える環境なら connection-start プローブを拾えば
リアルタイムで観測出来るよ。
http://dev.mysql.com/doc/refman/5.4/en/dba-dtrace-ref-connection.html
DTrace は Solaris, Mac OS X, FreeBSD なんかで使えるので、
解析用に一台用意しておくと重宝します。
>>677
あ、日本男児がいるぞ。
あ、日本男児がいるぞ。
root権のない共用レンタルサーバにおいてエンジンがイノデービーのテーブルのバックアップをとりたいのですが、
調べても停止させることが前提の記事が多く、
公式で停止させないで取れるツールみたいなのが紹介されてましたが、
有料な上リンクぎれだったりと、なかなか有用な情報にたどり着けませんでした。
そこで、
show tablesでテーブル一覧を取得後に、
show create table テーブル名で返ってきた値からSQLの部分を取り出したのをバックアップし、
select * from テーブル名(たくさんデータが入ってるテーブルはlimitをつけて分割して)で返ってきた値を、
insert文に加工したものをバックアップっていうように考えているのですが、おかしいですか?
もっと適切な方法がありますでしょうか?
調べても停止させることが前提の記事が多く、
公式で停止させないで取れるツールみたいなのが紹介されてましたが、
有料な上リンクぎれだったりと、なかなか有用な情報にたどり着けませんでした。
そこで、
show tablesでテーブル一覧を取得後に、
show create table テーブル名で返ってきた値からSQLの部分を取り出したのをバックアップし、
select * from テーブル名(たくさんデータが入ってるテーブルはlimitをつけて分割して)で返ってきた値を、
insert文に加工したものをバックアップっていうように考えているのですが、おかしいですか?
もっと適切な方法がありますでしょうか?
select flag, count(*) as ct from table group by flag;
でflagでグループ分けした件数をctで取得できるんですが、このctが3以上の結果のみを出そうと、where句にctを使うとエラーになります。
どうすればやりたいことができるでしょうか?
でflagでグループ分けした件数をctで取得できるんですが、このctが3以上の結果のみを出そうと、where句にctを使うとエラーになります。
どうすればやりたいことができるでしょうか?
>>686
having
having
>>688
どうやって入れたの?
どうやって入れたの?
会社のシステムのMySQLを運用して3ヶ月になります。
一つのDBサーバで4つのサービスを動かしているため、かなり負担がかかっています。
状況改善を指示されたため自分なりにネットで調べたところ、レプリケーションを行うのが良さそうだという結論になりました。
しかし、サーバをいじる経験が乏しい上、データベース自体の経験も3ヶ月です。
レプリケーションを行うことで既存のデータが壊れてしまうのがとても怖いです。
サーバを追加してレプリケーションを行うのは、素人に毛が生えたような技術者でも行える作業でしょうか?
あるいはリスクがあるのであれば他の対処法を教えていただけないでしょうか。
宜しくお願いします。
一つのDBサーバで4つのサービスを動かしているため、かなり負担がかかっています。
状況改善を指示されたため自分なりにネットで調べたところ、レプリケーションを行うのが良さそうだという結論になりました。
しかし、サーバをいじる経験が乏しい上、データベース自体の経験も3ヶ月です。
レプリケーションを行うことで既存のデータが壊れてしまうのがとても怖いです。
サーバを追加してレプリケーションを行うのは、素人に毛が生えたような技術者でも行える作業でしょうか?
あるいはリスクがあるのであれば他の対処法を教えていただけないでしょうか。
宜しくお願いします。
クエリーやサーバーのチューニングは十分行っているのかな
重い原因は判ってる?
レプリケーションしても参照系しか分離出来ないよ
5、6台並べてClusterとかもあるけど、ベンダー呼んだ方が良い
単純にサーバーのメモリ増やすだけでも良いかもしれないし
マスターを複数にすると同期処理が面倒だし
そもそも、業務アプリ自体の改修が可能なのかな
重い原因は判ってる?
レプリケーションしても参照系しか分離出来ないよ
5、6台並べてClusterとかもあるけど、ベンダー呼んだ方が良い
単純にサーバーのメモリ増やすだけでも良いかもしれないし
マスターを複数にすると同期処理が面倒だし
そもそも、業務アプリ自体の改修が可能なのかな
ストレージ負荷とかメモリ負荷とかCPU負荷とかまず調べないとわからんちん
下手にレプリするより、より強力なサーバーに適切なチューニングして動かしたほうがいいんでねーの?
下手にレプリするより、より強力なサーバーに適切なチューニングして動かしたほうがいいんでねーの?
1つのサーバで4つのサービス動かすのやめて
2つないし4つのサーバで動かせばいいじゃん
レプリケーションいらないじゃん
2つないし4つのサーバで動かせばいいじゃん
レプリケーションいらないじゃん
MySQLにinsertしたはずのレコードが入っていないという現象が
時々起こります。
具体的には、ブラウザからFORMで10個ほどの自然数のデータを送り、
PHPで、データ処理をして正誤を表示します。
送った10個のデータは、ひとつのレコードとしてMySQLに格納します。
通常は正常に動作しますが、一見正常に動作しているように見えて、
データベースに、この10個のデータのレコードが残っていないことがあります。
60~70回やって3回起こりました。
特にエラー表示などはなく、ブラウザには結果が正常に表示されます。
また、同時にデータベースとは他のやり取りもしており、これらも正常に動作し、
そのレコードも残っているので、データベースとの接続には問題ないようです。
このようなことはよく起こるのでしょうか?
対策としてinsertしたデータを、MySQLから再度呼び出して確認するなどの
機能を加えた方が良いのでしょうか?
時々起こります。
具体的には、ブラウザからFORMで10個ほどの自然数のデータを送り、
PHPで、データ処理をして正誤を表示します。
送った10個のデータは、ひとつのレコードとしてMySQLに格納します。
通常は正常に動作しますが、一見正常に動作しているように見えて、
データベースに、この10個のデータのレコードが残っていないことがあります。
60~70回やって3回起こりました。
特にエラー表示などはなく、ブラウザには結果が正常に表示されます。
また、同時にデータベースとは他のやり取りもしており、これらも正常に動作し、
そのレコードも残っているので、データベースとの接続には問題ないようです。
このようなことはよく起こるのでしょうか?
対策としてinsertしたデータを、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 総合 Part18 (986) - [94%] - 2011/1/17 15:46
- 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 ○
トップメニューへ / →のくす牧場書庫について