Mysql的学习总结---------记录第一阶段

数据库三大范式
第一范式:确保每一列的原子性,如果每一列都是不可再分的最小数据单元,则满足第一范式
第二范式:非主键列必须完全依赖于主键,不能只依赖于主键的一部分。
第三范式:非主键列必须只依赖于主键,不能存在传递依赖,不依赖于其他非主键。
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。

mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表

存储账户权限信息表主要有:user、db、tables_priv、columns_priv、procs_priv、proxies_priv这六张表(全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限)(procs_priv:存储过程和函数的权限,proxies_priv:记录代理用户的权限)

mysql权限表的验证过程为:
1.先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
2.通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。即先检查全局权限表 user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检 查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

mysql索引
索引是一个文件,它是要占据物理空间的。

mysql的回表查询与索引覆盖查询:
MySQL中分为聚集索引和非聚集索引。非聚集索引的btree叶子节点中存储的是当行数据的PK。所以为了取到具体数据,则需要通过PK回到聚集索引里去查询数据。即先定位主键值,再根据主键值定位行记录,性能相对于只扫描一遍聚集索引树的性能要低一些,这就叫回表查询,扫描了2次索引树,所以效率相对较低。

覆盖查询:你要查询的列是索引,并且没有非索引的列的查询,MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后再去查询数据,同时也要求所查询的字段必须被索引所覆盖到。在Explain的时候,输出的Extra信息中如果有“Using Index”,就表示这条查询使用了覆盖索引。
MySQL的InnoDB引擎只有B-Tree类型的索引具有覆盖索引,哈希索引、空间索引和全文索引都没有覆盖索引。因为覆盖索引必须要存储索引列的值,而哈希索 引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引

explain使用:explain+sql语句,通过执行explain可以获得sql语句执行的相关信息。

一个表最多只能有一个聚簇索引,mysql中普遍使用B+Tree做索引,但在实现上又根据聚簇索引和非聚簇索引而不同

事务的ACID特性,事务的并发控制,事务调度,以及事务的分布式提交

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值