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

InnoDB/MyISAMレコードを挿入するために必要な時間の違い

    MyISAMまたはInnodbで有効にした耐久性設定、または単一行インサートを使用しているか、どちらの場合もバッチインサートを使用しているかは不明です。

    単一行の挿入を使用していて、トランザクションを使用しておらず、耐久性が有効になっている場合(InnoDBのデフォルト設定)、各トランザクションを永続ストレージにコミットする要件によって、InnoDBのパフォーマンスが大幅に制限される可能性があります(つまり、ディスク)各行の挿入後。

    MyISAMは耐久性がないため、このような問題はありません。つまり、マシンがクラッシュした場合、データベースが以前に正常に書き込まれたと主張した最近書き込まれたデータが失われることがほぼ保証されます(テーブル全体ではない場合もあります)。

    適切な挿入パフォーマンスが必要な場合は、バッチ挿入やトランザクションを使用します。それ以外の場合は、書き込みの速度に続いてfsync()を測定します。これは、(回転磁気メディア上の非バッテリーバックアップRAIDコントローラーで)ディスクの回転速度だけです。

    したがって、innodbが非常に一貫している理由は、ディスクの回転速度を測定しているためです。

    そうは言っても、サーバーがビジー状態の場合は、絶対にバッテリーでバックアップされたRAIDコントローラーを使用したいので、適切なトランザクションコミットパフォーマンスと適切な耐久性を実現できます(バッテリーが持続するよりも長く電源が落ちないことを前提としていますが、サーバーが爆発しないなど)



    1. SQLAlchemy、Psycopg2、Postgresql COPY

    2. 列のタイムスタンプがデフォルトのcurrent_dateでmysqlテーブルを作成するにはどうすればよいですか?

    3. MySQLgroup_concatと同等のPresto

    4. PostgreSQL11でのパーティショニングの改善