ビュー、トランザクション、インデックス

9805 ワード

表示
  • 一般的に言えば、ビューは1つのSELECT文の実行後に返される結果セット(いくつかの基本テーブルへの参照を試み、1つの虚表、クエリ文の実行結果;ベーステーブルの変更、ビューの変更;ミラーと理解できる)
  • #        v_  
    create view      as select  ;
    #     (         )
       select * from v_stu_score;
    #     
       drop view     ;
        :drop ciew v_stu_sco;

    ビューの役割
    1.関数のように再利用性が向上する.データベースの再構築は、プログラムの実行に影響しません.セキュリティ性能を向上し、異なるユーザー4に対してデータをより明確にする
    取引
  • トランザクションとは、すべて実行するか、実行しないかのいずれかの操作シーケンスであり、分割できない作業単位
  • です.
    トランザクションの4つの特徴(ACIDと略称)
  • 原子性(Atomicity)
  • トランザクションは、トランザクション全体のすべてのアクションがすべてコミットされたか、すべてが失敗してロールバックされたかのうちの1つのトランザクションのみが実行されることはありません.これがトランザクションの原子性
  • です.
  • 整合性(Consistency)
  • データベースは常に1つのコンシステンシの状態から別のコンシステンシの状態
  • に変換する.
  • 隔離性(lsolation)
  • 通常、1つの事務所が行った修正は、最終的に提出される前に、他の事務に対して
  • は表示されません.
  • 持続性(Duravility)
  • トランザクションがコミットされると、その変更はデータベース
  • に永続的に保存されます.

    トランザクションコマンド
  • テーブルのエンジンタイプはinnodbタイプでなければトランザクションが表示されません.これはmysqlテーブルのデフォルトエンジン
  • です.
    #             
       - engine = innodb
    --      
       - use jing_dong;
    --   goods  
       - show create table goods;
    #       
       -            ,           ,         
       - begin    start transaction;
    #        
       -                 
       - commit
    #       
       -           
       - rollback

    注意:
  • データを変更するコマンドは、insert、update、delete
  • などのトランザクションを自動的にトリガーします.
  • SQL文で手動でトランザクションを開く理由は、複数回のデータの変更が可能であり、成功した場合は、前のデータ
  • にロールバックするためです.
    索引
  • インデックスは、データテーブル内のすべてのレコードに対する参照ポインタを含む特殊なファイルです(InnoDBデータテーブル上のインデックスはテーブル空間の構成部分です).より一般的に言えば、データベースインデックスは本の前のディレクトリに比べて、データベースのクエリーデータ
  • を速めることができます.
  • 目的:クエリー効率の向上
  • 原理:取得したいデータの範囲を絶えず縮小することによって最終的に所望の結果をフィルタリングし、同時にランダムなイベントを順序にするイベント、すなわち私たちはいつも同じ検索方法でデータ
  • をロックする.
    インデックスの使用
    #     
       - show index from   
    #     
       -           ,      ,              
       -                      
       - create index      on   (    (  ))
    #     
       - drop index      on   ;
  • 注意:インデックスが多すぎると、各インデックスファイルを同じように更新する必要があるため、更新と挿入の速度に影響します.インデックスを作成すると、ディスク領域が
  • 必要になります.
    アカウント管理
  • 本番環境でデータベースを操作する場合、rootアカウント接続は絶対に使用できません.特定のアカウントを作成し、このアカウントに特定の操作権限を付与し、接続して操作します.主な操作はデータのcrud
  • です.
    MySQLアカウントシステム
  • サービスインスタンスレベルアカウント:mysqldが起動しました.すなわち、データベースインスタンスです.rootのようなユーザーがサービスインスタンスレベルの割り当て権限を持っている場合、アカウントはすべてのデータベースを削除し、これらのライブラリのテーブル
  • とともに削除することができます.
  • データベース・レベルのアカウント:特定のデータベースに対して削除変更を実行するすべての操作
  • データテーブルレベルアカウント:特定のテーブルに対してそのチェックを追加削除するなどのすべての操作
  • を実行する.
  • フィールド・レベルの権限:一部のテーブル固有のフィールドについて
  • を操作します.
  • メモリレベルのアカウント:メモリプログラムを削除する操作
  • アカウントの操作
  • は、主に口座の作成、口座の削除、パスワードの変更、権限付与などの
  • を含む.
    #     
       -       (            mysql    user  )
          - select host,user,authentication_string from user;
       -       
          - Host          
          - User     
          - authentication_string     ,      
       -      -               , root  
          -         :create、alter、drop、insert、update、delete、select
          -         ,    all privileges
          - grant      on     to "   "@"    " identified by "  ";
       -     
          -   password()        
          - update user set authentication_string=password("   ") where user = "   ";
          -  :update user set authentication_string=password("123") where user = "localhost";
          -               
          -      :flush pricileges       
       -     
          #   1:  root   
          - drop user "   "@"  ";
          -  : drop user "laowang"@"%";
          #   2:   root   ,  mysql    user    
          - delete from user where user= "   ";
          -  :delete from user where user = "laowang";
          #            
          - flush privileges
    #     
       - grant      on     to   @   with grant option;
    #     (    )
       -    /ect/mysql/mysql.conf.d/mysqld,cnf  
       -     mysql
          - service mysql restart
       -      
          -     
          -           bind_address  
          -           skip_networking  
          -         
  • 注意:アカウント操作を行う場合はrootアカウントを使用してログインする必要があります.このアカウントは最も高いインスタンスレベルの権限を持っています.通常、データベース・レベルの操作権限
  • が使用されます.
    MySQLマスター同期構成
    マスタスレーブ同期定義
  • プライマリスレーブ同期により、1つのデータベース・サーバから他のサーバにデータをコピーすることができ、データをコピーすると、1つのサーバがプライマリ・サーバ(master)として機能し、残りのサーバがセカンダリ・サーバ(slave)として機能する.レプリケーションは非同期で行われるため、サーバからサーバに接続する必要はなく、サーバからダイヤルアップでプライマリサーバに断続的に接続することもできます.プロファイルを使用すると、すべてのデータベース、データベース、さらにはデータベース上のテーブルをコピーするように指定できます.
  • プライマリスレーブ同期の利点
  • -                  ,             ,             ,             ,            
    -       ,            ,            ,  ,                     
    -             ,             ,           

    マスタスレーブ同期メカニズム
  • MySQLサーバ間のマスタスレーブ同期はバイナリログメカニズムに基づいており、マスタサーバはバイナリログのみでデータベースの変動状況を記録し、サーバからログファイルの読み取りと実行によってマスタサーバとのデータ一致を維持する
  • .
  • プライマリサーバとスレーブサーバごとに一意のID番号(my.cnfファイルの[mysqld]モジュールの下にserver-id構成項目がある)
  • を構成する必要があります.
    プライマリ・スレーブ・サーバーを構成するには
    1.プライマリ・サーバでは、バイナリ・ログ・メカニズムをオンにし、独立したID 2を構成する必要がある.各スレーブサーバにおいて、一意のIDを設定、マスターサーバデータを専用にコピーするためのアカウント3を作成する.レプリケーションプロセスを開始する前に、プライマリサーバにバイナリファイルの位置情報4を記録する.レプリケーションを開始する前に、データベースにデータがある場合は、mysqldumpを使用してデータベースをエクスポートしたり、データファイルを直接コピーしたりするデータスナップショットを作成する必要があります.サーバから接続するプライマリ・サーバのIPアドレスとログイン権限、バイナリ・ログ・ファイル名と場所の構成
    プライマリ・スレーブの同期を詳細に構成する方法
    1.プライマリ・サーバの既存データをスレーブ・サーバにバックアップする
    #      Ubuntu   ,    
    mysqldump -uroot -pmysql
    --all-databases
    --lock-all-tables > ~/master_db.sql
    #   
    * - u:   
    * - p:  
    * --all-databases:        
    * --lock-all-tables:           ,          
    * ~/master_db.sql:        (sql  )  ,      
    #      Windows       
    mysql -uroot -pmysql < master_db.sql

    2.マスターサーバーの構成(UbuntuのMySQL)
    #     mysqld     ,  log_bin server-id
    sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf
    #   mysql   
    sudo service mysql restart
    #       Ubuntu  mysql,                 
    mysql - uroot -pmysql
    GRANT REPLICAION SLAVE NO *.* TO "slave"@"%" identified by "slave";
    FLUSH PRIVLEGES;
    #               
    SHOW MASTER STATUS;

    3.サーバslave(WindowsのMySQL)からの構成
    #   Windows   MySQL     
    #   my.ini  , server-id   2,     
    #   windows     
    #            MySQL57,      

    Windowsのmysqlに入って、社会資本はmasterのメインサーバーに接続します
    change master to master_host= "10.211.55.5", master_user= "slave", master_password= "slave", master_log_file = "mysql-bin.000006", master_log_pos=590;
    * mastr_host:     Ubuntu ip  
    * master_log_file:               
    * master_log_pos: