質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

2回答

7461閲覧

データベースのシャーディングは、物理サーバごと分けるのか否か

sounisi5011

総合スコア697

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

1クリップ

投稿2015/11/18 17:20

シャーディングをまだ完全に理解出来ていないので、頓珍漢な質問であれば申し訳ありません。

漢(オトコ)のコンピュータ道: Not Only NoSQL!! 驚異的なまでにWRITE性能をスケールさせるSPIDERストレージエンジン

この記事では、MySQLとSpiderを組み合わせてシャーディングを行った結果、パフォーマンスが向上したという事例について紹介しています。
シャーディングは、単一のデータを複数のデータベースサーバに分け、処理能力を向上させる手法、との事ですが…

MySQL Spiderエンジンを使ってみた。~データベースシャーディング(sharding)とは~ - 気ままに書いてみました日記

この、「複数のデータベースサーバ」とは、複数の「データベースサーバソフトが入った物理サーバ」なのでしょうか。
それとも、複数の「データベースサーバソフト」なのでしょうか。

もし後者の、複数の「データベースサーバソフト」という意味であるならば、
単一の物理サーバに複数のMySQLサーバソフトをインストールし、それをSpiderで繋げる事でもパフォーマンスを向上させられる、という理屈になるのですが…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

この、「複数のデータベースサーバ」とは、複数の「データベースサーバソフトが入った物理サーバ」なのでしょうか。

読む限り**複数の「データベースサーバソフトが入った物理サーバ」**ですよね

同じデータベースサーバでデータベースを分ける:パーティショニング
別のデータベースサーバでデータベースを分ける:シャーディング
としているようです

ただ

  • 障害点が増える
  • SpiderエンジンがどこまでMySQLに追従できるか

は懸念点として残るかとはおもいます

あと後者のページで言及のある

  • メモリに乗り切らないデータはディスクを読み込んで探さなければならない。
  • ディスクからデータを探すのとメモリからデータを探すのでは速度差に10の5乗~6乗近くの差が出る(10万倍~100万倍)

は確かにそうなのですが、例えば2台に分けるかわりに倍の容量のメモリを搭載(サーバの調達コストまで考えると倍以上搭載できるはず)した時はどうなのかは考えておく必要はあるかと
もちろん当該サーバで目一杯搭載済みの場合は有効ですね

ともかくパフォーマンス向上策で万能な物はありませんので..

単一の物理サーバに複数のMySQLサーバソフトをインストールし、それをSpiderで繋げる事でもパフォーマンスを向上させられる、という理屈になるのですが…

うまくデータの走査範囲が限定されることにより性能が向上するケースもあるかもしれません
ただそのためにわざわざ複数のMySQLを動作させるのは無駄(テーブルかデータベースを分けるだけでよい=パーティショニング)だと思います

投稿2015/11/18 18:06

編集2015/11/18 18:25
dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ポートを3306と3307等に分けて、一つのサーバー内に複数のMySQLを起動させた場合、
各MySQLデーモンでメモリを食い合ってしまうので結局イマイチな結果になる、という可能性もありますね。

グローバルバッファとスレッドバッファがあって、グローバルバッファはMySQLデーモンごとに割り当てられるものですから、
例えばメモリが4MB使えるのDBに4つMySQLを置くと、それぞれにグローバルバッファのメモリが必要になり、その中からそれぞれスレッドバッファを捻出することになります。

出来る、出来ないでいったらきっと出来るのでしょうが、実用性を考えるのであれば、やらないという判断になるのではないでしょうか。

投稿2015/11/19 02:41

anonymouskawa

総合スコア856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問