MYSQL分表、パーティションの違いと連絡

3277 ワード

MYSQL分表、パーティションの違いと連絡
一、mysql分表とは何か、パーティション
表分けとは、表向きの意味では、1枚の表をN個以上の小さな表に分けて、具体的にはmysql表の3つの方法を見てください
パーティションとは、1枚のテーブルのデータをN個以上のブロックに分割することです.これらのブロックは同じディスク上でも、異なるディスク上でも構いません.具体的にはmysqlパーティション機能の詳細と例を参照してください.
二、mysql分表とパーティションの違いは何ですか.
1、実現方式上
a)、mysqlの分表は本当の分表で、1枚の表が多くの表に分かれた後、各小さな表はすべて完成した1枚の表で、すべて3つのファイルに対応して、1つです.MYDデータファイル,.MYIインデックスファイル,.frmテーブル構造ファイル.
  • [root@BlackGhost test]# ls |grep user  
  • alluser.MRG  
  • alluser.frm  
  • user1.MYD  
  • user1.MYI  
  • user1.frm  
  • user2.MYD  
  • user2.MYI  
  • user2.frm  
  • [root@BlackGhost test]# ls |grep user alluser.MRG alluser.frm user1.MYD user1.MYI user1.frm user2.MYD user2.MYI user2.frm

    簡単に説明しますが、上の分表はmergeストレージエンジン(分表の一種)を利用しており、alluserは総表で、下には2つの分表、user 1、user 2があります.彼ら二人とも独立したテーブルで、データを取るときは、総テーブルで取ることができます.ここの総時計はありません.MYD,.MYIという2つのファイル、つまり、総表は彼が1枚の表ではなく、データがなく、データはすべて分表の中に置かれています.見てみましょう.MRGとは何か
  • [root@BlackGhost test]# cat alluser.MRG |more  
  • user1  
  • user2  
  • #INSERT_METHOD=LAST  
  • [root@BlackGhost test]# cat alluser.MRG |more user1 user2 #INSERT_METHOD=LAST

    上から分かるようにalluser.MRGにはいくつかの分表関係とデータの挿入方法が保存されています.総表はハウジングとして理解したり、接続プールとして理解したりすることができます.
    b)、パーティションが異なり、大きなテーブルをパーティション化した後、彼はまだ1枚のテーブルで、2枚のテーブルにはなりませんが、データを格納するブロックが多くなりました.
  • [root@BlackGhost test]# ls |grep aa  
  • aa#P#p1.MYD  
  • aa#P#p1.MYI  
  • aa#P#p3.MYD  
  • aa#P#p3.MYI  
  • aa.frm  
  • aa.par  
  • [root@BlackGhost test]# ls |grep aa aa#P#p1.MYD aa#P#p1.MYI aa#P#p3.MYD aa#P#p3.MYI aa.frm aa.par

    上から私たちはaaという表を見ることができて、2つの区に分けて、p 1とp 3、もともと3つの区で、私に1つの区を削除されました.私たちは1枚の表が3つのファイルに対応していることを知っています.MYD,.MYI,.frm.パーティションは、一定のルールに基づいてデータファイルとインデックスファイルを分割する、さらに1つ増えた.parファイル、開く.parファイルの後、彼が記録したことがわかります.このテーブルのパーティション情報は、ルート分割テーブルにあります.MRGは少し似ています.パーティション化後も、複数のテーブルではなく1枚です.
    2,データ処理上
    a),分表後,データはすべて分表に格納され,総表はただのハウジングであり,アクセスデータは1つ1つの分表に発生する.次の例を見てください.
    select*from alluser where id='12'は表面的には、表alluserを操作しているが、実際にはそうではない.alluserの中の分表を操作しました.
    b)、パーティションは、分割テーブルの概念は存在せず、パーティションはデータを格納するファイルを多くの小さなブロックに分けただけで、パーティション化されたテーブルは、まだテーブルです.データ処理はやはり自分で行います.
    3、性能向上
    a)、分表後、単表の同時能力が向上し、ディスクI/O性能も向上した.コンカレント能力が向上したのはなぜでしょうか.一度検索するのにかかる時間が短くなったので、高コンカレントが発生すると、総テーブルは異なるクエリーに基づいて、コンカレント圧力を異なる小さなテーブルに分けることができます.ディスクI/O性能はどうして高くなったのか、もともととても大きいです.MYDファイルは現在も各小表に割り当てられている.MYD中へ行きました.
    b)、mysqlはパーティションの概念を提出して、私はディスクI/Oのボトルネックを突破したいと思って、ディスクの読み書き能力を高めて、mysqlの性能を増加したいと思っています.この点では、パーティションと分表の測定重点が異なり、分表の重点はデータへのアクセス時にmysqlの同時能力をどのように向上させるかである.パーティションは、ディスクの読み書き能力をどのように突破し、mysqlの性能を高める目的を達成します.
    4),実現の難易度上
    a)、表を分ける方法はいろいろありますが、mergeで表を分けるのが一番簡単な方法です.この方式はルートパーティションの難易度が少なく,プログラムコードにとって透明である.他の分表方式であればパーティションより面倒です.
    b)、パーティション実装は比較的簡単で、パーティションテーブルを構築し、通常のテーブルをルート構築するのに何の違いもなく、オープンコード端にとって透明である.
    三、mysql分表とパーティションはどんなつながりがありますか?
    1,いずれもmysqlの性を高めることができ,高同時状態では良好な表面がある.
    2、分表とパーティションは矛盾しないで、互いに協力することができて、あれらの大きいアクセス量、しかも表のデータの比較的に多い表に対して、私達は分表とパーティションの結合の方式を取ることができます(mergeのこのような分表の方式、パーティションと協力できないならば、他の分表で試してみることができます)、アクセス量は大きくありませんが、表のデータの多い表、私達はパーティションの方式などを取ることができます.