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

行サイズが大きすぎます(> 8126)InnoDBをMyISAMに変更できますか

    はい、MyISAMに切り替えることができます。しかし、それは必ずしも良い考えではありません:

    • MyISAMはトランザクションをサポートしていません
    • MyISAMテーブルには多くの場合REPAIRが必要です クラッシュ後

    InnoDBテーブルは、1行あたり8KB以上を処理できます。どうやらあなたは十数以上のTEXT/BLOB列を持っていることによって問題に遭遇しましたか?行の主要部分には、最大767バイトの列が格納されます。残りは別のブロックに入れられます。

    1つのROW_FORMATだと思います すべての大きな列を別のブロックに配置し、それを指すために20バイトだけを残します。

    幅の広い行への別のアプローチは、「垂直分割」を行うことです。つまり、一致するPRIMARY KEYを使用して別のテーブルを作成します そしていくつかの大きな柱。人口がまばらな列をそのようなテーブルに移動してから、そのテーブルの行数を減らし、LEFT JOINを使用すると特に便利です。 データをフェッチします。また、SELECTを行う必要がほとんどない列がある場合も 、それらは移動するのに適した候補です-JOINはありません これらの列が必要ない場合に必要です。




    1. SELECTを使用するとMySQLBITフィールド値が表示されない

    2. laravelerrno150外部キー制約が正しく形成されていません

    3. PHPでMySQLを検索し、同じページに結果を表示します

    4. djangoのランタイム警告