数据库相关

数据库的三大特性

‘实’:表
‘属性’:表中的数据
‘关系’:表与表之间的关系

三范式

  • 列不可分,属性不可分
  • 确保表中的每列都是和主键相关,有主键,非主键字段依赖主键
  • 保每列都和主键直接相关,而不是间接相关,非主键字段不能相互依赖

五大约束

primary KEY:设置主键约束;
  UNIQUE:设置唯一性约束,不能有重复值;
  DEFAULT 默认值约束
  NOT NULL:设置非空约束,该字段不能为空;
  FOREIGN key :设置外键约束。

索引

帮助mysql高效获取数据的数据结构。

hash索引

缺点:

  1. 只满足= in ,不能使用范围查询
  2. 无法被用来避免数据的排序操作
  3. 不能利用部分索引键查询
  4. 不能避免表扫描

密集索引与稀疏索引

  1. 密集索引文件中的每个搜索码值对应一个索引值
  2. 稀疏索引文件中只为索引码的某些值建立索引项

InnoDB

  1. 若一个主键被定义,该主键作为密集索引
  2. 若没有主键被定义,该表的第一个唯一非空索引则作为密集索引
  3. 若不满足以上条件,innodb内部会生成一个隐藏主键
  4. 非主键索引存储相关键位和其对应的主键值,包含两次查找

优化慢查询sql

  1. 根据慢日志定位慢查询sql
  2. 使用explain等工具分析sql
  3. 修改sql或者尽量让sql走索引

MyISAM适合场景(表级锁)

  1. 频繁执行全表count语句
  2. 对数据进行增删改的频率不高,查询频率频繁
  3. 没有事务

InnoDB适合场景(表级锁、行级锁)

  1. 数据增删改查频繁
  2. 可靠性要求比较高,支持事务

事务

事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。

事务并发访问引起的问题以及如何避免

脏读 事务读到另一个事务的未更新数据
read-committed隔离级别以上可避免
更新丢失 mysql所有事务隔离级别在数据库层面上均可避免
不可重复读 repeatable-read隔离级别以上

事务特性

  • 原子性:事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。
  • 一致性:数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。
  • 隔离性:一个事务所做的修改在最终提交以前,对其它事务是不可见的。
  • 持久性:一旦事务提交,则其所做的修改将会永远保存到数据库中。

b+tree

B Tree 指的是平衡树,是一颗查找树,并且所有叶子节点位于同一层。
B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。

B+ 树有更低的树高
B+ 树相对于红黑树有更低的树高,进行寻道的次数与树高成正比,在同一个磁盘块上进行访问只需要很短的磁盘旋转时间,所以 B+ 树更适合磁盘数据的读取。

隔离级别

  • 未提交读:事务中的修改,即使没有提交,对其它事务也是可见的。
  • 提交读:一个事务只能读取已经提交的事务所做的修改。
  • 可重复读:保证在同一个事务中多次读取同一数据的结果是一样的。
  • 可串行化:强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。

MySQL 索引

  • B+Tree 索引
    有序性,所以除了用于查找,还可以用于排序和分组.
    InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。
  • 哈希索引
    哈希索引能以 O(1) 时间进行查找,但是失去了有序性:无法用于排序与分组;只支持精确查找,无法用于部分查找和范围查找。
  • 全文索引
    用于查找文本中的关键词
  • 空间数据索引
    空间数据索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询。

删除表

  • drop (删除表):把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
  • delete (删除表中的数据):delete 语句用于删除表中的行。
  • truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。
    注意:truncate 不能删除行数据,要删就要把表清空。
    转自https://www.cnblogs.com/konglingxi/p/10208510.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值