問題タブ [myisam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL InnoDBはこのシナリオに適していますか?
My MysQLデータベースには複数のMyISAMテーブルが含まれており、各テーブルには数百万の行が含まれています。データベースに大きな挿入負荷があるため、そのライブデータベースでSELECTを発行できません。代わりに、クエリ用のデータベースのレプリカを作成し、それについて分析を行います。
分析のために、複数の並列クエリを発行する必要があります。クエリは独立しています(つまり、クエリの結果は結合されません)が、ほとんどの場合、同じテーブルで動作します。私の知る限り、MyISAMテーブル全体がクエリごとにロックされているため、並列の独立したクエリは遅くなります。理想的には、「NOLOCKING」をサポートするエンジンがいいと思います。MySQLにはそのようなエンジンがないと想定しているので、InnoDBを使用する必要がありますか?私はここで多くのものを逃しているかもしれません。ここで正しい道を提案してください。
ありがとう
mysql - テーブルを再構築せずにmyISAMでAUTO_INCREMENTをリセットする
私たちの本番データベースで大きな問題を抱えているのを手伝ってください。非常に大きな値のキーを誤って自動インクリメント列に挿入してしまいましたが、今では、再構築に時間がかかると、この値を変更できないようです。
超遅いです。
これを本番環境で修正するにはどうすればよいですか?私もこれを機能させることができません(効果はありません):
何か案は?
基本的に、私が何をしても、オーバーフローが発生します。
mysql - SELECT ワークロードが 100% の MySQL に最適な Linux ファイルシステム
テーブルごとに数百万行を含む MySQL データベースがあり、合計で 9 つのテーブルがあります。データベースは完全に読み込まれ、私が行っているのは読み取りだけです。つまり、INSERT や UPDATE はありません。データは MyISAM テーブルに保存されます。
このシナリオを考えると、どの Linux ファイル システムが最適でしょうか? 現在、私はxfsを持っています。しかし、どこかで xfs の読み取りパフォーマンスがひどいと読みました。本当?データベースを ext3 ファイル システムに移行する必要がありますか?
ありがとう
mysql - 読み取り専用 MyISAM テーブルの高速化
古いデータをアーカイブするために使用される大きな MyISAM テーブルがあります。このアーカイブは毎月実行され、これらの機会を除いて、データがテーブルに書き込まれることはありません。MySQLがこのテーブルからの読み取りのパフォーマンスを最適化できるように、このテーブルが読み取り専用であることをMySQLに「伝える」方法はありますか? MEMORY ストレージ エンジンを見てきましたが、問題は、このテーブルが非常に大きいため、サーバーのメモリの大部分を占めることです。これは望ましくありません。
私の質問が十分に明確であることを願っています。私はデータベース管理に関しては初心者なので、入力や提案は大歓迎です。
sql - トリガーを使用して、外部キー制約のある属性で無効なデータを停止しますか?
テーブルの外部キー属性に挿入されたデータが実際に参照テーブルに存在するかどうかをチェックするトリガーを指定する方法。存在する場合、アクションは実行されません。存在しない場合、トリガーは挿入されたタプルを削除する必要があります。
例: 2 つのテーブル R(A int Primary Key) と S(B int Primary Key , A int Foreign Key References R(A) ) があるとします。
私はこのようなトリガーを書きました:
トリガーの開始ブロックと終了ブロック内で内部サブクエリを指定する際に間違いを犯していると確信しています。私の質問は、どうすればそのようなトリガーを作成できますか?
mysql - MySQL + MyISAM テーブルサイズの質問
検査台があります。テストテーブルは次のとおりです。
このテーブルに 5000 万行を挿入しました。
テーブルのステータスを表示すると、avg_row_length は 7 です。mySQL は整数に 4 バイトを使用するため、4 が表示されると予想していました。キーは avg_row_length に影響しますか? .MYD ファイルを見ると、サイズは 334 MB です。これは、avg_row_length が 7 の場合に正確に指定する必要がある値ですが、int しかないため、実際には 190 MB になると予想していました。
mytest テーブルの show table status の出力を含めました。フォーマットについて申し訳ありません:D よろしくお願いします!
アレッサンドロ・フェルッチ
mysql - MyISAM の穴は自動的に埋められますか?
MyISAM テーブルで削除を実行すると、テーブルが最適化されるまでテーブルに穴が残ります。
これは同時挿入に影響します。デフォルト設定では、concurrent_inserts は穴のないテーブルに対してのみ機能します。ただし、MyISAM のドキュメントでは、concurrent_insert セクションの下に次のように記載されています。
ホールがあるものも含め、すべての MyISAM テーブルに対して同時挿入を有効にします。穴のあるテーブルの場合、テーブルが別のスレッドで使用されている場合、テーブルの最後に新しい行が挿入されます。それ以外の場合、MySQL は通常の書き込みロックを取得し、行をホールに挿入します。
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_concurrent_insert
新しい行がテーブルに挿入されるたびに、MyISAM が自動的に穴を埋めるということですか? 以前は、テーブルを最適化するまで穴は修正されないと思っていました。
mysql - 外部の Innodb を mysiam に直接変換できますか?
innodb テーブルを含むデータベースを myisam に変換したいと考えています。どうすればこれらを行うことができますか? テーブル間にいくつかの外部キーが存在します。
どうすればこれを最善の方法で作ることができますか?
mysql - MySql、InnoDB、およびNull値
以前は、MySqlにMyISAMストレージエンジンを使用しており、3つのフィールドの組み合わせを一意に定義していました。
これで、この問題の原因であると思われるInnoDBに切り替えましたが、NULL!=NULLになりました。
したがって、次の表の場合:
(Field_A、Field_B、Field_C)Values(1,2、NULL)(1,2、NULL)(1,2、NULL)を何度でも挿入できます。
この動作を防ぐにはどうすればよいですか?
mysql - MySQL ストアド プロシージャは INSERT DELAYED ですが、必要に応じて最初に CREATE TABLE を実行しますか?
私はテーブルにたくさんのことINSERT DELAYED
をすることを計画しています。MyISAM
ただし、テーブルがまだ存在しない可能性があります。たとえば、毎日新しいテーブルが存在するとします。
したがって、クライアントにテーブルがないことを検出して作成し、挿入を再試行する代わりに、ストアド プロシージャ (「関数」) の適切なケースのように思えます。
これは可能ですか?それはどのように見えるでしょうか? このアプローチに欠点はありますか?