MySql相关知识点

一、 为什么要使用数据库

这个问题从两个方面回答

  1. 没有数据库数据都是存哪里的
  2. 存在数据库解决了什么问题
    数据存内存 - 优点: 存取速度快 缺点: 数据不能永久保存
    数据保存在文件 - 优点: 数据永久保存 缺点:速度比内存操作慢,频繁的IO操作。查询数据不方便。
    数据存数据库 - 数据永久保存 、使用SQL语句查询方便效率高、管理数据方便。

二、数据库三大范式

第一范式:每个列都不可以再拆分。
第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主 键的一部分。
第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理 由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。

三、引擎:MySQL存储引擎MyISAM与InnoDB区别

解答这种问异同的答题思路
(1)首先当然是回答区别。
(2)其次回答的是你在实际应用中是如何应用的,考察你的决策。
Innodb引擎: Innodb引擎提供了对数据库ACID事务的支持。并且还提供了 行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。
MyIASM引擎 :不提供事务的支持,也不支持行级锁 和外键。
MEMORY引擎: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。

MyISAMInnodb
存储结构每张表被存放在三 个文件:frm-表格 定义、 MYD(MYData)-数 据文件、 MYI(MYIndex)-索 引文件所有的表都保存在同一个数 据文件中(也可能是多个文 件,或者是独立的表空间文 件),InnoDB表的大小只受 限于操作系统文件的大小, 一般为2GB
存储空间MyISAM可被压 缩,存储空间较小InnoDB的表需要更多的内存 和存储,它会在主内存中建立其专用的缓冲池用于高速 缓冲数据和索引
可移植 性、备份 及恢复由于MyISAM的数 据是以文件的形式 存储,所以在跨平 台的数据转移中会 很方便。在备份和 恢复时可单独针对 某个表进行操作免费的方案可以是拷贝数据 文件、备份 binlog,或者用 mysqldump,在数据量达到 几十G的时候就相对痛苦了
SQL操作偏向查询偏向增删改
索引的实现方式B+树索引, myisam 是堆表 不支持哈希B+树索引,Innodb 是索引 组织表 不支持全文索引

存储引擎选择:
如果没有特别的需求,使用默认的Innodb即可。 MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。 Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高, 支持事务和外键。比如OA自动化办公系统。

四、什么是索引

一、从表面回答
指针。是数据库管理系统中一个排序的数据结构, 以协助快速查询、更新数据库表中数据。
索引的实现通常使用B树及其变种 B+树。 更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索 引形成目录。索引是一个文件,它是要占据物理空间的。
种类介绍:
主键索引: 数据列不允许重复,不允许为NULL,一个表只能有一个主键。
唯一索引: 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索 引。 可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索 引 可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引
普通索引: 基本的索引类型,没有唯一性的限制,允许为NULL值。 可以通过ALTER TABLE table_name ADD INDEX index_name (column);创 建普通索引 可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引
全文索引: 是目前搜索引擎使用的一种关键技术。 可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引
二、从优缺点回答
优:可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增 加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率; 空间方面:索引需要占物理空间
三、从实际应用回答
百万级别或以上的数据如何删除 :由于索引需要额外的维护成本,因为索引文件是单独存在的文件,所 以当我们对数据的增加,修改,删除,都会产生额外的对索引文件的操作,这些操作需 要消耗额外的IO,会降低增/改/删的执行效率。所以,在我们删除数据库百万级 别数据的时候,查询MySQL官方手册得知删除数据的速度和创建的索引数量是 成正比的。 1. 所以我们想要删除百万数据的时候可以先删除索引(此时大概耗时三分 多钟) 2. 然后删除其中无用数据(此过程需要不到两分钟) 3. 删除完成后重新创建索引(此时数据较少了)创建索引也非常快,约十分 钟左右。 4. 与之前的直接删除绝对是要快速很多,更别说万一删除中断,一切删除会 回滚。那更是坑了
四、底层算法方向回答
索引算法有哪些?
索引算法有 BTree算法和Hash算法
BTree算法
BTree是最常用的mysql数据库索引算法,也是mysql默认的算法。因为它不仅 可以被用在=,>,>=,<,<=和between这些比较操作符上,而且还可以用于like操 作符,只要它的查询条件是一个不以通配符开头的常量,
例如:
‐‐ 只要它的查询条件是一个不以通配符开头的常量
select*fromuserwhere name like’jack%';
‐‐ 如果一通配符开头,或者没有使用常量,则不会使用索引,例如:
select * from user where name like ‘%jack’;
Hash算法
Hash Hash索引只能用于对等比较,例如=,<=>(相当于=)操作符。由于是一 次定位数据,不像BTree索引需要从根节点到枝节点,最后才能访问到页节点这 样多次IO访问,所以检索效率远高于BTree索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>