单机数据库策略
    • 硬件资源相对用户的需求体验是成本比较高的;数据库的硬盘存储空间非常珍贵
满足范式的设计原则

  三范式

  1 所有数据库保存的列必须是原子级,不可分割(只要是关系型数据库自动满足第一范式)

  

  2 基于第一范式当前基础

    必须有主键

    所有主键必须依赖全部主键内容,不能部分依赖

  

         3 第二范式的一种子集
      所有的非主键字段必须全部依赖主键,不能依赖其他非主键字段

 

  三范式的设计目的:

    表格的数据绝对不会出现第二次相同内容的字段,最大程度的节省磁盘空间,但是一旦查询会消耗查询资源,三范式可以最大程度的利用时间换取空间

        反范式:违反三范式(easymall项目中的的数据库表格单表设计);
    最大程度的利用空间换取时间

索引:

    • 索引的优化,数据库具有索引的数据结构,可以根据不同的情况,不同的查询条件等等因素,对索引进行针对性的修改完成优化

    索引:按照一定规则的数据结构设计,实现在存储在空间的一批介质,这些东西可以       
           提高寻找的目标的速度;
        
        在数据中,按照一定规则(排序)的数据结构设计,实现存储在磁盘上的一批索引文件,这些文件可以实现快速定位(减少了磁盘I/O次数)目标数据;
        
  mysql的索引结构B+tree的数据结构

    B+TREE:数据结构的一种,B-tree,红黑树,二叉树.

  

    磁盘空间记录的是主键id(int + auto_increment)
    排序是每个磁盘块记录数据,和整体数据的特点;
    三阶-四阶-五阶随着数据量的增加,B+tree这个树可以变得越来越宽,越来越高
    I/O次数 永远和阶数m相关
    
    磁盘中存储的不仅可以是主键,也可以是字符串,组合的各种字段数据;
  索引的优化,根据查询条件的变化,对索引结构中的使用数据进行调整的过程;

 

数据库集群策略

  单机数据库最终无论如何设计,都会被物理瓶颈限制,到时读写速度无法满足要求;
必须引入分布式的高可用的数据库集群;

  

 

  分布式高可用的集群策略,基础是主从数据备份;

      数据库版本:Perconal版本的5.6mysql

搭建mysql的主从复制

  mysql也支持一主多从,多级主从(一主一从结构)  原理如下

 

  Master-slave结构的主从关系,一旦搭建
主节点:开启一个binary.log的二进制日志文件,一旦开启,所有的节点客户端的写操作都会记录在二进制文件中,并且  每次的更新都使用Position的数据保存(第一次update,position 588,insert position 698).


从节点:开启2个线程一个日志,I/O线程,sql线程,和中继日志


I/O线程:登录主节点监听二进制日志,根据position的值判断是否有新的写操作;获取的所有内容都会写入本地一个  中继日志,由sql线程监听中继日志,实现启动本地客户端更新数据保持和主节点数据同步;

版权声明:本文为nanlinghan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/nanlinghan/p/9946042.html