問題タブ [innodb]
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 - innoDbを使用して検索機能を実装するための最良の方法
インデックスが大きな製品テーブルにある場合は、innodbを使用して、カップルで全文検索のようなものを実装する必要があります。MyISAMは、トランザクションとリレーションシップのサポートがないため、オプションではありません。
これを行うには、プラグイン、ストアドプロシージャ、キーを使用したテーブルの検索、MyIsam形式のインデックスのコピーなど、いくつかの方法が考えられます。
過去にこれをどのように達成しましたか?これは(私が言及していないものを含めて)最良の方法であり、その理由は何ですか?
プラグインは高価に聞こえ、ストアドプロシージャは遅く聞こえ、検索テーブルは管理者の悪夢のように聞こえます。
あなたの意見を聞くのが大好きです。
mysql - MySQL PBXT 対 InnoDB
新しい PBXT エンジンと古き良き InnoDB の長所/短所は何ですか?
これら 2 つの DB エンジンを比較する機能のリストと、おそらくいくつかのベンチマークはどこにありますか?
mysql - テーブルからデータ行を削除した後、MySQLInnoDBがディスク領域を解放しない
InnoDBストレージエンジンを使用するMySQLテーブルが1つあります。約200万のデータ行が含まれています。テーブルからデータ行を削除すると、割り当てられたディスク領域が解放されませんでした。optimize table
また、コマンドの実行後にibdata1ファイルのサイズが減少することもありませんでした。
MySQLからディスクスペースを再利用する方法はありますか?
私は悪い状況にあります。このアプリケーションは約50の異なる場所で実行されており、現在、ほとんどすべての場所でディスク容量の不足の問題が発生しています。
mysql - innodb_log_file_sizeの変更に関する問題
私は過去に多くの調整を行ったことがないので、これは比較的簡単かもしれませんが、問題が発生しています。これが私がすることです:
- MySQLを停止します
- my.cnfを編集します(変更
innodb_log_file_size
) - ib_logfile0/1を削除します
- MySQLを起動します
正常に起動しますが、すべてのInnoDBテーブルに.frmファイルが無効なエラーであるというエラーがあり、ステータスはInnoDBエンジンが無効になっていることを示しているので、明らかに戻って変更を削除すると、すべてが再び機能します。
試した他のすべての変数を変更することはできましたが、ログファイルを削除してもInnoDBが起動しない理由がわかりません。私は何かが足りないのですか?
ありがとう。
編集:以下のログの貼り付け-ログファイルがない場合でも、ログファイルが見つかっているように見えますか?
シャットダウン:
変更後の起動:
私がそれを修正するまで、それは同じエラーの単なるスパムです
ログファイルを再作成した後に起動したので、私と同じ場所を探している必要があります。
mysql - 外部キーとしてvarcharのみを含むMySQLテーブル
単一の一意のVARCHAR(512)フィールドを持つテーブルがあります。この最初のテーブルへの外部キー参照を別のテーブルに保持させたい。どちらのテーブルもInnoDBを使用しています。2番目のテーブルにVARCHAR(512)キーを追加し、それに外部キー制約を追加すると、512バイトの長さのデータが2回保持されますか?
もしそうなら、varchar自体ではなく、インデックスへの参照のみを保持する方法はありますか?
要するに、私の質問は、InnoDBに長いVARCHARフィールドへの外部キーを保持する効率的な方法はありますか?
どうもありがとうございます、
ヤニフ
mysql - 制約削除アクションの変更
これは私がしました:
私はこれをすべきだった:
これを ALTER することは可能ですか、それとも制約を削除して再度追加する必要がありますか?
mysql - テーブルの作成後にdjango DATABASE_OPTIONSの「init_command set engine=INNODB」を削除するのはなぜですか?
データベーステーブルの作成に関するドキュメントは次のように述べています。
もう 1 つのオプションは、テーブルを作成する前に MySQLdb の init_command オプションを使用することです。
これにより、データベースへの接続時にデフォルトのストレージ エンジンが設定されます。テーブルを作成したら、このオプションを削除する必要があります。テーブルの作成時にのみ必要なクエリが各データベース接続に追加されるためです。
テーブルの作成後にこのオプションを削除する必要がある理由を知っている人はいますか?
mysql - 行を削除するMySQLのデッドロック
約 500,000 行を含む (現在 InnoDB) テーブルがあります。これは、実行するタスクのキューを表します。MySQL データベースに保存されます。
少なくとも 1 秒に 1 回、場合によってはより頻繁に継続的に、そこからデータを選択し、続いていくつかの行を更新します。1 日に 1 回、テーブルから古い行を削除します。
テーブルでデッドロックが発生し始め、これによりタスク処理が停止しました。これらのデッドロックは、夜間の prune 実行中に発生しました。DELETE、SELECT、および UPDATE の組み合わせは、本質的に何も生産的ではないことを意味していました。残念ながら、SHOW ENGINE INNODB STATUS の出力がありません。
これに対処するための最良の選択肢を知りたいです。コードがデッドロックを検出し、クエリを再発行することに注意してください。また、一致するすべての行を一度に削除すると、多くのアクティビティが見られるデータベース テーブルに負担がかかりすぎることをずっと前に発見したため、一度に削除を 10,000 行に制限し、必要なすべての行が削除されるまでクエリを再発行し続けます。剪定した。
次のオプションが表示されます。どれが最適かについての意見や、他のオプションの提案を希望します。
- 一度に削除する行数を減らす
- DELETE で指数バックオフを使用しますが、特定のワークロードを考えるとこれが役に立たないことを懸念しています
- MySQL のドキュメントに従ってテーブルをロックします。おそらく、削除中は SELECT ステートメントと UPDATE ステートメントをブロックすることを受け入れることができます。
- MyISAM テーブル タイプに切り替えます。最初はこのテーブルでトランザクションを使用していたため、InnoDB を使用しました。これはもはや当てはまりません。これが実行可能な解決策であるかどうかを知るには、詳細に精通していません。
- おそらくUPDATE LOW_PRIORITYを使用してください。DELETE は SELECT には影響せず、UPDATE のみに影響する可能性があり、これで十分な場合があります。
mysql - 列にインデックスを追加するかどうか?
私はこのようなテーブルを持っています:
数十万のアイテムがあり、私は通常「my_number」で注文します。
'my_number'にインデックスを追加すると、このフィールドで並べ替えたときにクエリのパフォーマンスが向上しますか?
私はMySQLを使用しています。テーブルはInnoDBです。
mysql - InnoDB テーブルを PBXT に移行する
データベース (正確には Liferay データベース) を InnoDB から PBXT に移行するための移行手順やツールはありますか?