个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaEE
操作系统
Redis
石可破也,而不可夺坚;丹可磨也,而不可夺赤。
存储引擎是MySQL当中核心的部分,是MySQL当中特有的,是MySQL当中存储数据、建立索引、更新/查询数据等操作的实现方式,不同的存储引擎在实现存储数据、建立索引、更新/查询数据等操作的机制是不一样的,存储引擎是基于表的,而不是基于数据库的,所以在一个数据库下的多张表是可以基于不同的存储引擎的,存储引擎也可被称为表的类型。
show create table 表名
CREATE TABLE `user` (
`userId` int NOT NULL AUTO_INCREMENT,
`userName` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`gender` smallint NOT NULL,
`createTime` datetime DEFAULT NULL,
`updateTime` datetime DEFAULT NULL,
PRIMARY KEY (`userId`),
UNIQUE KEY `userName` (`userName`)
) ENGINE = InnoDB
show engines;
打开MySQL的数据存放目录,选择当前操作的数据库的文件夹,可以看到文件名为表名,后缀名为ibd的文件,也就是每一个InnoDB引擎的表都会有这样的一个表空间文件,在这个表空间文件中,记录了当前数据库的表结构和当前数据库表的数据和索引
ib2sdi 表名.ibd
:xxx.sdi存放的就是表结构信息,可以直接打开,里面是json格式的数据:
xxx.MYD是存放数据的
xxx.MYI是存放索引的
{
"mysqld_version_id":80031,
"dd_version":80023,
"sdi_version":80019,
"dd_object_type":"Table",
"dd_object":{
"name":"my_myisam",
"mysql_version_id":80031,
"created":20231012131516,
"last_altered":20231012131516,
"hidden":1,
"options":"avg_row_length=0;key_block_size=0;keys_disabled=0;pack_record=1;stats_auto_recalc=0;stats_sample_pages=0;",
"columns":[
{
"name":"id",
"type":4,
"is_nullable":true,
"is_zerofill":false,
"is_unsigned":false,
"is_auto_increment":false,
"is_virtual":false,
"hidden":1,
"ordinal_position":1,
"char_length":11,
"numeric_precision":10,
"numeric_scale":0,
"numeric_scale_null":false,
"datetime_precision":0,
"datetime_precision_null":1,
"has_no_default":false,
"default_value_null":true,
"srs_id_null":true,
"srs_id":0,
"default_value":"",
"default_value_utf8_null":true,
"default_value_utf8":"",
"default_option":"",
"update_option":"",
"comment":"",
"generation_expression":"",
"generation_expression_utf8":"",
"options":"interval_count=0;",
"se_private_data":"",
"engine_attribute":"",
"secondary_engine_attribute":"",
"column_key":1,
"column_type_utf8":"int",
"elements":[
],
"collation_id":255,
"is_explicit_collation":false
},
{
"name":"name",
"type":16,
"is_nullable":true,
"is_zerofill":false,
"is_unsigned":false,
"is_auto_increment":false,
"is_virtual":false,
"hidden":1,
"ordinal_position":2,
"char_length":40,
"numeric_precision":0,
"numeric_scale":0,
"numeric_scale_null":true,
"datetime_precision":0,
"datetime_precision_null":1,
"has_no_default":false,
"default_value_null":true,
"srs_id_null":true,
"srs_id":0,
"default_value":"",
"default_value_utf8_null":true,
"default_value_utf8":"",
"default_option":"",
"update_option":"",
"comment":"",
"generation_expression":"",
"generation_expression_utf8":"",
"options":"interval_count=0;",
"se_private_data":"",
"engine_attribute":"",
"secondary_engine_attribute":"",
"column_key":1,
"column_type_utf8":"varchar(10)",
"elements":[
],
"collation_id":255,
"is_explicit_collation":false
}
],
"schema_ref":"demo1",
"se_private_id":18446744073709551615,
"engine":"MyISAM",
"last_checked_for_upgrade_version_id":0,
"comment":"",
"se_private_data":"",
"engine_attribute":"",
"secondary_engine_attribute":"",
"row_format":2,
"partition_type":0,
"partition_expression":"",
"partition_expression_utf8":"",
"default_partitioning":0,
"subpartition_type":0,
"subpartition_expression":"",
"subpartition_expression_utf8":"",
"default_subpartitioning":0,
"indexes":[
],
"foreign_keys":[
],
"check_constraints":[
],
"partitions":[
],
"collation_id":255
}
}
特点 | InnoDB | MyISAM | Memory |
---|---|---|---|
存储限制 | 64TB | 有 | 有 |
事务安全 | 支持 | - | - |
锁机制 | 行锁 | 表锁 | 表锁 |
B+tree索引 | 支持 | 支持 | 支持 |
Hash索引 | - | - | 支持 |
全文索引 | 支持(5.6版本之后) | 支持 | - |
空间使用 | 高 | 低 | N/A |
内存使用 | 高 | 低 | 中等 |
批量插入速度 | 低 | 高 | 高 |
支持外键 | 支持 | - | - |