ホームページ データベース mysql チュートリアル MySQL逻辑架构及存储引擎简介

MySQL逻辑架构及存储引擎简介

Jun 07, 2016 pm 04:47 PM
mysqlストレージエンジン

MySQL5.5默认存储引引擎为InnoDB,最简单的答案是如果你不知道该选用何种存储引擎那么你就用InnoDB,因为它支持事务并且性能好。

MySQL逻辑架构:

 

 

并发控制:由锁实现

读锁:也叫共享锁,读锁互相不阻塞。A加锁表后A,b,c,d都能读该表但不能写该表。

写锁:也叫排他锁,写锁相互阻塞。A加排他锁后,其他线程不能读写该表。

 

锁粒度:

表锁:锁一个表,并发粒度小。代表存储引擎MyISAM

行锁:锁一行数据,并发粒度大,并发操作表性能好。代表存储引擎InnoDB。锁粒度小系统对锁的开销也大。

假如给一个表加读锁,那么其他线程也无法对该表进行写操作了,如果是加行锁那么该线程只阻塞只对这一行数据的读写,表中其他行的数据其他线程可以读写,提高并发性能。

 

事务:相当于把N条语句打包成一条语句,这个包中的N条语句全部执行成功则成功,如果有其中一条语句没有执行成功则事务回滚到原先状态事务执行失败不写入硬盘。

ACID(atomicityconsistency isolation durability)原子性,一致性,隔离性,持久性。是事务存储引擎的特性。

原子性:事务相当于一个N条语句的包,要么全部执行成功,要么则失败,对于事务来说不能成功执行一个事务的一部分,这就是原子性。

一致性:从一个一致的状态转换到另一个一致的状态。要么成功转换为成功的状态,要么失败回滚为原来的状态。

隔离性:A事务看不到B事务。

持久性:事务执行成功则写入硬盘,这就是叫持久性。

 

存储引擎:

·数据库存在目录中,库中的表存在该目录下。

·查看存储引擎:show table status like ‘table_name’ \G;

 

MyISAM存储引擎

·将表存在3个文件中.MYD存数据.MYI存索引.frm存表定义。

·支持表锁

·myisam表很大时更容易出现故障,需要手工进行修复表,,并且修复时间会非常漫长。修复表步骤:检查表,然后修复表。

·压缩表

 

InnoDB

·将表存在2个文件中ibdata1数据文件和数据库目录下的.frm表定义文件。

·支持事务

·支持行锁

·外键约束

·基于聚簇索引建立的,聚簇索引对主键查询性能非常高。

·InnoDB支持热备份,而其他所有存储引擎都不支持热备份。

 

选择合适的存储引擎:

·MySQL5.5默认存储引引擎为InnoDB,最简单的答案是如果你不知道该选用何种存储引擎那么你就用InnoDB,因为它支持事务并且性能好。有些人说MyISAM性能比InnoDB快,这可不一定,书中说很多时候InnoDB让MyISAM望尘莫及。

 

选择依据:

1、事务:InnoDB支持事务,MyISAM不是事务型存储引擎。

2、InnoDB支持在线热备份。

3、崩溃恢复,InnoDB是事务型存储引擎支持,MyISAM崩溃后修复一个大的表是非常慢的。

4、特有特性,比如聚簇索引,外键约束,行锁等等。

 

如果对数据安全性要求不高,并且主要读取的并且数据库表不是很大的场景下应用MyISAM。

数据量非常大那么还是用InnoDB吧,当读写非常频繁时候行级锁性能更好。

linux

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

MySQLの大きなデータセットをどのように処理しますか? MySQLの大きなデータセットをどのように処理しますか? Mar 21, 2025 pm 12:15 PM

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? Mar 19, 2025 pm 03:52 PM

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

外国の鍵を使用して関係をどのように表現しますか? 外国の鍵を使用して関係をどのように表現しますか? Mar 19, 2025 pm 03:48 PM

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

JSON列にインデックスを作成するにはどうすればよいですか? JSON列にインデックスを作成するにはどうすればよいですか? Mar 21, 2025 pm 12:13 PM

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)

See all articles