小贝_mysql常见存储引擎区别_MySQL
存储引擎区别
简要:
1、存储引擎
2、myisam与innodb区别
一、存储引擎
1、什么是存储引擎
通俗地讲就是存储和管理数据的方式
形象例子:
某处地方的自行车管理员:李某,张某。每天都有很多人来存取自行车。李某的管理方式是: 车主自行存放,李某也不记录对方存的是什么车。取车时则要交管理费。也不检查取的是否是对方自己的车。相反,张某,则在车主存放车时,记录存放人的特征以及对应车的信息。当人来取车时,张某还要小心核对,人与车的特征是否对应。
从上述例子可知:
a、从效率的角度来看: 李某比张某快,因为其不用进行校对
b、从安全性的角度来看: 张某比李某要安全,因为其进行了校对。
总结: 实际上,mysql的存储引擎也是这样工作,每种存储引擎都有自身的存取方式,因此在选择上,应该根据实际情况来定。
2、查看mysql所有引擎
mysql>show engines;
二、Myisam与Innodb的区别
之所以要区分这两种存储引擎,是因为它们是目前使用最频繁的mysql引擎,因此有必要对它们进行区分。有利于在实际情况下进行灵活运用。
1、myisam存储引擎
a、表构成
建立表mytest
create table mytest(id int unsigned,content char(5))engine=myisam;
表对应磁盘的文件
总结:
a1、后缀名为:frm为表结构文件,MYD为数据文件,MYI为索引文件
a2、建立myisam引擎的表,都会建立这三个文件,在进行mysql数据库备份或转移时,方便操作
b、批量插入数据
插入1000行数据
c、查询表的条数
总结: 从截图可以看到mysiam有对表的行数进行记录,而不是需要一条条去记录
d、是否支持事务
总结: myisam不支持事务,因此如果你在数据库进行事务操作,但是事务无法成功,你就要看你的表引擎了,看这种引擎是否支持事务。
e、对auto_increment列的操作(修改表mytest的id列)
插入数据
删除id为3的数据,然后在插入数据
这时发现,删除id为3后,继续添加的数据,id并不是从3开始,而是跳过3,从4开始算起。
处理方案:
删除数据后,重置auto_increment
总结: myisam引擎的表会对表中auto_increment进行存放,存放在文件磁盘上。即使是重启服务,也不会丢失。
2、innodb存储引擎
a、表结构
建立表myinnodb表
create table myinnodb(id int unsigned,content char(5))engine=innodb;
其中,frm为表结构文件,ibd为数据和索引文件
b、批量插入数据 (插入1000行数据)
c、查询表总条数
总结: innodb引擎的表,在计算总行数时,是一条条算
d、是否支持事务
总结: innodb引擎表支持事务操作
e、对auto_increment列的操作(修改表myinnodb的id列)
插入数据
删除id为3的数据
继续插入数据
发现这种情况跟myisam引擎的一致。
处理方案:
总结: innodb可以对auto_increment进行重置,但其对auto_increnment列仅被存储在主内存中,而不是存在磁盘上
重启服务
3、myisam与innodb的区别
|
myisam |
innodb |
文件构成 |
frm、MYD、MYI |
frm、ibd |
是否支持事务 |
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持 |
InnoDB提供事务支持事务,外部键等高级数据库功能 |
计算表行数 |
select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的 |
InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
|
锁的粒度 |
表锁 |
行锁 |
对AUTO_INCREMENT的操作 |
存放在磁盘上,可以通过alter进行重置 |
仅被存储在主内存中,而不是存在磁盘上 |
4、表锁与行锁的区别
在执行数据库写入的操作(insert,update,delete)的时候,mysiam表会锁表,而innodb表会锁行。通俗点说,就是你执行了一个update语句,那么mysiam表会将整个表都锁住,其他的insert和delete、update都会被拒之门外,等到这个update语句执行完成后才会被依次执行。
而锁行,就是说,你执行update语句是,只会将这一条记录进行锁定,只有针对这条记录的其他写入、更新操作会被阻塞并等待这条update语句执行完毕后再执行,针对其他记录的写入操作不会有影响。
5、myisam与innodb的选择
a、业务需要支持事务,选择innodb
b、业务查询居多,选择myisam
6、总结
MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。
补充:
1、对于innodb的数据结构,首先要先理解两个概念性的问题:共享表空间以及独占表空间。
什么是共享表空间和独占表空间
共享表空间以及独占表空间都是针对数据的存储方式而言的。
共享表空间: 某一个数据库的所有表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。默认的文件名为:ibdata1初始化为10M。
独占表空间: 每一张表都将会生成以独立的文件方式来进行存储,每一张表都有一个.frm表描述文件,还有一个.ibd文件。其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









近年、PHP プログラミングのテンプレート エンジンは PHP 開発の重要な部分となっており、プログラマーによるページの開発と管理が容易になりました。この記事では、PHP プログラミングにおける一般的なテンプレート エンジンを紹介します。 SmartySmarty は一般的に使用される PHP テンプレート エンジンで、キャッシュされたテンプレート、プラグイン モジュール、カスタム関数などの一連の機能をサポートしています。 Smarty の構文は非常に柔軟で、PHP 変数と HTML タグを組み合わせる問題を解決できるため、PHP 言語はテンプレート化されたデザインにより適しています。しかも、Sさん

10月8日のニュースによると、米国の自動車市場は水面下で変化を遂げており、これまで親しまれてきた6気筒や8気筒エンジンが徐々にその優位性を失い、3気筒エンジンが台頭しつつあるという。 10月8日のニュースは、米国の自動車市場が水面下で変化を遂げていることを示した。かつて愛された6気筒や8気筒エンジンは徐々にその優位性を失い、3気筒エンジンが台頭し始めているが、アメリカ人の多くの心の中には大排気量モデルが大好きで「アメリカンビッグV8」というイメージがある。常にアメリカ車の代名詞であり続けています。しかし、最近海外メディアが発表したデータによると、米国の自動車市場の状況は大きく変化しており、水面下での争いは激化している。 2019 年以前は、米国が

『サイバーパンク2077』で黄学者が作った知性あるNPCはすでに中国語を話せる? Qubit を実際に体験して、NPC が中国語と英語で流暢に会話し、自然な表情と動き、口の形を一致させているのを目の当たりにする...目の前にスクリーンがなかったら、本当にその場にいるような気分になるでしょう。今年の CES 展示会で、Nvidia はインテリジェント エンジン Avatar Cloud Engine (ACE) を使用してゲームの NPC を「生きた」ものにし、大きな衝撃を与えました。 △CESに展示されるインテリジェントなNPCにはACEが採用されており、事前にスクリプトを用意することなく、ゲーム内のキャラクターが生き生きとした表情や体の動きを見せながら、プレイヤーとリアルな音声会話を行うことができます。デビュー当時はUbisoft、Tencent、NetEase、MiHoYoなどが存在しました。

リアルタイム グローバル イルミネーション (リアルタイム GI) は、常にコンピュータ グラフィックスの聖杯でした。長年にわたり、業界はこの問題を解決するためにさまざまな方法を提案してきました。一般的な方法には、静的ジオメトリ、大まかなシーン表現、または大まかなプローブの追跡などの特定の仮定を利用して問題領域を制約すること、および 2 つの間の照明を補間することが含まれます。 Unreal Engine のグローバル イルミネーションおよび反射システム Lumen テクノロジーは、Krzysztof Narkowicz と Daniel Wright によって共同設立されました。目標は、均一な照明と焼き付けたような照明品質を実現できる、以前のものとは異なるソリューションを構築することでした。最近、SIGGRAPH 2022 でクシシュトフ・ナルコ氏が

Redmiは本日、新しいRedmi GPro 2024が3月4日に正式にリリースされることを正式に発表しました。つまり、来週にはこのエキサイティングな新製品がリリースされることになります。 RedmiGPro2024は、eスポーツのフラッグシップとして完全デビューし、携帯電話業界の能力をノートブックビジネスに深く統合し、210Wのスーパーパフォーマンスリリースを提示し、Redmiパフォーマンスが新たな最高値に達します。 i9-14900HX プロセッサーと RTX4060 グラフィックス カードを搭載し、e スポーツとクリエーションを完璧に組み合わせ、二重の進化を実現します。この観点から見ると、この新製品の性能は再び向上しており、実際の効果は興味深いものです。公式ウォームアップでは、新しいRedmi G Pro 2024には暴力的なエンジンのPCバージョンが搭載されていると述べられました。携帯電話技術の強化、3 つの主要な要因が牽引

H5 開発における位置属性の一般的な適用シナリオには、特定のコード例が必要です。H5 開発では、CSS の位置属性は非常に重要であり、Web ページ内の要素の位置を制御します。 Position 属性を適切に適用することで、ページ レイアウトの柔軟性と美しさを実現できます。この記事では、position 属性の一般的なアプリケーション シナリオを紹介し、具体的なコード例で説明します。静的 (静的位置決め): 位置属性のデフォルト値は st です。

SAS が Oracle データベースに接続するときにエンジンの問題を解決するには、特定のコード例が必要です。SAS ソフトウェアをデータ分析に使用する場合、多くの場合、分析と処理のためのデータを取得するためにデータベースに接続する必要があります。その中でも、Oracle データベースへの接続は比較的一般的な操作です。ただし、Oracle データベースに接続するときにエンジンの問題が発生し、接続が失敗したり、正常に動作しなくなる場合があります。この記事では、SAS ソフトウェアで Oracle データベースに接続する際のエンジンの問題を解決する方法と、具体的なコードを紹介します。

スーパー グローバル変数は PHP の非常に重要な概念であり、関数やその他の変数を渡すメソッドを使用せずに、プログラム内のどこからでも変数値にアクセスできます。この記事では、PHP プログラミングで一般的に使用されるいくつかのスーパー グローバル変数について説明します。 $_GET$_GET は、HTML フォームによって送信されたデータを収集するために使用されるスーパー グローバル変数の 1 つです。 $_GET を通じて、指定された URL のクエリ文字列パラメータを取得できます。これらのパラメータは、ページ上のデータ フィルタリングやデータ クエリなどの操作に使用できます。たとえば、次のようなとき
