栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL(一)

说说数据库的三大范式
  1. 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的;

  2. 第二范式:在第一范式的基础之上,消除了非主属性对于码的部分函数依赖。

  3. 第三范式:在第二范式的基础之上,消除了非主属性对于码的传递函数依赖 。

说说事务的四大特性? 
  1. 原子性(A):事务是不可分割的最小操作单元,要么全部成功,要么全部失败
  2. 一致性(C):执行事务前后,所有的数据都保持一致状态
  3. 隔离性(I):并发访问数据库时,一个用户的事务不被其他事务所干扰
  4. 持久性(D):一个事务被提交之后,它对数据库中数据的改变是永久的
并发事务带来了哪些问题?
  1. 脏读:一个事务读到另一个还没有提交的数据
  2. 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同
  3. 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了“幻影”。

说说事务隔离级别?
隔离级别脏读不可重复读幻读
READ-UNCOMMITTED                未提交读√√√
READ-COMMITTED                      提交读×√√
REPEATABLE-READ  (默认)   可重复读××√
SERIALIZABLE                             串行化×××
谈谈你对索引的理解 

索引是帮助MySQL高效获取数据的数据结构。使用索引是为了提高查询效率,避免全表扫描。

注:问题较为广泛,可再扩充回答,比如再说说索引的分类,或者其他的。 

索引的分类 

从物理存储角度,分为:

  1. 聚集(聚簇)索引
  2. 非聚集索引

从逻辑角度分为

  1. 普通索引
  2. 唯一索引
  3. 主键索引
  4. 联合索引
  5. 全文索引

从数据结构角度分

  1. B树索引
  2. B+树索引
  3. Hash索引
什么情况下索引会失效(即查询不走索引)?
  1. 在索引列上进行运算操作
  2. 字符串类型字段使用时不加引号
  3. 如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效
  4. 用 or 连接的查询条件,如果 or 前的条件中的列有索引,而后面的列中没有索引,索引失效
  5. 如果 MySQL 评估使用索引比全表扫描更慢,则不使用索引
MySQL可以一次使用多个索引吗?

可以,MySQL有索引合并机制,对同一个表可以使用多个索引分别进行条件扫描,然后将结果进行合并处理,最后再进行回表查询。这些需要合并的索引只能是一个表的,不能对多表进行索引合并。

有三种合并方式:

  1. 取交集
  2. 取并集
  3. 取有序并集

你有索引index1(a,b,c),这是联合索引,也叫复合索引、多列索引;

你有索引index2(a),index3(b),index4(c),然后你的sql中有and、or或union之类的条件对三个索引分别进行条件扫描,然后将各自的结果进行合并,这叫索引合并,这时你用explain查看执行计划会看到有“index merge”字样。

至于两者有没有关系,这怎么讲呢,一般来说,联合索引(复合索引)的效率要比索引合并要高,在能使用联合索引时尽量使用联合索引,当然这要根据具体情况,sql中寸在“or”这样的连接词时,那就可能必须要使用索引合并了。

索引是不越多越好?

不是。创建索引和维护索引都是需要消耗性能的,索引越多维护成本越高。例如:当对表中的数据进行增删改的时候,如果数据有索引,那么索引也需要修改,会降低效率。

一般情况下:

  1. 数据量小的表不需要建立索引
  2. 不经常使用的列不要建立索引
  3. 经常频繁更新的列不要建立索引,因为肯定会影响插入或更新的效率
内连接和外连接的区别 

MySQL存储引擎以及区别

在老版本中默认的存储引擎是 MyISAM,当前MySQL默认存储引擎是 InnoDB

区别:

  • MyISAM 只有表级锁,而 InnoDB 支持行级锁 和 表级锁,默认为行级锁。
  • MyISAM 不支持外键,而 InnoDB 支持。
  • MyISAM 不支持事务,而 InnoDB 支持事务。
MySQL的一些优化方法,数据库的优化方法?

优化可以从很多方面来讲:如SQL语句、有效索引、数据结构、系统配置、硬件

  • SQL语句以及索引的优化是最关键的。首先要根据需求写出结构良好的SQL,然后根据SQL在表中建立有效索引。具体点比如覆盖索引、前缀字段采用选择性高的
  • 根据数据库范式来进行表结构设计,设计时要考虑如何让查询更加有效。比如选择可存下数据的最小的、简单的数据类型。
  • 系统配置的优化。MySQL数据库是基于文件的,如果打开的文件数达到一定的数量,无法打开之后就会进行频繁的IO操作。
  • 硬件优化。更快的IO、更多的内存。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号