没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
26页
MySQL课程之MySQL存储引擎入门 MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、 Archive 、 Federated 、 BLACKHOLE 、 Cluster/NDB 、 CSV 、 Example 等。其中, InnoDB 、 NDB 、 BDB 支持事务,其他存储引擎都不支持事务。
资源推荐
资源详情
资源评论
MySQL 课程之 MySQL 存储引擎入门
目 录
1 MySQL 存储引擎概述..........................................................................................................................................1
1.1 存储引擎的概念.........................................................................................................................................1
1.2 存储引擎的分类和特点............................................................................................................................1
1.3 存储引擎的基本操作................................................................................................................................1
2 MyISAM 存储引擎...............................................................................................................................................3
2.1 概述.............................................................................................................................................................3
2.2 创建 MyISAM 表.......................................................................................................................................4
2.3 相关参数配置.............................................................................................................................................7
2.4 MyISAM 锁机制........................................................................................................................................9
2.4.1 如何加表锁......................................................................................................................................9
2.4.2 锁定原理..........................................................................................................................................9
2.4.3 检查锁等待情况...........................................................................................................................10
2.5 MyISAM 的数据备份..............................................................................................................................10
2.6 常见故障和解决办法..............................................................................................................................10
3 InnoDB 存储引擎................................................................................................................................................11
3.1 概述...........................................................................................................................................................11
3.2 InnoDB 存储引擎性能参数配置.............................................................................................................12
3.2.1 innodb_buffer_pool_size 参数说明..............................................................................................12
3.2.2 innodb_flush_log_at_trx_commit 参数说明................................................................................12
3.2.3 innodb_additional_mem_pool_size 参数说明..............................................................................12
3.2.4 innodb_lock_wait_timeout 参数说明...........................................................................................12
3.2.5 innodb_support_xa 参数说明........................................................................................................12
3.2.6 innodb_log_buffer_size 参数说明................................................................................................13
3.2.7 innodb_log_file_size 参数说明.....................................................................................................13
3.3 创建 InnoDB 表空间................................................................................................................................13
3.3.1 InnoDB 表空间配置方法..............................................................................................................13
3.3.2 InnoDB 数据文件管理..................................................................................................................13
3.4 InnoDB 锁机制.........................................................................................................................................14
3.4.1 获取 InnoDB 行锁统计信息.........................................................................................................14
3.4.2 InnoDB 行锁特点..........................................................................................................................15
3.5 InnoDB 外键约束的使用.........................................................................................................................20
3.6 InnoDB 的数据备份.................................................................................................................................22
4 其他存储引擎......................................................................................................................................................22
4.1 MEMORY 存储引擎................................................................................................................................22
4.2 Merge 存储引擎.......................................................................................................................................23
4.3 Federated 存储引擎..................................................................................................................................23
4.4 CSV 存储引擎..........................................................................................................................................24
4.5 BLACKHOLE 存储引擎.........................................................................................................................24
1 MySQL 存储引擎概述
1.1 存储引擎的概念
简单的说,存储引擎可以理解为表的类型,不同的表类型有着不同的优点和缺点。和其他数据库相
比,这是 MySQL 所独有的特性。 MySQL 使用插件式存储引擎体系结构,这种体系结构提供了一套标
准的管理和支持服务体系,可以方便地对存储引擎加载和卸载。存储引擎本身是数据库服务器的组件 ,
负责对物理服务器层面上的基本数据进行维护和实际操作。
1.2 存储引擎的分类和特点
MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、
Archive 、 Federated 、 BLACKHOLE 、 Cluster/NDB 、 CSV 、 Example 等。其中, InnoDB 、 NDB
、 BDB 支持事务,其他存储引擎都不支持事务。
其中, MyISAM 和 InnoDB 是最常用的两种存储引擎。在 UNIX 平台上 ,MyISAM 是 MySQL 的默认
存储引擎;而在 Windows 平台上, InnoDB 则是默认的存储引擎。当创建新表时,如果未显式指定存
储引擎,则使用默认存储引擎来进行创建。
下面我们对最常用的一些存储引擎的主要特点进行简单的介绍:
* MyISAM :使用最广泛的存储引擎,存取速度快,但不支持事务。
* InnoDB :事务应用的首选存储引擎,并发性高,支持包括 ACID 事务在内的诸多事务特性。
* Memory :将所有数据保存在内存中,在需要快速查找引用和其他类似数据的环境下,可提供极快
的访问。
* Merge :可以将多个 MyISAM 表透明地进行联合查询。
* NDB Cluster :是在 MySQL 集群环境中使用的存储引擎,支持事务。
* Archive :是在 mysql4.1.3 中新加的表类型,用很小的空间来存储不带索引的大量数据, Archive 引
擎仅支持 INSERT 和 SELECT 操作,不支持 DELETE 、 UPDATE 操作。
* BDB : 支持事务,允许 COMMIT 和 ROLLBACK 。在 MySQL 5.1.12 版本中, MySQL 将把
Berkeley DB(BDB) 存储引擎移出所支持的数据库引擎列表。
其中最常用的一些存储引擎的更详细的特点,可以参考下表:
特点
MyISAM InnoDB MEMORY MERGE NDB
存储限制 有
64TB
有 没有 有
事务安全 支持 支持
锁机制 表锁 行锁 表锁 表锁 行锁
B 树索引 支持 支持 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
数据缓存 支持 支持 支持
索引缓存 支持 支持 支持 支持 支持
数据可压缩 支持
空间使用 低 高
N/A
低 低
内存使用 低 高 中等 低 高
批量插入的速度 高 低 高 高 高
支持外键 支持
1.3 存储引擎的基本操作
了解了存储引擎概念和各种存储引擎的特点后,我们通过下面的简单实例学习一下如何对表的存储
1
引擎进行一些常用的操作。
* 为表指定一种存储引擎。
mysql> create table t_engines(name varchar(100)) engine=innodb DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.00 sec)
注意:在不使用 engine 关键字时 ,MySQL 将使用 默认存储引擎。
* 查看当前表使用的存储引擎
mysql> show create table t_engines \G;
*************************** 1. row ***************************
Table: t_engines
Create Table: CREATE TABLE `t_engines` (
`name` varchar(100) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
* 更改当前表的存储引擎
查看发现当前使用的存储引擎是 InnoDB 存储引擎 :
mysql> show create table t_engines \G;
*************************** 1. row ***************************
Table: t_engines
Create Table: CREATE TABLE `t_engines` (
`name` varchar(100) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
更改 当前表使用的存储引擎 为 MyISAM:
mysql> alter table t_engines engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
切换后查看当前表的存储引擎 :
mysql> show create table t_engines \G;
*************************** 1. row ***************************
Table: t_engines
Create Table: CREATE TABLE `t_engines` (
`name` varchar(100) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
在学会指定存储引擎、查看存储引擎、切换存储引擎命令后,你一定想知道自己当前使用的 MySQL
都支持那些存储引擎吧,下面的命令可以帮助我们找到答案。
* 查看当前版本的 MySQL 所支持的存储引擎
mysql> show engines;
+------------+---------+----------------------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+----------------------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | NO | Supports transactions and page-level locking |
2
| BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | NO | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+------------+---------+----------------------------------------------------------------+
12 rows in set (0.00 sec)
从查询结果我们可以看出,目前的 MySQL 并不支持 BDB 、 EXAMPLE 、 ARCHIVE 等存储引擎。
如果您需要使用这些存储引擎,可以将这些存储引擎插件装载到 mysql 。例如,要想加载 example 引擎,
首先应加载 ha_example.so 模块:
INSTALL PLUGIN ha_example SONAME 'ha_example.so';
文件 .so 必须位于 MySQL 服务器库目录下(典型情况下是 installdir/lib )。
2 MyISAM 存储引擎
2.1 概述
MyISAM 存储引擎是 MySQL 使用最为广泛的存储引擎,它的最大特点是存取速度快,特别适合于以
浏览为主的互联网行业,但不支持事务,在安全性极高的应用中并不适合。在 Solaris 和其他类 UNIX
平台上是 MySQL 默认的存储引擎。
每个 MyISAM 存储引擎的表在磁盘上存储成三个文件,每个文件的名字以表的名字开始,扩展名指
出文件类型。 .
* frm 文件存储表定义。
* 数据文件的扩展名为 .MYD (MYData) 。
* 索引文件的扩展名是 .MYI (MYIndex) 。
要想创建 MyISAM 表 当然就要使用 MyISAM 存储引擎,通过 ENGINE 关键字来进行标识 , 示例代
码如下:
m ysql>use test
mysql>CREATE TABLE t (i INT) ENGINE = MYISAM;
mysql>exit
--查看生成的文件
shell> ls –l
-rwx------ 1 mysql mysql 413696 Sep 2 11:11 t.MYI --索引文件
-rwx------ 1 mysql mysql 287946 Sep 2 11:11 t.MYD --数据文件
-rwx------ 1 mysql mysql 287946 Sep 2 11:11 t.frm --表定义
MyISAM 存储引擎支持 3 种存储格式:静态存储格式、动态存储格式、压缩存储格式。
* 当 MyISAM 表不包含变长列 (VARCHAR, BLOB, 或 TEXT) 时,使用静态存储格式,静态存储格式
MyISAM 表的特征是: 非常快、容易缓存、崩溃后容易重建(因为记录位于固定位置)、产生碎片的
几率小、比动态格式需要更多的磁盘空间、 CHAR 列对列宽度是空间填补的。
* 当 MyISAM 表 包 含 任 何 变 长 列 ( VARCHAR, BLOB 或 TEXT ) 或 者 使 用
ROW_FORMAT=DYNAMIC 关键字来创建表,被创建的表都会使用动态存储格式。这种格式的特征是 :
更少的存储空间、在崩溃后要比静态格式表更难重建,因为一条记录可能被分为多个片存储在不同位
置、对空串或者值为 0 的列在每条记录前面的位图中做标记,这些数据将不在磁盘上保存,只保存内
容的实际长度。
* 压缩存储格式的 MyISAM 表,可以节省大量的磁盘空间,压缩后的数据为只读,为了安全起见,
3
可以在压缩的时候加 -b 选项做一个备份,压缩存储格式适合存储庞大的历史数据,可以节省大量的磁
盘空间。
上面简单的介绍了 MyISAM 表的存储特性,下面再来了解一下 MyISAM 表的其他特点。
* 可以对包含 NULL 值的列进行索引。
* TEXT 和 BLOB 列可以被索引。
* Myisampack 能够压缩 varchar 和 blob 列。
* 更好的索引压缩。
* 更好和更快的 auto_increment 处理。
* 为了得到更好的性能,数据文件和索引文件可以被存储在不同的物理磁盘上,建表的时候用以下参
数指定:
DATA DIRECTORY = 'absolute path to directory'
INDEX DIRECTORY = 'absolute path to directory'
2.2 创建 MyISAM 表
在对 MyISAM 表有了初步了解后,我们来创建自己的 MyISAM 表,下面给出了三种创建 MyISAM
表的方法。
* 创建静态 MyISAM 表
mysql> create table test (a char(20),b int(11)) engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)
mysql> show table status like '%test%' \G;
*************************** 1. row ***************************
Name: test
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 18295873486192639
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2008-09-07 21:54:24
Update_time: 2008-09-07 21:54:24
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
对于静态行 Row_format 选项为 Fixed
* 创建动态 MyISAM 表
mysql> drop table test;
4
剩余25页未读,继续阅读
资源评论
- WUTAOWUTAO2012-04-17不错,短小精悍,适合入门学习
yykings
- 粉丝: 34
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功