【データベース】MySQLロックメカニズム、ホットスペア、サブテーブル


公衆番号へようこそ:【
愛コード】
バックグラウンドの返信が必要な場合
2019贈呈
1 Tの学习资料よ!!
注:本文の大部分はインターネットから来て、文字はわりに多くて、基本は概念で、深く理解したいならば、また各位が自分で文章を探して研究する必要があります.
表ロックと行ロックのメカニズム
テーブルロック(MyISAMとInnoDB)
表ロックの利点:コストが小さい;鍵をかけるのが速い.デッドロックテーブルロックの劣勢がない:ロック粒度が大きく、ロック衝突が発生する確率が高く、同時に処理能力が低いロック方式:自動ロック.照会操作(SELECT)は、関連するすべてのテーブルに自動的にリードロックをかけ、更新操作(UPDATE、DELETE、INSERT)は、自動的に関連するテーブルにライトロックをかけます.ロックを表示することもできます.
    :lock table tableName read;
    :lock table tableName write;
    :unlock tables;

どのシーンでテーブルロックを使用するか
InnoDBではデフォルトでロー・ロックが使用され、インデックス・フィールドを使用してクエリーしない場合はテーブル・ロックにアップグレードされます.条件でインデックスフィールドを使用しても、MySQLは独自の実行計画に基づいてインデックスを使用するかどうかを考慮します(したがって、explainコマンドにはpossible_keyとkeyがあります).MySQLがフル・テーブル・スキャンの効率が高いと判断した場合、インデックスは使用されません.この場合、InnoDBはロー・ロックではなくテーブル・ロックを使用します.したがって、ロック競合を分析するときは、SQLの実行計画を確認して、インデックスが実際に使用されているかどうかを確認することを忘れないでください.
1つ目のケース:全テーブル更新.トランザクションは、ほとんどのデータまたはすべてのデータを更新し、テーブルが大きい必要があります.ロー・ロックを使用すると、トランザクションの実行効率が低下し、他のトランザクションの長時間ロック待ちとより多くのロック競合が発生する可能性があります.
2つ目のケース:マルチテーブルクエリー.トランザクションは複数のテーブルに関連し、複雑な関連クエリーであり、デッドロックを引き起こし、大量のトランザクションがロールバックする可能性があります.この場合、トランザクションに関連するテーブルを一度にロックすることで、デッドロックを回避し、トランザクションのロールバックによるデータベースのオーバーヘッドを削減できます.
行ロック(InnoDBの行ロック)
ロックの劣勢:オーバーヘッドが大きい;ロックが遅いデッドロックロックの利点が現れます:ロックの粒度が小さく、ロックの衝突が発生する確率が低い;同時のコンピテンシー強制ロックを処理する方法:自動ロック.UPDATE、DELETE、INSERT文の場合、InnoDBは自動的にデータセットに排他ロックを追加します.通常のSELECT文では、InnoDBにロックはありません.もちろん、ロックも表示できます.
   :select * from tableName where … + lock in share more
   :select * from tableName where … + for update

ロー・ロックの最適化
1可能な限り、すべてのデータ取得をインデックスによって完了させ、インデックスのないローやインデックスの失効によるロー・ロックのテーブル・ロックへのアップグレードを回避します.2ギャップロックによるパフォーマンスの低下をできるだけ回避し、合理的な検索範囲を減少または使用します.3トランザクションのサイズを制御したり、ロックされたリソースの量や時間の長さを減らしたりして、ロックの競合を減らすなど、トランザクションの粒度を最小限に抑えることができます.4可能な限り低レベルのトランザクション・アイソレーションで、独立性レベルが高いほど、同時処理能力が低下します.
InnoDBとMyISAMの最大の違いは2つあります.1つは、InnoDBがトランザクションをサポートすることです.二、デフォルトでは行レベルロックが採用されています.鍵をかけることで事務の一致性を保証することができ、誰かが(鍵をかける)場所と言え、江湖(事務)がある.まず事務の知識を簡単に理解しましょう.
MySQLトランザクション
トランザクションは、ACID属性を持つSQL文のセットからなる論理処理ユニットです.アトミック(Atomicity):トランザクションは原子操作ユニットです.当時、原子は分割できない最小要素であり、データの修正はすべて成功するか、すべて成功しないかのいずれかであった.コンシステンシ(Consistent):トランザクションの開始から終了までの期間、データは一貫した状態に保たなければなりません.独立性(Isolation):データベース・システムは、外部同時運用の影響を受けない「独立した」環境でトランザクションを実行するための独立したメカニズムを提供します.持続性(Durable):トランザクションが完了すると、データの変更は永続的であり、システム障害が発生しても保持されます.
トランザクション独立性レベル
汚い読み取り、繰り返し読み取り不可、幻読み取りは、実際にはデータベースの読み取り整合性の問題であり、データベースが一定のトランザクション分離メカニズムを提供して解決しなければならない.
もっと素晴らしい文章
https://www.cnblogs.com/zyy16...https://www.cnblogs.com/itdra...
デュアルマシンホットスペア
コンセプト
デュアルマシンホットスペアデュアルマシンホットスペアとは、特に高可用性システムにおける2台のサーバに基づくホットスペア(または高可用性)を指し、2台の高可用性が国内で使用されることが多いため、デュアルマシンホットスペアと名付けられた.広義には、重要なサービスに対して、2台のサーバを使用して、互いにバックアップし、同じサービスを共同で実行することです.1台のサーバに障害が発生した場合、別のサーバがサービスタスクを担当することができ、手動で介入する必要がなく、システムがサービスを継続的に提供できることを自動的に保証します.
デュアルマシンホットスペアとバックアップの違いホットバックアップとは、High Available(HA)が高可用性であり、バックアップとはBackup、すなわちデータバックアップの一種であり、これは2つの異なる概念であり、対応する製品も2つの機能的に全く異なる製品である.ホット・バックアップは主に業務の連続性を保障し、実現方法は故障点の移行である.バックアップは、主な目的はデータの損失を防ぐために行われたコピーです.そのため、バックアップはアプリケーションのフェイルオーバではなく、データのリカバリを強調します.
デュアルマシンホットスペア分類
作業中の切り替え方式によって、メイン-スタンバイ方式(Active-Standby方式)とデュアルホスト方式(Active-Active方式)に分けられます.
  • プライマリ・スタンバイとは、1つのサーバが何らかのトラフィックのアクティブ化状態(すなわちActive状態)にあり、もう1つのサーバがそのトラフィックのスタンバイ状態(すなわちStandby状態)にあることを意味する.
  • デュアルホスト方式とは、2つの異なるトラフィックがそれぞれ2台のサーバ上で互いにプライマリ・スタンバイ状態(すなわち、Active-Standby-Active状態)であることを意味する.

  • mysqlデュアルマシンホットスペア動作原理
    簡単に言えば、1つのサーバで実行されたsql文を他のサーバでも繰り返し実行することで、2つのデータベースの初期状態が同じであれば、同期し続けることができます.もちろん、このレプリケーションと重複はmysqlが自動的に実現し、構成するだけでいいです.原理の詳細をさらに詳しく説明します.図があります.
    上図には2つのサーバがあり、1つのプライマリサーバからサーバ(slave)にデータを同期するプロセスを示しています.これはプライマリ・コピーの例です.プライマリ-プライマリ相互複製は、上記の例を逆にもう一度行うだけです.この例で原理を紹介しますmysqlサーバの場合、レプリケーションとレプリケーションを担当するスレッドは一般的に2つあります.レプリケーションをオンにすると.
  • 1. マスターサーバMasterとして、自分の変更ごとにバイナリログBinarylogに記録されます.△このロゴをサーバから読み取り、自分のところでもう一度実行します.
  • 2. サーバSlaveとして、マスター上のアカウントでマスターにログインし、マスターのBinarylogを読み取り、自分の中継ログRelaylogに書き込み、自分のsqlスレッドがこの中継ログを読み取り、一度実行します.ここまでメインサーバでの変更は、スレーブサーバに同期されます.

  • mysqlでは、現在のサーバのプライマリ、セカンダリステータスを表示できます.実は現在のサーバのBinary(プライマリサーバとしての役割)の状態と位置です.およびそのRelayLog(スレーブサーバとして)のレプリケーションの進捗状況.
    mysqlデュアルマシンホットスペア実装
    次の大神の配置を参考にしましょう.彼らはよく書いていて、詳しく書いています.コレクションします.https://yunnick.iteye.com/blo...https://www.cnblogs.com/shuid...https://www.cnblogs.com/fnlin...
    ライブラリ表
    基本的な考え方は、1つのデータベースを複数の部分に分割して異なるデータベース(server)に配置し、単一のデータベースのパフォーマンスの問題を緩和することです.
    なぜライブラリ・テーブルを分割するのか
    1枚のテーブルのデータが数千万に達すると、1回のクエリーにかかる時間が多くなり、連合クエリーがあれば、そこで死ぬ可能性があると思います.表分けの目的は、データベースの負担を減らし、クエリー時間を短縮することです.
    垂直分割と水平分割
    垂直分割
    1つのデータベースは多くのテーブルから構成されており、各テーブルは異なるトラフィックに対応しており、垂直分割とはトラフィックに従ってテーブルを分類し、異なるデータベース上に分布することであり、データや圧力を異なるライブラリ上に分担することである.
    メリット:
        1.        ,      。
        2.            。
        3.       。
    

    欠点:
        1.        join,          ,        。
        2.                   ,           。
        3.       。
    
    

    水平分割
    垂直分割に対する違いは、垂直分割は異なるテーブルを異なるデータベースに分割し、水平分割は同じテーブルを異なるデータベースに分割することです.
    メリット:
        1.         ,        。
        2.      ,       。     
        3.           ,join        。
        4.               。

    欠点:
        1.         。
        2.            。
        3.               。
        4.   join    。
    
    

    小結
    2枚の方式の共通の欠点
        1.           。
        2.    Join    。
        3.            。
    

    現在、主に2つの考え方があります.
        A. **     **,                     (    )   ,          ,           。 
          :    ,     。   
          :    ,          ,       ,    。
       B.   **     **           ,                ;   
          :  ,     ,   。   
          :     ,         
    

    Mycatライブラリ表
    Mycatのアーキテクチャは実はよく理解して、Mycatはエージェントで、Mycatの後ろは物理データベースです.WebサーバのNginxと似ています.利用者にとってアクセスはすべてMycatであり,バックエンドのデータベースには触れない.
    よく使用されるライブラリ・テーブル・ミドルウェア
    シンプルで使いやすいコンポーネント:
  • sharding-jdbc
  • きのこ街TSharding
  • 強力な重量級のミドルウェア:
  • sharding
  • TDDL Smart Client方式(淘宝)
  • Atlas(Qihoo 360)
  • alibaba.cobar(アリババ(B 2 B)部門開発)
  • MyCAT(アリオープンソースのCobar製品に基づいて開発)
  • Oceanus(58同城データベースミドルウェア)
  • OneProxy(支付宝首席構造師楼方鑫開発)
  • vites(Googleが開発したデータベースミドルウェア)
  • 具体的な実装については、次の文書を参照してください.http://www.cnblogs.com/joylee...http://www.mycat.io/https://github.com/MyCATApache
    より多くの良質な文章
    https://www.cnblogs.com/sunny...https://www.cnblogs.com/mfmda...https://www.cnblogs.com/jshen...http://www.cnblogs.com/firstd...
    最後に
    Java、ビッグデータに興味があればQRコードを長く押して注目してください.私はあなたたちに価値をもたらすように努力します.あなたに少しでも役に立つと思う人は、「いいね」や「転送」を手伝ってください.公式アカウント「愛コード」に注目し、2019に返信するには関連資料がありますよ.