ホームページ データベース mysql チュートリアル MySql事务无法回滚的原因_MySQL

MySql事务无法回滚的原因_MySQL

Jun 01, 2016 pm 01:01 PM
事務 理由

使用MySQL时,如果发现事务无法回滚,但Hibernate、Spring、JDBC等配置又没有明显问题时,不要苦恼,先看看MySQL创建的表有没有问题,即表的类型。

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyIASM是IASM表的新版本,有如下扩展:

二进制层次的可移植性。

NULL列索引。

对变长行比ISAM表有更少的碎片。

支持大文件。

更好的索引压缩。

更好的键吗统计分布。

更好和更快的auto_increment处理。

以下是一些细节和具体实现的差别:

1. InnoDB不支持FULLTEXT类型的索引。

2. InnoDB中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时,两种表的操作是一样的。

3. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

5. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

在MySQL 5.0里面,MyISAM和InnoDB存储引擎性能差别并不是很大,针对InnoDB来说,影响性能的主要是 innodb_flush_log_at_trx_commit 这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交“SET AUTOCOMMIT = 0”来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能,但是我测试发现没有特别明显的提升。

基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎了,因为InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

スクリーンキャストが失敗する原因は何ですか?「初心者必読:ワイヤレススクリーンキャスト接続が失敗する問題の解決方法」 スクリーンキャストが失敗する原因は何ですか?「初心者必読:ワイヤレススクリーンキャスト接続が失敗する問題の解決方法」 Feb 07, 2024 pm 05:03 PM

ワイヤレス スクリーンキャストが接続に失敗するのはなぜですか?何人かの友人が、ワイヤレス画面ミラーリングを使用すると接続に失敗すると報告しています。何が起こっているのでしょうか?ワイヤレス画面ミラーリング接続に失敗した場合はどうすればよいですか?パソコン、テレビ、携帯電話が同じWiFiネットワークに接続されているか確認してください。画面ミラーリング ソフトウェアが正しく動作するには、デバイスが同じネットワーク上にある必要がありますが、クイック スクリーン ミラーリングも例外ではありません。したがって、すぐにネットワーク設定を確認してください。画面ミラーリング機能がサポートされているかどうかを判断することが重要です。スマート TV と携帯電話は通常、DLNA または AirPlay 機能をサポートしています。スクリーンキャスト機能に対応していない場合、スクリーンキャストはできません。デバイスが正しく接続されているか確認する: 同じ WiFi に複数のデバイスが存在する可能性があります。画面を共有したいデバイスに接続していることを確認してください。 4. ネットワークが

WPS Office が印刷ジョブを開始できない原因は何ですか? WPS Office が印刷ジョブを開始できない原因は何ですか? Mar 20, 2024 am 09:52 AM

プリンターをローカルエリアネットワークに接続して印刷ジョブを開始すると、「wpsoffice で印刷ジョブを開始できません...」という問題が発生し、ファイルを印刷できなくなるなど、軽微な問題が発生することがあります。 、仕事や勉強に遅れが生じ、悪影響を及ぼします。wpsoffice で印刷ジョブを開始できない問題の解決方法を説明します。もちろん、ソフトウェアをアップグレードしたりドライバーをアップグレードしたりして問題を解決することもできますが、それには長い時間がかかります。まず、wpsoffice が印刷ジョブを開始できず、結果として印刷できないことに気付きました。この問題を解決するには、一つ一つ調査する必要があります。また、プリンターの電源が入っており、接続されていることを確認してください。一般に、接続異常により次のようなことが起こります。

PHP 500 エラーの総合ガイド: 原因、診断、修正 PHP 500 エラーの総合ガイド: 原因、診断、修正 Mar 22, 2024 pm 12:45 PM

PHP 500 エラーの包括的なガイド: 原因、診断、および修正 PHP 開発中に、HTTP ステータス コード 500 のエラーが頻繁に発生します。このエラーは通常「500InternalServerError」と呼ばれ、サーバー側でのリクエストの処理中に不明なエラーが発生したことを意味します。この記事では、PHP500 エラーの一般的な原因、診断方法、修正方法を検討し、参照用の具体的なコード例を示します。 1.500 エラーの一般的な原因 1.

Apple 携帯電話の充電が非常に遅いのはなぜですか? Apple 携帯電話の充電が非常に遅いのはなぜですか? Mar 08, 2024 pm 06:28 PM

一部のユーザーは、Apple の携帯電話を使用するときに充電速度が遅くなることがあります。この問題にはさまざまな理由があり、充電デバイスの電力低下、デバイスの故障、携帯電話の USB インターフェイスの問題、さらにはバッテリーの劣化などの要因が考えられます。 Apple 携帯電話の充電が非常に遅いのはなぜですか? 答え: 充電機器の問題、携帯電話のハードウェアの問題、携帯電話のシステムの問題です。 1. ユーザーが比較的低電力の充電機器を使用すると、携帯電話の充電速度が非常に遅くなります。 2. サードパーティ製の低品質の充電器や充電ケーブルを使用すると、充電が遅くなることがあります。 3. ユーザーは、正規の純正充電器を使用するか、通常の認定された高出力充電器と交換することをお勧めします。 4. 携帯電話の USB インターフェイスに接続できないなど、ユーザーの携帯電話のハードウェアに問題があります。

win11のブルースクリーンの根本原因を明らかにする win11のブルースクリーンの根本原因を明らかにする Jan 04, 2024 pm 05:32 PM

多くの友人がシステム ブルー スクリーンの問題に遭遇したと思いますが、Win11 ブルー スクリーンの原因がわかりません。実際、システム ブルー スクリーンには多くの原因があり、順番に調査して解決することができます。 win11 ブルースクリーンの原因: 1. メモリ不足 1. 実行するソフトウェアが多すぎる場合、またはゲームがメモリを消費しすぎる場合に発生する可能性があります。 2. 特に現在win11ではメモリオーバーフローのバグがあるので遭遇する可能性が非常に高いです。 3. 現時点では、仮想メモリを設定して問題を解決することもできますが、最善の方法はメモリ モジュールをアップグレードすることです。 2. CPU のオーバークロックと過熱 1. CPU の問題の原因は、実際にはメモリの問題の原因と似ています。 2. 通常、後処理、モデリング、その他のソフトウェアを使用しているとき、または大規模なゲームをプレイしているときに発生します。 3. CPU 消費量が多すぎる場合、ブルー スクリーンが表示されます。

win11が自動的にシャットダウンしてしまうのはなぜですか? win11が自動的にシャットダウンしてしまうのはなぜですか? Jan 01, 2024 pm 11:39 PM

最近、友人がシステムアップデート後にWin11が自動的にシャットダウンするという問題に遭遇しました。多くの場合、ゲームをプレイしているときに発生しますが、原因がわかりません。実はこれ、パソコンの設定不足やシステム障害が原因の場合もありますので、その原因と対処法を見ていきましょう。 win11 が自動的にシャットダウンするのはなぜですか? 1. 構成が不十分です 1. Windows 11 システムの CPU とメモリ要件は Windows 10 よりも高くなります。 2. 特に大規模なゲームやその他のタスクを実行している場合、自動的にシャットダウンすることが非常に簡単です。 3. ユーザーは、スタート メニュー アイコンを右クリックし、[タスク マネージャー] ページを開くことで、自動シャットダウン前の使用状況の復元を試みることができます。 4. このページでCPU、メモリ、ディスクを確認してみましょう。

HTTP ステータス コード 550 の原因と解決策のトラブルシューティング HTTP ステータス コード 550 の原因と解決策のトラブルシューティング Feb 20, 2024 am 09:49 AM

HTTP ステータス コード 550 の原因と解決策を調べる はじめに: ネットワーク通信において、HTTP ステータス コードは重要な役割を果たし、サーバーがリクエストを処理した結果を示すために使用されます。その中でも、HTTP ステータス コード 550 は比較的まれなステータス コードであり、通常はサーバーがリクエストの実行を拒否することに関連しています。この記事では、HTTP ステータス コード 550 の原因を調査し、解決策を提供します。 1. HTTP ステータス コードの基本概念 HTTP ステータス コード 550 を理解する前に、HTTP ステータス コードの基本概念を簡単に理解しましょう。

ロック待機タイムアウトを超過しました。トランザクションを再起動してください - MySQL エラーの解決方法: トランザクション待機タイムアウト ロック待機タイムアウトを超過しました。トランザクションを再起動してください - MySQL エラーの解決方法: トランザクション待機タイムアウト Oct 05, 2023 am 08:46 AM

Lockwaittimeoutexceeded;tryrestartingtransaction - MySQL エラーの解決方法: トランザクション待機タイムアウト。MySQL データベースを使用すると、一般的なエラーが発生することがあります: Lockwaittimeoutexceeded;tryrestartingtransaction。このエラーは、トランザクション待機タイムアウトを示します。このエラーは通常、次の場合に発生します。

See all articles