タグ付けされた質問 「rollback」

2
MySQLのトランザクションDDLワークフロー
私は少しはDDL文(ことを発見して驚いたalter table、create indexなど)が暗黙のMySQLで現在のトランザクションをコミットします。MS SQL Serverから来て、トランザクションでデータベースの変更をローカルで行う機能(その後ロールバックされた機能)は、ワークフローの重要な部分でした。継続的な統合では、何らかの理由で移行が中断した場合にロールバックが使用されたため、少なくともデータベースが半分移行された状態のままになりませんでした。 MySQLを移行と継続的インテグレーションで使用する場合、これら2つの問題をどのように解決しますか?

4
一部のDBMSで特定のDDLステートメントのロールバックが許可されないのはなぜですか?
最近、MySQL が「alter table」などのDDLのロールバックをサポートしていないことがわかりました。サポートしない技術的な理由はありますか?それは単に彼らにとって「面白くない」機能ですか? 編集:この比較が見つかりました。トランザクションDDLをサポートする多くのDBMSがあるようです。


2
挿入中にディスク容量がいっぱいになりました、どうなりますか?
今日、データベースを保存するハードドライブがいっぱいであることを発見しました。これは以前にも起こりましたが、通常、原因は非常に明白です。通常、不適切なクエリがあり、tempdbに大量の流出が発生し、ディスクがいっぱいになるまで増大します。今回は、tempdbがドライブ全体の原因ではなく、データベースそのものであるため、何が起こったのかが少しわかりにくくなりました。 事実: 通常のデータベースサイズは約55 GBでしたが、605 GBに増加しました。 ログファイルのサイズは標準で、データファイルは巨大です。 データファイルには85%の使用可能なスペースがあります(これを「空気」と解釈します:使用されたが、解放されたスペースです。SQLServerは、割り当てられるとすべてのスペースを予約します)。 tempdbのサイズは正常です。 考えられる原因を見つけました。あまりにも多くの行を選択するクエリが1つあります(不正な結合により、数十万が予想される110億行が選択されます)。これはSELECT INTOクエリであり、次のシナリオが発生したのではないかと思いました。 SELECT INTOが実行されます ターゲット表が作成されます データは選択されたとおりに挿入されます ディスクがいっぱいになり、挿入が失敗する SELECT INTOは中止され、ロールバックされます ロールバックは領域を解放します(既に挿入されたデータは削除されます)が、SQL Serverは解放された領域を解放しません。 ただし、この状況では、によって作成されたテーブルSELECT INTOがまだ存在することを期待していなかったため、ロールバックによって削除されるはずです。私はこれをテストしました: BEGIN TRANSACTION SELECT T.x INTO TMP.test FROM (VALUES(1))T(x) ROLLBACK SELECT * FROM TMP.test これは次の結果になります。 (1 row affected) Msg 208, Level 16, State 1, Line 8 Invalid object name 'TMP.test'. …

4
トランザクションでテーブル構造を変更し、エラーが発生した場合にロールバックできますか?
ALTER TABLE実行中のステートメントがいくつかあります。すべてが機能するわけではありません(SQLデータ比較の実行結果です)。それらをいくつかのトランザクションにグループ化し、何か問題が発生した場合はステートメントをロールバックします。 これは可能ですか、それともロールバックできるデータのみですか?

2
これら2つのSQL Serverロールバックはどのように異なりますか?
SQL Server 2008 R2では、これら2つのロールバックの違いは次のとおりです。 ALTER数分間ステートメントを実行し、「実行のキャンセル」を押します。完全にロールバックするには数分かかります。 同じALTERステートメントを実行しますが、これはLDFファイルが正常に完了するのに十分な大きさでないことを確認します。いったんLDF制限が満たされるとNO「自動拡張」が許されない、クエリの実行はすぐに停止します(またはロールバックが起こる)、このエラーメッセージが表示されて: The statement has been terminated. Msg 9002, Level 17, State 4, Line 1 The transaction log for database 'SampleDB' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases 次の点で、これら2つの違いは何ですか? 2番目の「ロールバック」が瞬時に行われるのはなぜですか?ロールバックと呼べるかどうかは完全にはわかりません。私の推測では、トランザクションログは実行の進行とともに書き込まれ、タスクを完全に完了するための十分なスペースがないことがわかると、コミットせずに「終了」メッセージで停止します。 最初のロールバックに非常に長い時間がかかるとどうなりますか(ロールバックはシングルスレッドです)。 2.1。SQL Serverは戻って、LDFファイルに作成されたエントリを元に戻しますか? 2.2。LDFファイルサイズは(からのロールバックの終わりに小さくなりますDBCC …

2
INSERT INTOで新しく作成された宛先テーブルの後にROLLBACKが機能しない
私は、CSVファイル(customers.csv)をMySQLテーブル(customers)にインポートするPHPスクリプトに取り組んでいます。 mysqlテーブルにCSVファイルの内容を挿入する前に、最初に元のcustomersテーブルをバックアップしています。 mysqlトランザクションでインポートプロセス全体(バックアップを含む)をラップしています(CSVが途中で破損している場合を考慮し、インポートがアトミックであることを確認するため)。 問題は、ステートメントの直後にROLLBACKを呼び出したときにROLLBACKが機能しないように見えることですINSERT INTO。phpMyAdminを介してデータベースをチェックすると、新しく作成されたテーブルとROROW INSIDE ITがroollback後も存在していることがわかります。 操作のログは次のとおりです。 [2015-01-19 14:08:11] DEBUG: "START TRANSACTION" [] [] [2015-01-19 14:08:11] DEBUG: SHOW TABLES LIKE :table_name; [] [] [2015-01-19 14:08:28] DEBUG: CREATE TABLE `customers__20150119_14_08_20` LIKE `customers` [] [] [2015-01-19 14:08:37] DEBUG: INSERT INTO `customers__20150119_14_08_20` SELECT * FROM `customers` [] [] [2015-01-19 14:08:50] DEBUG: "ROLLBACK" …

2
MongoDBレプリカセットSECONDARYが「ROLLBACK」状態でスタック
私たちのmongodbの最近の自動更新中に、降格PRIMARYしたときPRIMARYに永久にROLLBACK状態になりました。 ROLLBACK状態で数時間経過した後も、mongodbデータベースディレクトリのディレクトリにはロールバック.bsonファイルがありませんでしたrollback。それと、ログファイルの次の行も[rsSync] replSet syncThread: 13410 replSet too much data to roll back、ROLLBACKプロセスが失敗したことを示しているようです。 何がうまくいかなかったかを分析するのを手伝ってほしい。 ログで2つの異なるロールバックが発生したようです。それはそうですか、それとも3時間かかったものですか? 最初のロールバック(19:00時間)が成功した場合、ou rollbackディレクトリに何も表示されないのはなぜですか? これらすべての警告の原因について推測はありますか?それはロールバックの失敗に関連しているのでしょうか? 最初のデータが原因で18秒のデータが失われましたROLLBACKか? 「スタックROLLBACK状態」の問題に対する一般的な解決策はありますか?最終的に、DB全体をホースし、プライマリから再同期する必要がありました。 関連するログ行は次のとおりです。 # Primary coming back after restart... Tue May 15 19:01:01 [initandlisten] MongoDB starting : pid=3684 port=27017 dbpath=/var/lib/mongodb 64-bit host=magnesium Tue May 15 19:01:01 [initandlisten] db version v2.0.5, pdfile version 4.5 …
11 mongodb  rollback 

2
保留中のトランザクションのあるMySQLテーブルの削除
MySQLで保留中のトランザクションがあるInnoDBテーブルまたはデータベースを(できればファイルシステムレベルで)削除する方法はありますか? どうした: MySQL 5.5.28を使用して実行LOAD DATA INFILE…し、巨大なデータセット(3億行)をInnoDBテーブルにインポートしました。set autocommit = 0;以前は使用していませんでした。残念ながら、mysqldインポートの途中で中止されました。 を再起動mysqlすると、トランザクションがロールバックされ、次のようなメッセージがシステムログに記録されます。 mysqld_safe [4433]:121212 16:58:52 InnoDB:1つのアクティブなトランザクションが完了するのを待機しています 問題は、ロールバックが25時間を超えて実行されている間 mysqld、ソケット接続を受け入れていないことです。 /var/lib/mysql/*このマシンには他にもいくつかのInnoDBデータベース/テーブルがあるため、削除して最初から始めることはできません。ただし、問題のあるテーブルは、別のデータベース内の唯一のテーブルです。後ですべてのデータを再インポートできるため、テーブル全体またはデータベース全体を削除しても問題ありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.