MyISAM存储引擎
- MyISAM 支持或不支持的简要特性列表
- MyISAM为速度而设计,和SELECT搭配起来使用更好
- 如果表的数据偏向静态,既表中的数据经常更新/删除,太多仅仅是查询操作,那么使用MyISAM时最好的选择
- MyISAM支持表级锁,如果要在表中的数据上执行一个特定的操作,那么整张表可以被锁起来。在上锁期间,表上不能进行其他的操作。如果表是偏向动态的,既数据经常变更,则会引起性能降级。
- MyISAM支持全文检索
- MyISAM支持数据压缩、自我复制、查询缓存、数据加密。
- MyISAM不支持外键
- MyISAM不支持事务,所以没有commtt和rollback操作。如果表上执行了一个查询,则没有回退的余地。
- MyISAM不支持集群数据库
innoDB存储引擎
- innoDB支持或不支持的简要特性列表。
- innoDB是为了高可靠性和高性能而设计的,适合处理大量数据。
- innoDB支持行级锁。这是个很棒的特性,对提升性能很有帮助。不同于mysiam对整个表上锁,innoDB只对select、delete或update操作的特定数据行上锁。在上锁期间,表中的其他数据依然能被操作。
- innoDB支持外键,对外键约束强制
- innoDB支持事务,可以执行commit和rollback操作,因此一个事务中的数据变化可以回退。
- innoDB支持数据压缩。自我复制、查询缓存、数据加密
- innoDB可以用在集群环境,但是并没有完全支持。不过,innoDB表可以转换为ndb存储引擎,这样就能用在集成环境
MySQL存储引擎中MyISAM和InnoDB,优缺点,索引
- MyISAM 优:成熟、稳定、易于管理;表格锁定机制;比innoDB快;缺:optimize清理空间;适合:读取需求、节约空间时间、响应速度快;
- InnoDB优:数据库支持外键和事务处理,缺:速度比MyISAM稍慢;占用空间大;适合:用到事务、外键和更高安全性的需求;多用户同时修改表;
- 创建索引:alert table tablename add index (`字段名`)
什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?
(1)索引:通过在表字段中建立索引可提高查询优化,确保数据的唯一性,以及可以对全文索引字段中的大量文本的搜索进行优化。
(2)主键索引(primary key):主要作用是确定数据表里一条特定的数据记录的位置。数据表会根据主键的唯一索引性来唯一标示每条记录。
(3)唯一索引(unique)主要是为了避免数据出现重复(4)区别:每个表中只能有一个主键索引,但可以有多个唯一索引。
(优点):创建索引可以大大提高系统的性能:
(1)保证数据库表中每一行唯一性
(2)加快数据检索速度,最主要的原因。
(3)加速表和表之间连接
(4)在使用分组和排序 子句进行数据检索时,显著减少查询中分组和排序时间。
(5)查询使用优化隐藏器,提高系统性能。
增加索引也有许多不利的方面:
(1)创建和维护索引要耗费时间,随着数据量的增加而增加。
(2)占物理空间,除了数据表占数据空间之外,索引还要占一定的物理空间,如果要建立聚簇索引,空间就会更大。
(3)当对表数据进行增删改时,索引也要动态维护,降低数据维护速度。
在哪建索引?
(1)经常需要搜索的列,加快搜索的速度;
(2)主键列,强制该列唯一性和组织表中数据排列结构
(3)经常连接列(外键)加快连接速度
(4)范围搜索列,因索引已排序,范围是连续
(5)排序列,因索引已排序,可利用索引排序加快时间;
(6)WHERE子句列,加快条件判断。