問題タブ [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「テーブルがいっぱいです」エラー
RedHat Enterprise Linux 4 サーバーに MySQL InnoDB テーブルがあり、以前にバックアップしたデータベースをインポートしようとするとmysqldump
、「テーブルがいっぱいです」というエラーが発生しました。
テーブルには現在 463,062 行あり、ibdata1
ディスク上のファイルは現在 3.37Gb です。簡単な " SHOW VARIABLES;
" は、innodb_data_file_path
が に設定されてibdata1:10M:autoextend
おり、ファイルシステムが ext3 であることを示しているため、拡張する余地が十分にあると予想されます。
問題が何であるかを正確に特定する方法はありますか?
mysql - MySQL 競合状態
これにより、MySQL (InnoDB) との競合状態が発生しますか?
取引開始。
レコードを取得してみてください。
レコードが存在しない場合は、戻ります。
レコードが存在する場合は、それを削除し、削除されたことを示すログ エントリを追加します。
トランザクションの終了 (コミット/ロールバック)。
2b の削除ステップの直前に別のプロセスを開始し、レコードの存在を検出してから、両方のプロセスに項目削除エントリをログに入力させることは可能ですか?
私が取る必要がある予防措置はありますか?
ありがとう。
mysql - read-uncommit による InnoDB デッドロック! - Java - Glassfish - EJB3 (JPA/Hibernate)
Glassfish を使用した Java アプリケーションでデッドロックの問題が発生してから数日が経ちました - MySQL InnoDB を使用した EJB3
構成: Mysql InnoDB: Ver 14.12 Distrib 5.0.51a、readline 5.2 を使用する debian-linux-gnu (i486) 用
アプリケーション サーバー: Glassfish v2.1
EJB3 での永続化 - JPA - Hibernate
簡単にするために、私が持っている-サービスへのユーザーのサブスクリプション、ログオン、ログオフ、支払い、登録などを処理するサーブレットを備えたSOAシステム...-これらのサービスの毎日の減少を処理するクォーツジョブシステム(cronトリガー)、 「低信用」警告の生成、支払いの検証など...
私の問題:負荷テスト中にどこでもデッドロックが発生しました (100 000 ユーザーのシミュレーション - 30 リクエスト/秒)
返されたスタック サンプル:
終わりに注意してください、それは私が行ったコードです: net.xxx.server.dao.impl.PaymentDAOImpl.listPaymentsByStateAndCompany(PaymentDAOImpl.java:270)
この機能:
この関数は、負荷テストを行っていない場合、たとえば 5 秒ごとに 1 つのリクエストがある場合に完全に機能します。
負荷テスト中、高頻度 (たとえば 5 秒ごと) で実行されるジョブがあります。
このエラーだけが発生するのではなく、他のジョブの他のエラーも発生します (まだデッドロック)!
MYSQL の場合:
デッドロックの例:
トランザクション分離
トランザクションの分離についてインターネットで読みました。
グラスフィッシュでは、トランザクションの分離レベルを設定できます。私はそれを読み取り非コミットにしました。
うまくいかなかったので、mysqlに同じレベルを設定しました:
SVP 誰かが私に何が問題なのか教えてもらえますか? 本当にわからない!!!!
ところで、私はインターネットで見たことがありますが、リクエストごとにトランザクション分離レベルを選択できます... JPA でメソッドのトランザクション分離レベルを直接設定することは可能ですか? グローバルなデータ更新 (15000 サービスのデクリメントなど) を行うジョブのみを読み取り非コミットにする必要があると思いますが、間違っていますか?
mysql - innodbとXtraDBの間に顕著な違いはありますか?
今日serverfaultで、XtraDBについて読みました。私はそれがinnoDBのフォークであり、その違いがどれほど大きいかを悩ませていたと読みました。変化に気づきますか、それとも試してみると無駄な時間だと思いますか?
mysql - 読み取り専用が設定されたスレーブサーバー上のストアドプロシージャ内の一時テーブル
レプリケーションスキームのマスター/スレーブを設定しましたが、最近、一部のユーザーがマスターではなくスレーブに直接書き込んだため、設定全体に一貫性がないため、問題が発生しました。
これらの問題が再発しないようにするために、スレーブにアクセスするユーザーから挿入、削除、更新などの権限を削除することにしました。問題は、一部のストアドプロシージャ(読み取り用)に一時テーブルが必要なことです。
グローバル変数read_onlyをtrueに変更すると、必要な処理が実行され、ストアドプロシージャが正しく機能するようになることを読みました(http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html# sysvar_read_only)が、エラーが発生し続けます:
MySQLサーバーは--read-onlyオプションで実行されているため、このステートメントを実行できません(1290)
(テスト目的で)使用したストアドプロシージャは次のとおりです。
一時テーブルの作成と削除テーブルは読み取り専用フラグで正常に機能します-INSERT行にコメントを付けると、正常に実行されます-しかし、その一時テーブルに挿入または削除したいときはいつでも、エラーメッセージが表示されます。
Mysql5.1.29-rcを使用しています。私のデフォルトのストレージエンジンはInnoDBです。
事前のおかげで、この問題は本当に私を夢中にさせています。
mysql - 非ブロッキング環境でこのMySQL/Innodbデッドロックの問題を修正するにはどうすればよいですか?
InnodbEngineストレージでMySQLを使用しています。テーブル上で複数の同時リクエストを送信する「イベント」環境があります。基本的に、これは次のように機能します。これを行うfind_or_insert関数があります。-find()->結果の場合、空の場合->挿入->結果のfind()
非ブロッキングMySQLドライバーを使用しているため、基本的に、この小さなアルゴリズムを同時に複数回開始すると、最初の結果を挿入する前にすべての検索が実行されます...など。
残念ながら、次のエラーが発生します:「ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションを再開してみてください」
誰でもそれを手伝うことができますか?
[編集]:また、MySQLが新しい要素をここに挿入するためだけにテーブルをロックする必要がある理由を実際には理解していません。最初は自動インクリメントが原因でしたが、削除しました...buそれでもエラーが発生します。MySQLが挿入時にテーブルをロックするのを防ぐ方法はありますか?
mysql - mysqlのパフォーマンス
innoDBエンジンを使用してMySqlでデータベースを開発しています。データベースには、約 3000 文字を含む各エントリを持つ varchar 型の列が含まれています。この列で検索を提供します。高速化のために、この列にインデックスを追加する必要があります。この点について何か情報をいただけますか?
検索を高速化するには、どのタイプのインデックスを配置する必要がありますか? パフォーマンスを向上させるために、他に注意する必要はありますか?
mysql - 巨大なMySQLテーブルを削除する最も簡単な方法
私は巨大なMySQL(InnoDB)データベースを持っており、セッションテーブルには、私たちと同じサーバー上で実行されている無関係の誤動作しているクローラーによって作成された数百万の行があります。残念ながら、私は今混乱を修正する必要があります。
やってみるとtruncate table sessions;
とてつもなく長い時間(30分以上)かかるようです。私はデータを気にしません。できるだけ早くテーブルを一掃してもらいたいだけです。もっと速い方法はありますか、それとも一晩だけ突き出さなければなりませんか?
mysql - OS X で MySQL InnoDB テーブルをどのように使用しますか?
my.cnf 設定の問題により、OS X で InnoDB MySQL 5.0 を使用する際に問題が発生しました。誰にでも役立つ場合に備えて、落とし穴をリストします。
InnoDB が無効になっている場合は、エラー ログ (データ ディレクトリ内の hostname.err) を確認してください。変更した空の設定がありました:
これが誰かに役立つことを願っています。Rails アプリを実行していて、セッション テーブルでエラーが発生しました。
mysql - ネストされたselectでの親クエリの結果の使用
これはかなり些細な問題だと思いますが、解決策を見つけるために何をグーグルで検索すればよいかわかりません。
私はこのようなテーブルを持っています:
インターネットバンキングサービスからデータを切り取って貼り付けることで、これを設定します。値は負の値でも正の値でもかまいません。日付と名前の両方に含まれる内容はかなり明白なはずです;)毎月の収益を確認できるクエリを作成しました。
ここで、月末にアカウントに蓄積された合計金額を追加の列として追加したいと思います。
123は私がそこに望んでいるものではありませんが、そのサブクエリ内のDATE_FORMATから結果を取得する方法がわかりません。
これは問題に取り組むための適切な方法でさえありますか?
これは主に個人的な演習(非常に小さなデータセットで実行)であるため、パフォーマンスについてはあまり心配していません。読み取り可能なSQLの方がはるかに重要です。
MySQL5.0.45でInnoDBテーブルを実行しています