数据库面试1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/84783431

1.MYSQL 有哪些存储引擎,各自优缺点

 ☞ MYSQL存储引擎种类(了解):MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。简单的说下什么是存储引擎,存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

      ☞ 重点介绍三个:MyISAM、InnoDB、MEMORY。
      【1】MyISAM: ①、拥有较高的插入,查询速度。②、不支持事务,行级锁和外键约束的功能。③、使用表级锁,并发性能差。④、主机宕机后,MyISAM表易损坏,灾难恢复性不佳。⑤、可以配合锁,实现操作系统下数据的复制备份、迁移。⑥、只缓存索引,数据的缓存是通过操作系统缓存区来实现的,可能引发过多的系统调用且效率不佳。⑦、数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能。
      【2】InnoDB:5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,①、支持ACID事务。②、支持行级锁定。③、灾难恢复性好。④、支持外键关联。⑤、支持热备份。⑥、对于InnoDB引擎中的表,其数据的物理组织是簇表(Cluster Table),主键索引和数据是在一起的,数据按主键的顺序物理分布。⑦、实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且能够自动创建散列索引以加快数据的获取。
      【3】MEMORY:①、所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。②、其内容会在Mysql重新启动时丢失,复制维护时需要小心。③、使用表级锁,虽然内存访问速度快,但是频繁的读写,表级锁会成为瓶颈。④、只支持固定大小的行,varchar类型的字段会存储为固定长度的Char类型,浪费空间。⑤、不支持TEXT、BLOB字段,当有些查询需要使用临时表时(因为是存在于内存中,所以这种类型常应用于临时表中),如果表中有TEXT、BLOB字段,那么会转换为基于磁盘的MyISAM表,严重降低性能。⑥、由于内存资源成本比较昂贵,一般不建议设置过大的内存表,如果内存表满了,可通过清除数据或调整内存表参数来避免报错。⑦、MEMORY表在所有客户端之间共享。
 

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/84783431