zoukankan      html  css  js  c++  java
  • mysql

    一个关系型数据库

    • 储存部分
      • 类似一个文件系统,将数据存储到设备当中
    • 程序实例
      • 储存管理
      • 缓存机制
        • mysql 自带的缓存机制
      • sql解析
      • 日志管理
        • bin-log日志
          • 主要用于记录可能引起数据库内容更改的SQL语句或数据行记录
          • 主从同步 从库同步主库的bin-log 日志 实现主从同步
        • 错误日志
        • 查询日志
        • 慢查询日志
          • 可以在慢查询日志中 定位慢查询 对sql语句进行优化
        • 中继日志
      • 权限划分
      • 容灾机制
      • 索引管理
        • 索引用于快速找出在某个列中有一特定值的行
        • 索引类型
          • 主键索引
            • primary key 效率最高的索引
          • 唯一索引
            • unique key 不为空的情况下效率最高 
          • 普通索引
            • index 对数据没有要求,文件很大,效率比较低
          • 联合索引
            • 遵循最左原则
              • 左前索引主要指的是在复合索引中,给两个或多个字段建立了复合索引后,在 sql
              • 语句后的条件中,只有复合索引前面的字段在条件的前面时,该索引才起作用,比如创
              • 建了个复合索引 index (a,b),在使用 where 或者 orderby 条件时,如果只有条件 b
              • 的,该索引不会生效,必须有条件 a 且必须要在条件 b 的前面该索引才会生效。
          • 全文索引
            • fulltext 对整个文章内部进行关键字索引 ----mysql5.5 以后 InnoDB 支持全文索引)
        • 什么样的信息能成为索引
          • 主键
          • 普通键
          • 唯一键
        • 需要注意的点
          • ①为了避免建议索引而造成索引文件过大,有时候我们会使用复合索引,这时候要遵循最左原则。
          • ②like 查询,前%不会用到索引  
          • ③如果条件中有 or,则要求 or 的索引字段都必须有索引,否则不能用到索引。
          •  ④如果列类型是字符串,一定要在条件中将数据使用引号引用起来,否则不使用索引。 
          • ⑤优化 group by 语句  
          • ⑥尽量避免模糊匹配,这样会导致全盘扫描 
        • 索引的数据结构
          • B+tree
            • 特点
              • 非叶子节点仅用来索引,数据都保存在叶子节点中
              • 所有叶子节点均有一个链指针指向下一个叶子节点
              • 磁盘读写代价低 ---- 不放数据信息 只存放索引信息 一次性加载到内存里数据多 减少磁盘IO
              • 查询更加稳定
              • 有利于对数据库扫描 B+tree 做范围查询
            • 时间复杂度
              • O(logn)
          • 哈希
            • 时间复杂度
              • O(1)
            • 特点
              • 仅仅满足 "in" "=" 不能做范围查询
              • 无法被用来避免数据的排序操作
              • 不能利用部门索引键查询
          • 密集索引和稀疏索引
            • 密集索引
              • 定义:叶子节点保存的不只是键值,还保存了位于同一行记录里的其他列的信息,由于密集索引决定了表的物理排列顺序,一个表只有一个物理排列顺序,所以一个表只能创建一个密集索引
              • mysam引擎 不管是主键索引 唯一索引 还是普通索引都是稀疏索引
            • 稀疏索引
              • 叶子节点仅保存了键位信息以及该行数据的地址,有的稀疏索引只保存了键位信息机器主键
              • innodb 有且只有一个密集索引 规则如下:
                • 若主键被定义 则主键作为密集索引
                • 若主键没有定义 该表的第一个唯一非空索引则为密集索引
                • 若不满足以上条件 会生成一个隐藏主键 来作为密集索引
            • 区别
              • 密集索引文件中的每个搜索码值都对应一个索引值
              • 稀疏索引文件索引码的某些值建立索引项 
          • 索引是建的越多越好么
            • 数据量小的表不需要建立索引 建立会增加额外的开销
            • 数据变更需要维护索引 更多的索引需要的维护成本
            • 更多的索引需要更多的空间
      • 锁管理
        • 乐观锁
          • 版本控制
          • 条件限制
        • 悲观锁
          • 读锁 -- 共享锁
          • 写锁 -- 排它锁
        • 死锁
          • 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.
          • 关键: 两个(或以上)的session加速顺序不一致(解决方法:让不同的session加锁有次序)
          • innoDB 发生 innoDB一般会会自动检测 死锁 使一个事务释放锁并回退,使另一个事务获得锁
        • 表锁
          • 开销小 加锁快 不会出现死锁 锁定粒度大 (锁粒度就是锁级别) 发生锁冲突的概率最高 并发度低
        • 行锁
          • 开销大 加锁慢 会出现死锁 锁定粒度小 发生锁冲突的概率 低 并发度高
        • 页面锁
          • 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般
    • mysql的隔离级别
      • 读已提交 -- Read committed
      • 读未提交 -- Read uncommitted
      • 可重复读 -- Repeatable read
      • 可序列化 -- Serializable
        • 脏读 -- 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
        • 幻读 -- 系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
        • 不可重复读 --事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
    • 事物
      • 特性
        • 原子性
          • 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。
        • 一致性
          • 事务开始前和结束后,数据库的完整性约束没有被破坏 。
        • 持久性
          • 事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。
        • 隔离性
          • 同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
    • 三范式
      • 一、原子性 -- 数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
      • 二、依赖性 -- 要求数据库表中的每个实例或行必须可以被惟一的区分。
      • 三、唯一性 -- 要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
    • 储存引擎
      • MyISAM
        • 不支持事务
        • 不支持外键
        • 支持表锁
        • 支持全文检索
        • 数据储存方式 三个文件 结构、索引、数据,
        • 添加 查询 性能高于innodb
      • InnoDB
        • 支持事务
        • 支持外键
        • 支持行锁
        • 在 MySQL5.6 版本之后才支持全文检索 
        • 数据储存方式 两个文件 结构、 索引和数据放在一起
        • 批量删除性能较高
      • MEMORY等
  • 相关阅读:
    UIPath RPA 自动化脚本 机器人从入门到精通
    [转]面向物联网的21个开源软件项目
    数字化转型
    区块链项目大全-项目源码链接收藏
    SAP HANA学习资料大全 Simple Finane + Simple Logisitic [非常完善的学习资料汇总]
    今日头条技术架构分析
    巴菲特价值投资的六项法则
    文档大师 2016 :在电脑和头脑中快速找到文档的文件管理软件
    文档大师 在Win10 IE11下,文档集画面无法正常显示Word等Office文档的解决方法
    人脑+电脑:通过文档管理让个人能力大大拓展
  • 原文地址:https://www.cnblogs.com/jywy/p/10997690.html
Copyright © 2011-2022 走看看