表类型存储引擎的选择

8.1,MyISAM的表支持三种不同的存储格式:静态(固定长度)表,动态表,压缩表
静态表是默认的存储方式,每个字段都是非变长字段,优点是存储迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常会比动态多。【静态表的数据在存储时会按照列的宽度定义补足空格,但是在访问的时候不会得到这些空格,这些空格在返回给应用之前已经去掉,如果保存的内容后面本来就带有空格,那么也会被过滤】
动态表记录是不固定长度的,优点是占用空间相对较少但是会频繁的更新和删除记录产生的碎片。需要定期执行OPTIMIZE TABLE语句或者myisamchk-r命令来改善性能,并且在出现故障回复时较难
压缩表是需要工具创建的
8.2,InnoDB具有提交,回滚和崩溃恢复的事物安全,但是相对于MyISAM,它写的处理效率会差一些,并且会占用更多的磁盘空间已保留数据和索引
8.2.1,【主键索引】对于InnoDB来说,自增必然是索引,如果是组合索引也必然是组合索引的第一列,但是对于MyISAM来说,自动增长可以使组合索引的其他列
8.2.2,【外键约束:外键必须在】
RESTRICT和NO ACTION相同,是指限制在子表有关联记录的情况下附表不能更新
CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录
SET NULL表示父表在更新或者删除的时候,子表的对应字段被SET NULL
eg:
alter table 子表 add constraint 键名
foreign key(字段)
references 父表(字段)
第一行是说要为子表设置外键,给这个外键起一个名字
第二行是要将本表的某字段来设置外键
第三行是说这个外键受到的约束来自父表的某字段
【注:】当某个表被其他表创建了外键参照,那么该表的对应索引或者主键禁止被删除;当导入多个表的数据的时候,如果需要忽略之前的导入顺序,可以暂时关闭外键;同样,在执行LOAD DATA和ALTER TABLE操作的时候,可以通过暂时关闭外键来约束加快处理的速度,关闭的命令是‘SET FOREIGN_KEY_CHECKS = 0’,执行完成之后,通过执行’SET FOREIGN_KEY_CHECKS = 1’,语句改回原状态
【注:】查看外键信息:show create table;或者show table status;
8.2.3 删除自增长的主键id
先删除自增长在删除主键
Alter table tb change id id int(10);//删除自增长
Alter table tb drop primary key;//删除主建
8.2.4添加组键
alter table t1 add PRIMARY KEY(ID,createtime)
alter table t1 change id id int not null auto_increment;
alter table t1 auto_increment=1;
8.2.5,【存储方式:共享表空间存储,多表空间存储 P140】
8.3,MEMORY存储引擎使用存在于内存中的内容来创建表,每个MOMERY表只实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问快,因为他的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢掉
8.4,MERGE存储引擎是一组MyISAM表的组合,对于MERGE类型表的查找,删除,更新操作实际上是对于其中的MyISAM表进行的,对于MERGE的增加操作是通过INSERT_METHOD子句定义插入的表,可以有三个不同的值,使用first或者last是的插入到对应的第一个或者最后一张表中,不定义或者定义为NO表示不能对着MERGE表执行插入操作;可以对表执行drop操作,但是这只是删除对于MERGE的定义,对于内部的表没有任何影响
8.5,选择合适的存储引擎
8.5.1,MyISAM:默认的MySQL插件式存储引擎,如果应用十一读操作和插入操作为主,至于很少的更新和删除操作没并且对于事物的完整性,并发性要求不是很高,那么选择这个引擎是非常合适的。MyISAM实在web,数据仓库合区和其他应用环境下最常使用的存储引擎之一
8.5.2,InnoDB:用于事务处理应用程序,支持外键,如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询外还包括很多的更新,删除操作,那么InnoDB引擎存储是比较适合的选择,InnoDB存储引擎除了有效的减低由于删除和更新导致的锁定,还可以保存事物的完整提交和回滚,对于类似计费系统或者财务系统等对于数据准确性要求比较高的,InnoDB都是合适的选择
8.5.3,MEMORY:将所有数据保存在RAM中,在需要快速定位记录和其他类似数据的环境下,可提供极快的访问,MEMORY的缺陷是对表的大小有限制,太大的表无法缓存在内存中,其次要确保表的数据可以恢复,数据库异常后表中的数据库是可以恢复的,MEMORY通长是用于更新不太频繁的小表,用以快速得到访问结果
8.5.4,MERGE:用于将一些列等同的MyISAMBIAO以逻辑方式整合在一起,并作为一个对象引用他们,MEMGE表的优点在于可以突破单个MyISAM表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效的改善MERGE表的访问效率,这对于诸如数据仓库等VLDB环境十分适合

猜你喜欢

转载自blog.csdn.net/qq_31424153/article/details/84032540
今日推荐