84.1 数据库mysql

Posted 米洛口

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了84.1 数据库mysql相关的知识,希望对你有一定的参考价值。


mysql的索引类型:普通索引、唯一索引、主键索引、组合索引、全文索引。

 组合索引

      Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。如:索引是 index (a,b,c),可以支持 a 或 a,b 或 a,b,c 3种组合进行查找,但不支持 b,c 进行查找。

再比如:

  • 组合索引

  • create index id_name_index on testtb(id,name);

  • 如果分别在id, name上建立单列索引,查询时和组合索引相比,效率也会不大一样,mysql只会用到其中的一个认为最有效的单列索引。

  • 建立组合索引(id, name)相当于建立了(id,name), (id)两种索引。索引组合是从最左面开始组合的(所以没有(name)这个索引)。

  • 此时使用以下语句会用到联合索引,提高查询效率

  • explain select * from testtb where id=200000 and name =’kobe200000’;



  • 索引的缺点

  • 1:索引会降低更新表的速度,如果对表进行Insert,update和delete操作,需要更新表,此时,Mysql不仅需要保存数据,还需要保存一下索引文件。

  • 2:建立索引会占用磁盘空间的索引文件。如果在一个大表上创建多个组合索引,会导致索引文件很大。

  • 不能滥用索引,尽量建立最优的索引组合。



  • 四大特性,以及隔离级别




  1. 原子性

  2. 一致性

  3. 隔离性

  4. 持久性

    指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

愿意各吃


数据库的隔离级别。

事务隔离低级别类型会引发的问题以及优化方法。

1.读未提交内容

2.读取提交内容

3.可重复读

4.可串行化


事务的问题

多事务并发有三种异常情况,违反了隔离性

  1. 脏读:

    读到了其他事务还没有提交的数据。

  2. 不可重复读:

    对某数据进行读取,发现两次读取的结果不同,也就是说没有读到相同的内容。

    这是因为有其他事务对这个数据同时进行了修改或删除。

  3. 幻读:

    事务 A 根据条件查询得到了 N 条数据,但此时事务 B 更改或者增加了 M 条符合事务 A 查询条件的数据,这样当事务 A 再次进行查询的时候发现会有 N+M 条数据,产生了幻读

不可重复读和幻读的区别

相同点

不可重复读 和 幻读都是在先后两次读取的时候发现不一致的情况

不同点

不可重复读是同一条记录的内容被修改了,重点在于UPDATE或DELETE
幻读是查询某一个范围的数据行变多了或者少了,重点在于INSERT。











参考资料:

[1]数据库隔离级别及原理解决方案 

https://www.cnblogs.com/iQXQZX/p/14013119.html







以上是关于84.1 数据库mysql的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库学习导航

MySQL数据库学习导航

MySQL教程

MySQL

mysql 数据库密码怎么设置

如何增加mysql数据库并发数