MySQL主要有两个层次组成:MySQL核心【MySQL服务器层】、插件式存储引擎
MySQL处理机制无论在核心上如何被解析,最后如果真正实现跟文件系统上的文件交互时,一定要经过存储引擎来完成。真正把MySQL操作接收下来并提交给底层文件上对应的数据完成操作,并将结果返回给上层MySQL核心的是MySQL存储引擎,各存储引擎通过统一的API向MySQL服务器提供一个统一的数据存取、加锁等操作。
MySQL内部表状态信息查看,使用 show table status like ‘xxx‘;
在表的属性信息当中,主要关注存储引擎类型,其下很多信息都是存储引擎决定的
存储引擎:
查看表状态信息:
SHOW TABLE STATUS [{FROM | IN} db_name]
[LIKE ‘pattern‘ | WHERE expr]
SHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of
information about each non-TEMPORARY table. You can also get this list
using the mysqlshow --status db_name command.
MariaDB [book]> desc yuwen;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name | char(10) | NO | | NULL | |
| page | tinyint(4) | NO | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
MariaDB [book]> show table status like ‘yuwen‘\G
*************************** 1. row ***************************
Name: yuwen
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 10485760
Auto_increment: NULL
Create_time: 2015-04-01 10:25:46
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
表状态信息本身就是一张表,此时需要选择了库,不让可以加 from db_name来指定库
MariaDB [book]> show table status\G
*************************** 1. row *************************** 1行
Name: yuwen
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 10485760
Auto_increment: NULL
Create_time: 2015-04-01 10:25:46
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
有多张表时,会显示多张表的信息
只查看指定的表可以使用where条件来对表的状态进行过滤
MariaDB [test]> show table status where Name=‘xxx‘; Name可以是| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |这些值
MariaDB [(none)]> show table status from hellodb where Name=‘students‘\G
存储引擎:也称为表类型 定义了一个表在其内部的存储格式和所支持的特性,存储引擎是表级别的概念
真正存储引擎在其内部实现上是在表级别实现的,一个MySQL数据库可以有多张表,每一张都有其独有的存储引擎,但是建议在同一个库内所有的表尽可能使用相同的存储引擎,如:将来要执行多表操作时,如果说表的存储引擎不同,在数据库的某些表上启动事务时一旦某些数据不想提交想回滚,InnoDB中的表数据能回滚,myisam中的表数据不能回滚。
SHOW TABLE STATUS WHERE Name=‘students‘\G
*************************** 1. row ***************************
Name: students 表名
Engine: InnoDB 表的存储引擎类型
Version: 10 版本
Row_format: Compact 行格式,对于myisam表来讲可选的只有dynamic【表示其行的长度是可变的】、fixed【表示其行的长度是固定定长的】(是dynamic还是fixed取决于字段类型,如果字段有varchar、varbinary则其长度是可变的,无text、blob、varchar、varbinary类型的话其长度就是固定的)、compressed【行是压缩存放的,数据是压缩后存放的,一旦压缩存放说明是myisam的压缩存放的压缩表】InnoDB: Compact【紧凑类型,表示表的数据内部也是压缩存放的】, Redundent【数据是冗余的】
Rows: 18 表中现有的行数,对于myisam而言此值是精确的,但是对于InnoDB是不确定的,因为支持事务的时候,有些行插入进来未必是看到的最终结果,仅是一个估计值
Avg_row_length: 910 平均每行所包含的字节数
Data_length: 16384 数据大小,当前表中所有数据的大小,单位字节
Max_data_length: 0 表的最大容量,0表示没有限制,但是此值与存储引擎相关,不同的存储引擎所支持的最大表存储空间是不一样的
Index_length: 32768 索引长度,单位是字节
Data_free: 0 空闲的数据空间,对于myisam表来讲表示已分配但尚未占用的空间,MySQL分配数据,数据表文件增长是渐进式的,一旦空间不够用时,额外申请一个盘区来存数据,但存数据时会有些多余的空间没有存完,存完后再申请一个,对于InnoDB来讲这是表空间文件的剩余空间
Auto_increment: 27 自动增长
Create_time: 2014-08-29 10:00:16 表创建时间
Update_time: NULL 表最后的修改时间,NULL没有实际值,没有定义
Check_time: NULL 使用check table命令或myisam check工具最近一次检查表的时间,主要对myisam表有用
Collation: utf8_general_ci 默认的排序规则,隐含了字符集信息
Checksum: NULL 校验和,在create table时可以指定启用校验和,启用的话,则会存储校验和
Create_options: 创建表时,额外指定的选项,如果为视图,则为 view
Comment: 注释信息
Row_format:
MyISAM: Dynamic, Fixed, Compressed
InnoDB: Compact, Redundent
Rows: 行数
Avg_row_length: 平均每行包含的字节数
Check_time: 使用CHECK TABLE或者myisamchk工具最近一次检查表的时间;
MySQL存储引擎特性:
使用最多的InnoDB:【早期MySQL 5.1之前,默认存储引擎为myisam,从5.5开始默认存储引擎是InnoDB】 设计用于处理大量的短期事务;支持自动的崩溃恢复;【有自动的崩溃恢复的特性,因为存在事务日志,并且存储引擎能基于事务日志自我实现完成恢复】 早期属于innoBase公司,后来被oracle收购
查看MySQL下所支持的所有存储引擎
MariaDB [test]> show engines\G
*************************** 1. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: FEDERATED
Support: YES
Comment: FederatedX pluggable storage engine
Transactions: YES
XA: NO
Savepoints: YES
*************************** 9. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Percona-XtraDB, Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 10. row ***************************
Engine: Aria myisam的增强版
Support: YES
Comment: Crash-safe tables with MyISAM heritage 增加了Crash-safe崩溃安全特性,是myisam兼容的存储引擎
Transactions: NO
XA: NO
Savepoints: NO
10 rows in set (0.00 sec)
查看当前默认存储引擎
MariaDB [test]> show global variables like ‘%engine%‘;
+---------------------------+--------+
| Variable_name | Value |
+---------------------------+--------+
| default_storage_engine | InnoDB | 默认存储引擎
| engine_condition_pushdown | OFF |
| storage_engine | InnoDB |
+---------------------------+--------+
3 rows in set (0.00 sec)
MySQL 5.1当中基于plugin的方式来支持InnoDB,对于多核特性支持不是很优秀,在5.6以后已经弥补了这一特性,可以支持大量核心的。InnoDB存储的数据在表空间中,
Table Space: 表空间可由一个或多个物理文件组成 【表空间相当于是一个黑盒,由InnoDB自行管理的黑盒,是一个文件,但是对于用户来讲看到的可能是一个文件,内部被分割成了多个文件,是一种比文件系统高级、位于工作在文件系统之上的、能够由存储引擎自我管理的更高层次的管理机制】但却属于同一个表空间
是一个文件管理机制:位于程序和文件系统之间的文件独立管理的中间层
表空间是InnoDB存储引擎在使用文件时,为了方便执行数据文件扩展,而特地实现的自我数据增长扩展管理的一种机制,为了避免表空间文件过大,对备份不方便,可以把表空间文件分成多个文件,可以实现自动增长。默认情况下,InnoDB将位于同一个数据库服务器上的所有的InnoDB格式的表数据放在同一个表空间中
在MySQL存放数据的文件下面有
[[email protected] ~]# ls /mysql/data/ibdata1
[[email protected] ~]# ls /mysql/data/ibdata1 -lh
-rw-rw---- 1 mysql mysql 18M Apr 1 10:25 /mysql/data/ibdata1
ibdata1就是InnoDB的表空间文件,随着数据的存储,此文件会动态增长,
[[email protected] ~]# ls /mysql/data/ib_*
/mysql/data/ib_logfile0 /mysql/data/ib_logfile1
[[email protected] ~]# ls /mysql/data/ib_* -lh
-rw-rw---- 1 mysql mysql 5.0M Apr 1 10:25 /mysql/data/ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M Apr 1 03:53 /mysql/data/ib_logfile1
ib_logfile0|1是InnoDB的事务日志文件
[[email protected] ~]# ls /mysql/data/hellodb/
classes.frm coc.frm courses.frm db.opt scores.MYI students.MYI teachers.MYI toc.MYI
classes.MYD coc.MYD courses.MYD scores.frm students.frm teachers.frm toc.frm
classes.MYI coc.MYI courses.MYI scores.MYD students.MYD teachers.MYD toc.MYD
如果说创建一个数据库,而数据库内部存储引擎都使用InnoDB,则他们都没有数据文件,需要启动每表表空间文件的支持
没有MYD文件,数据文件在ibdata1中
[[email protected] ~]# ls /mysql/data/book/
db.opt yuwen.frm
InnoDB存储支持两种使用风格:
1、将所有innodb表的数据放置同一个表空间中;
默认名字:数据目录下ibdata#; #是数字
2、每个表使用自己专用的表空间;【让MySQL支持每表表空间,启用】
默认名字:数据库目录下tb_name.ibd;
建议:为了使用InnoDB的高级特性,一般把innodb_file_per_table = 1启用即每表使用单独表空间机制,也可以编辑配置文件/etc/mysql/my.cnf下mysqld段添加innodb_file_per_table = 1 | ON
MariaDB [test]> show global variables like ‘%innodb_file%‘;
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | OFF | 这里是OFF,需要改为ON,MariaDB10是默认ON的
+--------------------------+----------+
4 rows in set (0.00 sec)
MariaDB [test]> set global innodb_file_per_table=1;
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> show global variables like ‘%innodb_file%‘;
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+----------+
4 rows in set (0.00 sec)
MariaDB [test]> create database light;
Query OK, 1 row affected (0.02 sec)
MariaDB [test]> use light;
Database changed
MariaDB [light]> create table jieneng(size tinyint not null,name char(20) not null);
Query OK, 0 rows affected (0.05 sec)
MariaDB [light]> insert into jieneng (size,name) values (10,‘baizhidong‘),(9,‘riguandong‘);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
[[email protected] ~]# ls /mysql/data/light/
db.opt jieneng.frm jieneng.ibd【单独的表空间文件】
db.opt是用来记录该库的默认字符集编码和字符集排序规则用的。
InnoDB基于聚簇索引【聚簇索引有利于基于主键查询时的性能】建立的:基于主键索引查询时,性能较好;
辅助索引中必须包含主键索引,不然辅助索引无法保存数据,因为辅助索引是指向主键的;因此,为了节约空间,尽可能使用较小的主键索引;可以自己创建具有自动增长特性的主键如id主键
InnoDB支持自适应hash索引;不是显示的,会自动维护
支持使用事务:
支持行级锁
支持MVCC 多版本并发控制
支持热备份
表存储格式:
1、将所有innodb表的数据放置同一个表空间中;
表结构定义:tb_name.frm (数据库目录下)
数据和索引:放在统一的表空间文件中
2、使用的单表表空间文件
表结构定义:tb_name.frm
数据和索引在单独的文件中:tb_name.ibd
由于InnoDB中间加了中间层跟存储相关,所以在实现备份恢复时,不能简单的把数据文件、结构文件复制到对应的数据目录下就能识别【备份恢复实现需要专用的工具】,但是myisam可以
MyISAM:
支持全文索引、压缩、空间函数(来实现空间索引);
不支持事务、行级锁
崩溃后无法安全恢复
支持延迟更新索引键(delayed_key_write)【修改表以后,不用立即更新索引,当更新完成后,再一并进行索引,使得其性能方面有所提升】
不支持热备份
表存储格式:每张表都有三个文件(位于数据库目录下)
tb_name.frm: 表格式
tb_name.MYD: 数据
tb_name.MYI: 索引
其它存储引擎:
Memory【内存存储引擎,数据不是放在磁盘上,而是放在内存中,memory比myisam至少快一个数量级(10倍),在更关注性能时,可以使用memory存储引擎,memory可以在很多场景下使用比如:用于查找和映射表、用于缓冲周期性的数据表和聚合数据等】: 早期叫HEAP表
显式支持hash索引
无法持久存储数据
CSV【可以将普通的逗号分隔作为MySQL表来处理】: 把表数据存储为文本文件,字段以逗号分隔;(主要功能是为了实现在数据库运行时,拷入或拷出文件的,而且能够方便的在各数据库导入数据比如:把MySQL数据保存为文本文件格式,如果Oracle支持就能够很容易的导入进去)
不支持索引
常用于数据交换的场景
Merge: MyISAM的变种
将多个MyISAM表合并表示为一个虚拟表;【表结构需要一样】
Federated:访问其它MySQL服务上数据的代理【客户端访问federated数据库服务器时,federated数据库服务器上没有数据,而是通过mysql协议到其他的数据库服务器查找数据并返回的,相当于代理】
MariaDB上用的FederatedX存储引擎
Engine: FEDERATED
Support: YES
Comment: FederatedX pluggable storage engine
Blackhole: 没有任何存储机制,不会真正存储任何数据,所以会丢弃所有插入的数据;【在复制架构中会使用到,但是架构也有问题,此种存储引擎很少使用】
NDB:Cluster 集群存储引擎,能够联合多个节点上的存储引擎共同工作,是一种分布式的无共享的容灾的高可用存储引擎,生产环境下没在使用
第三方存储引擎:
OLTP类【在线事务处理类】:
XtraDB: InnoDB的改进版
PBXT:【支持引擎级别的复制、支持外键,适合固态硬盘上使用】支持ACID和MVCC
TokuDB: 支持使用分形树的索引结构,是缓存无关的,即便索引数据超过内存的大小,性能上也不会下降,没有内存生命周期和内存碎片问题,适用存储大数据
MySQL中存储的数据都是以行为单位的
面向列的存储的引擎: 按列为单位进行存储,适合压缩等,适用于存储大数据
Infobright
InfiniDB
LucidDB
社区引擎:
Aria: 改进的MyISAM 【支持崩溃后安全恢复】
OQGraph: 支持图操作 【地图数据】
SphinxSE: 为sphinx全文搜索引擎提供了SQL接口;
Spider: 可以将数据切分成不同的分区,较透明实现分片功能;
存储引擎选择标准?考虑以下因素
是否需要事务
是否支持备份:热备
是否需要提供崩溃后恢复:
特有的特性: 存储大数据、是否支持数据分片
如果说大部分数据都是读的,则myisam可以是不错的选择或者Aria
如果是在线事务处理的比如订单处理,建议InnoDB
数据仓库最好使用Aria或myisam
论坛程序:发帖较多、用户讨论比较活跃 InnoDB
InnoDB如何定义表空间的使用风格?
InnoDB默认情况下将所有表空间数据都放在同一个位置,一般是数据目录下,可以更改为其他位置,并定义其工作特性。
InnoDB存储引擎的管理:
innodb_data_file_path:表空间文件的文件名称及特性【表空间文件的文件名及文件的特性】
可使用相对(相对于innodb_data_home_dir而言)或绝对路径;而且可定义多个文件;
格式为:innodb_data_file_path = ibdata1:20G;ibdata2:10G;ibdata3:1G:autoextend;【先使用ibdata1文件,当达到20G时,使用ibdata2文件到10G后,使用ibdata3文件可以自动增长autoextend可以自动增长】
innodb_data_home_dir:表空间的数据文件的存储位置,省略时表示使用数据目录(datadir变量定义的位置);
建议设置innodb_file_per_table = ON 独立的表空间
缺点:DROP TABLE操作的性能较差;如果想降低DROP TABLE性能差的操作需要启用:
innodb_lazy_drop_table = ON 不会立即删除,会一个一个慢慢删除
使用InnoDB存储引擎时,InnoDB存储引擎有一个重要的内部服务器变量来定义InnoDB使用的缓冲池。
InnoDB缓冲池: buffer pool
由InnoDB维护的内存空间:能够缓存索引及数据 如果某些表非常大,而且某些表访问的非常频繁,可以把数据放在内存中直接读取和写。
innodb_buffer_pool_size 定义InnoDB缓冲池的大小,应该设多大?通过观察可用内存值,以及数据是否被频繁的换进换出,来修改,建议较大,如果缓冲池很大的预热较慢,因为缓冲池中要缓冲数据,缓冲池启动以后,数据好长时间都没填满,所以缓冲时,发挥不了效应。如:MySQL平时正常运行,修改一个参数后,重启了MySQL,头几天性能特别差就是因为缓冲池预热没有完成。需要额外使用工具来完成预热。
如何观察innodb_buffer_pool_size是否是过大或过小需要通过SHOW ENGINE INNODB STATUS;来判定 显示当中有很多段组成,获得状态数据
MariaDB [light]> show engine innodb status\G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
150401 22:28:39 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 8 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 16 1_second, 16 sleeps, 1 10_second, 9 background, 9 flush
srv_master_thread log flush and writes: 16
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 14, signal count 14
Mutex spin waits 3, rounds 90, OS waits 3
RW-shared spins 10, rounds 300, OS waits 10
RW-excl spins 0, rounds 30, OS waits 1
Spin rounds per wait: 30.00 mutex, 30.00 RW-shared, 30.00 RW-excl
--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)
Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,
ibuf aio reads: 0, log i/o‘s: 0, sync i/o‘s: 0
Pending flushes (fsync) log: 0; buffer pool: 0
0 OS file reads, 402 OS file writes, 37 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
insert 0, delete mark 0, delete 0
discarded operations:
insert 0, delete mark 0, delete 0
Hash table size 276671, node heap has 1 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 1605285
Log flushed up to 1605285
Last checkpoint at 1605285
Max checkpoint age 7782360
Checkpoint age target 7539162
Modified age 0
Checkpoint age 0
0 pending log writes, 0 pending chkp writes
18 log i/o‘s done, 0.00 log i/o‘s/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 137756672; in additional pool allocated 0
Total memory allocated by read views 184
Internal hash tables (constant factor + variable factor)
Adaptive hash index 2233968 (2213368 + 20600)
Page hash 139112 (buffer pool 0 only)
Dictionary cache 601997 (554768 + 47229)
File system 83968 (82672 + 1296)
Lock system 333248 (332872 + 376)
Recovery system 0 (0 + 0)
Dictionary memory allocated 47229
Buffer pool size 8191
Buffer pool size, bytes 134201344
Free buffers 7875
Database pages 315
Old database pages 0
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 0, created 315, written 347
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s 根据此处
LRU len: 315, unzip_LRU len: 0 此处
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
1 read views open inside InnoDB
0 transactions active inside InnoDB
0 out of 1000 descriptors used
---OLDEST VIEW---
Normal read view
Read view low limit trx n:o 300
Read view up limit trx id 300
Read view low limit trx id 300
Read view individually stored trx ids:
-----------------
Main thread process no. 24503, id 140154958231296, state: waiting for server activity
Number of rows inserted 2, updated 0, deleted 0, read 0
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
------------
TRANSACTIONS
------------
Trx id counter 305
Purge done for trx‘s n:o < 0 undo n:o < 0
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 304, not started
MySQL thread id 11, OS thread handle 0x7f788d68c700, query id 503 localhost root
show engine innodb status
----------------------------
END OF INNODB MONITOR OUTPUT
============================
1 row in set (0.01 sec)
MySQL存储引擎介绍
时间: 2024-10-10 19:24:02
MySQL存储引擎介绍的相关文章
数据库 之 Mysql存储引擎介绍
1 存储引擎概念介绍 存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法.数据库中的存储引擎其实是对使用了该引擎的表进行某种设置,数据库中的表设定了什么存储引擎,那么该表在数据存储方式.数据更新方式.数据查询性能以及是否支持索引等方面就会有不同的"效果". 通过选择不同的存储引擎,获得额外的速度或者功能,从而改善服务器的应用的整体功能.例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎.内存存储引擎能够在内存中存储所有
mysql 存储引擎介绍
一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs.fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的.直观区别是,占用系统的
MySQL存储引擎介绍 w
一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs.fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的.直观区别是,占用系统的空
第三章 MySQL存储引擎介绍
1 MySQL存储引擎的概念 MySQL中数据用各种不同的技术存储在文件(或内存)中,这些技术都使用不同的存储机制.索引技巧,锁定水平,并且最终提供广泛的.不同的功能,通过选择不同的技术,能够获得额外的速度或功能,从而改善整体功能. SQLServer和Oracle都使用了一种存储引擎,而MySQL有多种存储引擎. 所谓的存储引擎,其实就是表的类型 2 查询MySQL中支持的存储引擎 show engines; show engines \g show variables like 'have%
mysql 存储引擎 介绍
一.InnodDB InnoDB表是基于聚蔟索引建立的,默认级别是 REPEATABLE_READ(可重复读),支持热备份,mysql 的其它引擎不支持. 支持行级锁,用来处理大量的 短期事务.InnodDB的性能和自动崩溃恢复特性,但得它在非事务型存储的需求中中也很流行.除非有非常的特别的原因需要使用其它的存储引擎,否则应该优先考虑InnoDB引擎. 二.MyISAM MyISAM提供了大量的特性,包括全文索引.压缩.空间函数(GIS)等,但MyISAM不支持事务和行级锁而且有一个毫无疑问的缺
mysql 存储引擎介绍2
了解MYSQL的都知道,在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm. .frm文件可以用来在数据库崩溃时恢复表结构. MySQL文件包括MySQL所建数据库文件和MySQL所用引擎创建的数据库文件. .frm 文件与操作系统和数据库引擎无关,都有
mysql 存储引擎介绍1
1.1 存储引擎的使用 数据库中的各表均被(在创建表时)指定的存储引擎来处理. 服务器可用的引擎依赖于以下因素: MySQL的版本 服务器在开发时如何被配置 启动选项 为了解当前服务器中有哪些存储引擎可用,可使用SHOW ENGINES语句: mysql> SHOW ENGINES\G 在创建表时,可使用ENGINE选项为CREATE TABLE语句显式指定存储引擎. CREATE TABLE t (i INT) ENGINE = MyISAM; 如果在创建表时没有显式指定存储引擎,则该表使用
mysql存储引擎介绍,索引
区别: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能.两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.myisam不支持事务,也不支持外键,其优势是访问速度快(INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多,并且会占用更多的磁盘空间以保留数据和索引),对事务完整性没有要
02: MySQL 索引类型 、 MySQL 存储引擎
day02一.mysql索引二.MySQL存储引擎+++++++++++++++++++++++++++++++++++一.mysql索引1.1 索引介绍 : 相当于 "书的目录" 5000页1~200 目录信息拼音排序部首排序笔画排序 201~5000 正文 1.2 索引的优点与缺点?优点 加快查询的速度缺点 占用物理存储空间,减慢写的速度. 姓名 性别 班级 年龄jimjimNULL 1.3 使用普通索引index:(在表中的字段上创建索引)使用规则?查看 desc 表名: key