MySQL引擎和视图的点

–     MySQL引擎     –

.MySQL存储MyISAMInnoDB区别
存储引擎Storage Engine:MySQL中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。
 
.常用的存储引擎有以下
  • InnoDB引擎:InnoDB引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。
  • MyIASM引擎(原本MySQL的默认引擎):不提供事务的支持,也不支持行级锁和外键。
  • MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高。

.MyISAM索引与InnoDB索引的区别?
  • InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。
  • InnoDB的主键索引的叶子节点存储着行数据,因此主键索引非常高效。
  • MyISAM索引的叶子节点存储的是行数据地址,需要再寻址一次才能得到数据。
  • InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效。

.InnoDB引擎的4大特性
  • 插入缓冲(insert buffer)
  • 二次写(double write)
  • 自适应哈希索引(ahi)
  • 预读(read ahead)

.存储引擎选择
如果没有特别的需求,使用默认的InnoDB即可。
MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。
InnoDB:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。
–     MySQL视图     –
 
一.为什么要使用视图?什么是视
为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。
 
所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。
 
但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。
 
视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。
 
二.视图有哪些特点?
视图的特点如下:
  • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
  • 视图是由基本表(实表)产生的表(虚表)。
  • 视图的建立和删除不影响基本表。
  • 对视图内容的更新(添加,删除和修改)直接影响基本表。
  • 当视图来自多个基本表时,不允许添加和删除数据。
视图的操作包括创建视图,查看视图,删除视图和修改视图。
 
三.视图的使用场景有哪些?
视图根本用途:简化SQL查询,提高开发效率。如果说还有另外一个用途那就是兼容老的表结构。
 
下面是视图的常见使用场景:
  • 重用SQL语句。
  • 简化复杂的SQL操作,在编写查询后,可以方便的重用它而不必知道它的基本查询细节。
  • 使用表的组成部分而不是整个表。
  • 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
  • 更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。
 
四.视图的优点
  • 查询简单化:视图能简化用户的操作。
  • 数据安全性:视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护。
  • 逻辑数据独立性:视图对重构数据库提供了一定程度的逻辑独立性。
 
五.视图的缺点
  • 性能,数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也把它变成一个复杂的结合体,需要花费一定的时间。
  • 修改限制,当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。事实上,当从视图中插入或者删除时,情况也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的这些视图有如下特征:
    1.有UNIQUE等集合操作符的视图。
    2.有GROUP BY子句的视图。
    3.有诸如AVGSUMMAX等聚合函数的视图。
    4.使用DISTINCT关键字的视图。
    5.连接表的视图(其中有些例外)

六.什么是游标?
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。

未经允许不得转载:大自然的搬运工 » MySQL引擎和视图的点

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址