MySQLの掲示板をスレッド掲示板に変更する方法とパフォーマンスについて

このQ&Aのポイント
  • プログラム初心者がphpとmysqliを用いて作成したMySQLの掲示板をスレッド掲示板に変更する方法について教えてください。
  • 質問1では、MyISAMで複数のテーブルに同時アクセスすることは可能なのかについて、またテーブルを分割する場合の動作についても教えてください。
  • 質問2では、スレッド掲示板を実現するためのテーブル設計のベストプラクティスについて、1つのテーブルでレスをまとめる方法とスレッドごとにテーブルを分ける方法のパフォーマンスについて教えてください。
回答を見る
  • ベストアンサー

mysqlの掲示板

プログラム初心者です phpとmysqliで簡単な掲示板を作りました。これをスレッド掲示板に変更したいと思っています 質問1 MyISAMの違うテーブルに同時アクセスできるのでしょうか? bbs1とゆうテーブルに同時アクセスはできないのはわかりますがテーブルを二つに分けた場合どうなりますか? 例えばbbs1とbbs2とゆうテーブルを作った場合、bbs1とbbs2に同時に書き込まれた場合でもテーブルが違うと書き込めるのでしょうか? 質問2 2chのようにスレッド掲示板にしたいのですが、テーブルは2つで作れると考えました(スレッドとレス)スレッド番号でレスをまとめるやり方です このような1つのテーブルでレスをまとめた場合、複数のカラムにindexをつけると将来100万行とかになっても軽快に動きますか? それとも、スレッドごとにテーブルを作ったほうがいいのでしょうか? よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • MySQL
  • 回答数1
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>MyISAMの違うテーブルに同時アクセスできるのでしょうか? テーブルが異なればどのエンジンでも同時アクセスは問題ないとおもいます >2chのようにスレッド掲示板にしたいのですが、テーブルは2つで作れると考えました(スレッドとレス)スレッド番号でレスをまとめるやり方です >このような1つのテーブルでレスをまとめた場合、複数のカラムにindexをつけると将来100万行とかになっても軽快に動きますか? テーブルは1個で管理してもいいかもしれません。 親文書がなければスレッドだと判断できるので ただ古いログはパフォーマンスを下げるだけなので 古いデータや所定の上限数までいったデータをdat落ちさせる仕組みを作った方が よいかもしれませんね

flash0
質問者

お礼

回答ありがとうございます 工夫してスレッド型にできました。

関連するQ&A

  • phpの掲示板でレスがあったスレッドを上にしたい

    phpとMySQLでスレッド掲示板を作っています。 掲示板の機能に「レスがあったスレッドを一番上にする」というのを実現したいのですが、どのような仕組み(考え方)をしたらいいのか分かりません。 MySQLには「スレッド用のテーブル」と「レス用のテーブル」がありますが、どのような連携をしたらいいのか・・・ 参考になるサイトなどありましたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • 削除ふらぐ

    プログラム初心者です phpとmysqlで簡単な掲示板を作りました 一つのテーブルでsure_idごとにスレッドをつくり、resu_idでレス番号をつくっています そこで削除フラグがある場合にはそのレスを表示しないようにしたいのです 素人なのでこんな方法しか思い浮かばないのですがこれで大丈夫でしょうか? 5番のスレッドを全て取得し、削除フラグがない行を全て取得 SELECT * FROM bbs WHERE sure_id=5 and dll_flg=0 質問1 削除フラグはどのような立て方が良いでしょうか?0と1でしょうか? 質問2 削除フラグのカラムにもインデックスを張ったほうが速いですか? 質問3 phpでいちいちif文で判定するよりsqlで表示判定したほうが早いですよね? よろしくお願いします

    • ベストアンサー
    • MySQL
  • 新着順に表示

    プログラム初心者です シンプルな掲示板をつくりました ホームページのトップページに新しく書き込まれたスレッドを表示したいです 状況を説明します bbsに書き込まれたらbbsテーブルに行番号を付けてどんどんインサートしていくようにしてます トップページはindex.phpです index.php(トップページ) mysqli(手続き型)のカラム bbsテーブル id (オートインクリメントでつけた行番号) bbs_id (タイトルごとのid。これでタイトルごとにまとめています) title スレタイトル mes 書き込まれた文章 name 書いた人の名前 time 型はdatetimeです(書き込まれた日付) 例えば、下記のように書き込まれたら 新しい書き込みがbbs番号3番のスレが2013-09-10 12:10:00 新しい書き込みがbbs番号5番のスレが2013-09-10 12:00:00 だとしたら 3番のスレへのリンク 5番のスレへのリンク のようにトップにスレへのリンクを書き込みが新しい順に20くらい表示したいです よろしくお願いします

    • ベストアンサー
    • MySQL
  • 掲示板荒らしについて

    某インターネット掲示板(2chではない)で削除人(スレッドを自由に消したりレスを消す等の権限を持つボランティア)を掲示板管理者から依頼され、やっていました。 そして先日、ストレスが溜まっていたのか私はその掲示板の板のスレッドをすべて消してしまいました。 管理者のサルベージによりスレッドはすべて復活したようですが、今日、その掲示板を覗いてみると、警察に届け出たとの管理者からの書き込みがありました。 私は携帯からしょぼい串を通してスレッドの全削除を実行してしまったため、サイバーポリスともなれば私を特定するのも朝飯前だと思います。 今は管理者様と掲示板を利用するユーザー様に対して申し訳ないという気持ちで一杯になり、深く反省している次第です。 管理者から直接権限を貰った為、不正アクセス禁止法には抵触しないと思いますが、このようなケースは法に抵触するようなことがあるのでしょうか?

  • MyISAM から InnoDBに変更

    プログラム初心者です phpとmysqliの手続き型を使っています 簡単な掲示板を作りました MyISAM から InnoDBに変更したいです phpadminから InnoDBにテーブルは変更できました InnoDBを使うときのsqlはMyISAM で使っていたsqlをそのまま使っていいでしょうか?(特に変更するところはないでしょうか?) よろしくお願いします

    • ベストアンサー
    • MySQL
  • Macでは、2chの掲示板でスレッド内のレス検索はどうやってするのでし

    Macでは、2chの掲示板でスレッド内のレス検索はどうやってするのでしょうか? 単語を入力して、それを含んだレスを表示させる方法なんですが… これらは2ちゃんねるビューアが必要なのでしょうか?私は普通に2chを見ています(ビューアは使用したことがありません) 初心者です。よろしくお願い致します

  • sql文でのage sageシステム

    初心者です。よろしくお願いします。 簡易な掲示板を作っているのですが2chの様なage,sageシステム?の文の書き方がわからなくて苦戦しています。 掲示板に使っているテーブルは2つ 一つはスレッド本体のレコードをいれているものと、もう一つはレスなどコメントのレコードが入っています。 現在はスレッド本体のテーブル(ID順)に並べて表示させているのですが、新しいコメントがあればそれを一番上(2chの様に)に動かしたいと思っています。 自分なりに考えたのですがやり方が一向にわかりません。 もし、クエリー文で実現可能でしたらヒントだけでも教えて頂ければ嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • group byで最後のレコードを抽出したい

    group byで特定のカラムをまとめる際に、最後(最新)のレコードを抽出したいのですが 最初(古い)の行が抽出されてしまいます。 例えば、threadカラムとuptimeカラムがあるテーブルBBSで threadカラムをgroup byでまとめる際にuptimeの降順(desc)でまとめたい場合 どのようにしたらいいでしょうか? 【テーブルBBS】 id thread uptime 1 1 1230100000 2 2 1230200000 3 1 1230300000 4 3 1230400000 5 1 1230500000 6 2 1230600000 select * form bbs group by thread order by uptime desc だと thread uptime 3 1230400000 1 1230300000 2 1230200000 になってしまいます。 次のような結果を表示するにはどのようにしたらいいでしょうか。 thread uptime 2 1230600000 1 1230500000 3 1230400000 また、DISTINCTを使うと同じフィールド内に重複したレコードがある場合は最初のレコードのみ表示されますが、最後のレコードのみ表示するにはどのようにすればいいのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 2ch型の掲示板をおきたいのですが…

    2ch型の掲示板を設置しようとおもいます。そこでhttp://br1614.virtualave.net/anno/cgi-bin/bbs/index.htmlのHibbsを設置しようとしたらやり方がよくわかりません。初心者でもわかる説明をお願いします。 もしくは、Hibbs以外で初心者でも設置しやすい2ch型のソースのあるサイトがあれば紹介してください。 よろしく御願い致します。

    • 締切済み
    • CGI
  • 掲示板のDBテーブル設計について

    今phpとmysqlを使って掲示板を作ってみようと考えています。 そこでDBのテーブル設計なのですが、スレッド1つに対してレスポンス用のテーブルを1つ作るか、スレッドとレスポンスのテーブルを1つずつ作成して運用するかどちらがいいか迷ってます。 後者のレスポンステーブルを1つにまとめるのはやはりアクセスが集中しそうなのでよくないでしょうか? よろしくお願いします。