現在、Windows2003server+Apache2.0.59+PHP5.2.6の環境のサーバとMySQL4.0.26の環境のサーバがあります。
ibdataのファイルサイズが10GBを超えています。使用しているデータベースは1つだけです。
この度、パフォーマンスの向上のためデータベースを分割すればいいのではないかと検証中です。
データベース分割にあたってMySQL4.1.22の環境を用意して、my.iniにinnodb_file_per_tableの記述を追加しました。
そして、データは分類ごとにデータベースを分けてレコードを格納しました。my.iniのパラメタは4.0の時とほぼ同等に設定しました。
この状態で検証をすると、4.0(分割なし)の状態と変わらないか少し遅いぐらいです。
この手法は、パフォーマンス向上を目的とした場合間違っていますか?
間違っている場合は、他にどのような方法がありますか?
SQL文でのチューニングは試行錯誤の結果のものを実行しています。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
データベースを分割しても、変わらないと思います。
ざっとMySQLのデータのあるフォルダを見ると、
1)テーブル定義やその他位置情報を保持していると見られる.frmファイル(各テーブルにつき1つ)
2)データが入っている巨大なファイル
に分かれると思いますが、
処理を考えたとき、まず1)のファイルを見にいき、次に2)のファイルから部分的に切り出す(読み出す)、という処理があるはずです。
(メモリから読むにしても同等の処理がどこかで発生するはずです。)
で、データベースを切り分けたときに、2)のファイルも切り分かれるかというと、そうではありません。データベース数と2)のファイル数は関係がありません。
以上のことから類推するに、データベースを切り分けても、結局参照しに行く実体ファイルの大きさは変わらないことから、速度は大して変化しないか、データベースの切り替えの分だけ遅くなる気がします。
(興味があるのが、4.0系と4.1系のパフォーマンスの差です。日本語を含むカラムがあると4.1系はパフォーマンスが低下するのでは・・?と個人的に思ってますが、どうなんでしょう?)
アドバイスありがとうございます。
データベースを分割しても変わらないんですか。
一つ確認させていただきたいのですが、ご指摘の内容の(2)の巨大なファイルについてですが、これは「ibdataファイル」のことですよね。
設定ファイルmy.iniに【innodb_file_per_table】の記述をすると個々のテーブルごとにファイルが作成されます。テーブル毎なので、分割したデータベースそれぞれにファイルが作成されます。
この場合でも、ご指摘の内容の実体ファイルの大きさは変わらないのでしょうか?
4.0系と4.1系では、日本語を含むカラム名があるとパフォーマンスが低下するとのことですが、知りませんでした。
日本語を含むカラムが作成できるのも知りませんでした。
No.1
- 回答日時:
分割したデータを結合してSQLで抽出しているなら
結合する分処理が重くなるので前よりおそくなるでしょうね。
効率的なアクセスができるようなデータベースの設計がされていれば
速くなるはずです
アドバイスありがとうございます。
分割したデータベースはデータベース内での結合は行っています。
yambejpさんが言われている、「分割したデータを結合して」というのは「innodb_file_per_table」でファイルを分割したテーブルの結合ということでしょうか?
その場合は、この設定は外したほうが早くなるのでしょうか?
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- 経済学 因子分析における因子得点の解釈について 1 2022/12/10 02:05
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- PHP PHP MySql ページング 2 2022/09/20 06:38
- SQL Server PCが悪くなって新しいPCにSSMSのデータを移すよう頼まれたけど移し方が分からない 1 2023/05/18 16:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
さくらMySQLの使い方について
-
SQLServerのselect文でデータ数...
-
ExcelとAccess
-
htmlタグを含んだ文字のデータ...
-
SQLです。あってますか?↓
-
MySQLからのデータ取得で日本語...
-
phpMyAdminでエクスポートとイ...
-
アプリケーションのデータベー...
-
php xml?mysql? アクセスログ
-
データベースの検索で、この場...
-
データベースの複製の仕方(mysql)
-
Mysqlのデータベースのリンク
-
データベースファイル(.db)を開...
-
mysqlにおけるホストのパーセン...
-
MySQLへの特殊文字の挿入について
-
ネットで文字化けすのはどうい...
-
ACCESS VBA でのCSV取込エラー
-
sql*loader 数値のロード
-
漢字や平仮名の文字をSQLで実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
SQLです。あってますか?↓
-
mySQLのデータベースにhtmlのコ...
-
SQLServerのselect文でデータ数...
-
バッチファイルではパスワード...
-
Mysqlのデータベースのリンク
-
データベースの複製の仕方(mysql)
-
html上でMySQLにアクセス(Java...
-
htmlタグを含んだ文字のデータ...
-
データベースに画像を入れた場...
-
どの程度のデータベースなら、c...
-
作ったはずのDBがphpMyAdminで...
-
MYSQL で検索した結果を印刷したい
-
mysql データベースを別のサー...
-
mysqlデータベース内のuserテー...
-
ユーザにインフォメーション ス...
-
データベースのパンク
-
データベースに配列を格納する
-
MySQL データベースをデタッチ
-
MySQLの文字化け
おすすめ情報