MySQL引擎和视图的点
点击蓝色“最码农”关注我哟
加个“星标”,每天下午18:03,一起学技术
- MySQL引擎 -
-
InnoDB引擎:InnoDB引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。 -
MyIASM引擎(原本MySQL的默认引擎):不提供事务的支持,也不支持行级锁和外键。 -
MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高。
-
InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。 -
InnoDB的主键索引的叶子节点存储着行数据,因此主键索引非常高效。 -
MyISAM索引的叶子节点存储的是行数据地址,需要再寻址一次才能得到数据。 -
InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效。
-
插入缓冲(insert buffer)
-
二次写(double write)
-
自适应哈希索引(ahi)
-
预读(read ahead)
-
视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。 -
视图是由基本表(实表)产生的表(虚表)。 -
视图的建立和删除不影响基本表。 -
对视图内容的更新(添加,删除和修改)直接影响基本表。 -
当视图来自多个基本表时,不允许添加和删除数据。
-
重用SQL语句。 -
简化复杂的SQL操作,在编写查询后,可以方便的重用它而不必知道它的基本查询细节。 -
使用表的组成部分而不是整个表。 -
保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。 -
更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。
-
查询简单化:视图能简化用户的操作。 -
数据安全性:视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护。 -
逻辑数据独立性:视图对重构数据库提供了一定程度的逻辑独立性。
-
性能,数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也把它变成一个复杂的结合体,需要花费一定的时间。 -
修改限制,当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。事实上,当从视图中插入或者删除时,情况也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的这些视图有如下特征:
1.有UNIQUE等集合操作符的视图。
2.有GROUP BY子句的视图。
3.有诸如AVG\SUM\MAX等聚合函数的视图。
4.使用DISTINCT关键字的视图。
5.连接表的视图(其中有些例外)
- END -