Mysql 表类型(存储引擎)

表类型(存储引擎)

1.         Mysql存储引擎概述
Mysql5.0
支持的存储引擎包括:MyISAMInnoDBBDBMEMORYMERGEEXAMPLENDB ClusterARCHIVECSVBLACKHOLEFEDERATED等。其中InnoDBBDB提供事务的安全表。其他存储引擎都是非事务安全表。

a)         查看当前默认存储引擎
show variables like ‘table_type’;

b)         查看数据库支持的存储引擎
show engines \G
show variables like ‘have%’;

c)         创建表时可以指定存储引擎。
create table ai(id bigint(20) not null auto_increment primary key) engine=MyISAM default charset=utf8;

d)         可以使用命令修改表的存储引擎
alert table tablename engine=InnoDB

2.         介绍最常使用4种存储引擎:MyISAMInnoDBMEMEROYMERGE

a)         MyISAM 的默认存储引擎。MyISAM不支持事务、也不支持外键,其优势是访问速度快,对事务完整性没有要求或者以SELECTINSERT为主的应用基本上都可以使用这个引擎来创建表。

MyISAM
的表还支持3种不同的存储方式,分别是:
静态(固定长度)表

1.         表态表:是默认存储格式,具体细节请翻书123

2.         动态表:包含变长字段,记录不是固定长度的,这样存储的优点是占用的空间相对较少,但是频繁地更新删除记录会产生碎片,需要定期执行optimize table 语句或myisamchk –r命令来改善性能,并且出现故障的时候恢复相对比较困难。

3.         压缩表:由myisampack工具创建,占据非常小的磁盘空间,因为每个记录是被单独压缩的,所以只有非常小的访问开支。

b)         InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnDB写的处效率差一些并且会占用更多的磁盘空间以保留数据和索引。

1.         自动增长

a)         InnoDB自动增长列。

b)         可以使用alter table tablename auto_increment=n;修改表的自动增长初识值。

c)         对于InnoDB表,自动增长列必须是索引。

2.         外键约束

a)         Mysql支持外键约束的存储引擎只有InnoDB

b)         更新父表时,对子表进行的相应操作,包括restrict(限制, 约束, 限定)cascadeset nullno actionRestrictno action相同,是指限制在子表有关联记录的情况下父表不能更新;cascade表示父表在更新或者删除时,更新或者删除子表对应记录;set null则表示父表在更新或者删除的时候,子表的对应字段被set null。选择后两种方式要谨慎,可能会因为错误的操作导致数据的丢失。

c)         当某个表被其他表创建了外建参照,那么该表的对应索引或者主键禁止被删除。

d)         关闭外建约束加快处理
set foreign_key_checks=0

e)         开启
set foreign_key_checks=1

3.         存储方式

a)         使用共享表空间存储

b)         使用多表空间存储
使用多表空间的存储方式,需要设置参数innodb_file_per_table,并重启服务才生效。

c)         Memory存储引擎使用存在内存中的内容来创建表。

1.         因为数据是存储在内存中的,并且默认使用HASH索引。但是一但服务器关闭,表中的数据就会丢失。

2.         指定Memory表创建索引的时候,指定使用HASH索引
create index indexname using hash on tablename (field)
drop index indexname on tablename

d)         Merge存储引擎是一组MYISAM表的组合,…..
Merge类型的表可以进行查询、更新、删除的操作。

 

你可能感兴趣的:(C++,c,应用服务器,mysql,C#)