2010年6月 3日

[mysql 15326] Re: [mysql 15323] Re: フィールド数とレコード数のパフォーマンス差について

らっちょ らっちょ 様,

増田です。返信遅くなり申し訳ありません。

2010年6月2日16:31 らっちょ らっちょ <zon1966@xxxxx>:

>  CentOS5.3 & MySQL5.1.41 & PHP5.3.1
>  Server cpu:Opteron1352 memory:8G

> の環境で動かしております。
> 最大レコード数は約240万ですが、快適に作動しております。
>
240万ですか。1万とか5万で悩む程度ではないのですね。
今はまだ検証サーバを使っている段階で、実稼働させるサーバがまだ決まっていないため、
上記の情報、参考にさせていただければと思います。


> さて、お問合せの件ですが
>> 一ヶ月目で、130ぐらいレコード数が増えます。
>> これを1000ヶ月とか10000ヶ月になった場合、膨大なレコード数になり、パフォーマンスが落ちないか心配な面があります。
> ミヤタさんも仰っていますが、1000ヶ月で13万、10000ヶ月(約833年)で130万レコードと
> あまり多くはないように思います。
> パフォーマンスの心配はしなくても大丈夫だと思います。
> (古いPCでスペックが低すぎると分かりませんが)
>
130万でも多くないのですね。勉強になります。

> それより気になったのは、
> ・その月のaction回数を調べて今回可能か判断する場合
>   table1)カラムを順に調べて空きがあればactionへ
>   table2)その月の件数を調べて10未満ならactionへ
>  が必要と思われますが、table2の方が楽だと思います。
>
> ・なんらかの集計をされますでしょうか
>   月に10回未満が許されるのなら個人別action状況
>   行為日が特定でなければ、日別のaction数 とか
>  集計されるのならtable2でないと大変のような気がします。
>
集計というか、日替わりに、アクションの対象を取り出したいと考えています(集計もしますが、まず一試合単位での取りやすさを優先しています)。
具体的に申しますと、

ある1試合があったとして、10名参加していたとします。
それで行為日は確実に特定できますので、
WHERE句で、行為日と試合ID, アクション種別を指定し、その行為を行ったユーザIDとその行為の対象ユーザIDを取りたいと考えています。

> ・その月のaction回数を調べて今回可能か判断する場合
>   table1)カラムを順に調べて空きがあればactionへ
>   table2)その月の件数を調べて10未満ならactionへ

ということですが、行為日が特定できるため、table1であれば、その行為日のアクションカラムにデータを入れられますし、
table2であれば、行為日カラムと、アクションカラムを設けて、基本は10未満だと思いますので、そのままデータをいれることで解決できます。

> ・なんらかの集計をされますでしょうか
>   月に10回未満が許されるのなら個人別action状況
>   行為日が特定でなければ、日別のaction数 とか
>  集計されるのならtable2でないと大変のような気がします。

集計もしたいですが、集計したいデータとしては、
・どれほどアクション対象になったか(全試合を通して。アクション別も含めて)
・どれほどそのアクションをしたか(同上)

なので、個人別に関しては集計したいと思っております。
ただ、日別のアクション数などは求めていないですね。
その日のアクションに関する情報は必要ですが、日別で何か求めることは多分ないと思いますので。

正しい返答になってますかね。。。理解できていない部分があるような気もしますので、
もしおかしな点がありましたら、ご指摘ください。


> 以上少しでもお役に立てればと思い、レスいたします。
> #MySQL(データベース)で、楽&幸になる人が増えることを願ってます
>
ありがとうございます。
今までブログ設置とかで勝手にテーブルを作ってくれるものばかり利用していて、
自分で設計するということがなかっため、本当にためになります。
参考にさせていただきますね。


増田
--
mailto:masuken@xxxxx

投稿者 xml-rpc : 2010年6月 3日 13:29
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/96107
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。