设为首页 加入收藏

TOP

复习宝典之Mysql数据库(三)
2019-09-17 18:30:48 】 浏览:57
Tags:复习 宝典 Mysql 数据库
体(比如数据的个数)。

 

现在来看看MySQL数据库为我们提供的四种隔离级别

  ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

  ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。

  ③ Read committed (读已提交):可避免脏读的发生。

  ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。

 

  以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。像Serializable这样的级别,就是以锁表的方式(类似于Java多线程中的锁)使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。在MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。

  在MySQL数据库中,支持上面四种隔离级别,默认的为Repeatable read (可重复读);而在Oracle数据库中,只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,其中默认的为Read committed级别。

 

在MySQL数据库中查看当前事务的隔离级别:

    select @@tx_isolation;

在MySQL数据库中设置事务的隔离级别:

    set  [glogal | session]  transaction isolation level 隔离级别名称;
?
  set tx_isolation=’隔离级别名称;’

 

9)索引

索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。

索引我们分为四类来:

单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引。

断裂索引又分为:

普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

唯一索引:索引列中的值必须是唯一的,但是允许为空值。

主键索引:是一种特殊的唯一索引,不允许有空值。

组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。

全文索引:全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有"你是个大煞笔,二货 ..." 通过大煞笔,可能就可以找到该条记录。

空间索引:空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。

               空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。

在创建空间索引时,使用SPATIAL关键字。要求,引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL。

 

创建索引方法:

create index 索引名 on 表名(字段名);

alter table 表名 add index 索引名(字段名);

create table(id int not null,username varchar(10),index 索引名(username(length)));

 

删除索引方法:

ALTER TABLE 表名 DROP INDEX 索引名;

DROP INDEX 索引名 ON 表名;

 

查看索引:

可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。

如:mysql> SHOW INDEX FROM table_name; \G

 

10)B树结构

1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。

数据库索引底层常用就是用就是B树或者是B+树这种结构

  • 先说说树吧,其实树就是从一个根节点出发,其可以有很多子节点,而子节点又可以有很多子节点,这样就像我们现实生活中的树一样,不过我们这颗树是倒立的!因为树的分支太多且没有规律所以很难控制,要想让树发挥他的作用就得在基本的树结构上加上一些特性,让有了特性的树成为帮助我们解决问题的结构,最常用的就是二叉树了,二叉树听名字就知道是一个节点至多只有两个节点,这样对数进行了一定的限制,整棵树看起来就顺眼多了。

  • 二叉树的拓展1:二叉搜索树,二叉搜索树的节点满足一个规律,父节点的左孩子的键值小于父节点的键值,而右孩子的键值大于父节点的键值,这样当我们在这颗数中查询某个键值时就可以根据当前节点的键值和要寻找的键值的大小比较,确定该忘哪条路走下去。二叉搜索树还有一个特点就是中序遍历的时候其键值是按大小排序的。

  • 二叉树的拓展2:平衡二叉树,由于我们要插入的数据可能是本身就排好序的,所以会导致插入数据时树变成线性的结构,只有一条路。。于是我们需要保证二叉树的平衡,当发现这棵树要出现往一边倒的情况时就要想某种方式让其保持平衡(叶子节点的高度差最大为1),这就设计到一些节点的旋转,变换了。

  • 二叉树的拓展3:红黑树,红黑树也是一种平衡二叉树,不过加入了一些新的特性,听名字就知道,在红黑树中节点的颜色要么是红色要么是黑色的,当然还有其他的一些特性,当插入或者删除数据破坏了红黑树的这些特性时,我们需要进行一些操作(一般是颜色改变和树的旋转)红黑树保持其原有的特性。

  • 由于二叉树是二叉的,所以当树的节点不断增加时就会导致树的高度不断的增加,所以查询的效率就很低了,当我们面对海量数据(像数据库中保存的数据)的时候这种结构是不行的,所以我们又衍生出了新的树结构。

  • 二叉树的拓展4:B树,B数一样拥有自平衡的特性,最大的区别在于B树不是二叉的,而是多叉的,具体有多少个叉要根据树的阶数来判断。

  • 二叉树的拓展5:B+树,和B树相比,B+树又增加了一些特性,B+树主要是为了方便查询一个区间的数据集合,因为我们使用B树的时候要想查询某个区间内的数据得使用中序遍历将树中的数据全部遍历一遍,这样的时间复杂度是O(n),效率太低了。而B+树只用叶子节点保存具体值的地址,非叶子节点只保存其子节点的指针,叶子节点之间通过指针链接起来,是有序的,所以在查找一个范围内的数据是很有效的。其时间复杂度为O(logn+M),M为要查找的数据个数。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Mysql 基本操作 下一篇This function has none of DETER..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目