sql >> データベース >  >> RDS >> Mysql

MySQLトランザクションジャーナリング

    あなたは間違いなくここで正しい方向に進んでいます。

    InnoDBがコミットする必要のあるトランザクションを実行するときは常に、2フェーズコミットとして実行されます。トランザクションは最初にこれらのログに書き込まれます。次に、そこからコミットします。

    これは、MySQLのクラッシュやサーバーのクラッシュが発生した場合に大いに役立ちます。

    mysqlを再起動すると、ib_logfile0とib_logfile1のコミットされていないすべてのエントリが、InnoDBのクラッシュリカバリの一部として再生され、InnoDBが調和のとれた状態になります(これは、ACIDコンプライアンス

    ib_logfile0とib_logfile1を削除してmysqlを起動すると、これらのファイルに含まれているコミットされていないトランザクションはすべて失われます。クラッシュリカバリサイクル中に、ログファイルが欠落している場合、ログファイルは innodb_log_file_size 設定。

    詳細については、MySQLドキュメントを参照してください。 InnoDBの説明

    @karatedog InnoDBのMVCC部分は、ibdata1としてよく知られているシステムテーブルスペース内で発生します。トランザクションの開始前に表示されるデータはすべて記録され、更新が適用される前に、必要な行にアクセスする他のユーザーがデータを表示できるようにします。これにより、REPEATABLE-READと呼ばれるものが可能になります。これは、ACID準拠のIに該当します。つまり、分離を意味します。トランザクション分離が良い、悪い、または醜いさまざまなシナリオに関して、DBAStackExchangeにこれに関する投稿を書きました。

    MyISAMの場合、クラッシュリカバリは自動ではありません。かなり簡単にクラッシュします 。そのため、SQLコマンドREPAIR TABLE 存在します。これが、MySQLユーティリティmyisamchkの理由でもあります。 -rがあります REPAIR TABLEを実行するオプション オンラインではないMyISAMテーブルの場合。

    MariaDBとAria MyISAMの代わりにクラッシュセーフなストレージエンジンを作成する試みがなされてきました。




    1. 画像ファイルまたはURLをMySQLデータベースに保存しますか?どちらが良いですか?

    2. 接続された.mdfデータベースを使用するためのWeb.configのDB接続文字列が機能しない

    3. データベースから取得しますが、過去30日間のみ

    4. PHP-IN句配列でのPDOの使用