Skip to content
This repository was archived by the owner on Sep 26, 2024. It is now read-only.

Latest commit

 

History

History
110 lines (71 loc) · 4.16 KB

MySQL优化和脑图.md

File metadata and controls

110 lines (71 loc) · 4.16 KB

MYSQL

集群搭建、主从配置、读写分离

参考文档

《02_CentOS安装mysql数据库文档》

《03_Mysql主从配置文档》

《04_mysql主从知识点》

分库分表

  • 分库:

      分布式项目用的比较多
      设计到第三方系统
    
    • 跨库查询:

        配置多数据源
      
  • 分表:

      1:涉及海量数据存储
      2:涉及到业务数据(分模块)存储
    
    • 分表方式:

        1:根据容量来分200M----不推荐使用
            tablename1---200M
            tablename2---200M
            tablename3---200M
            需要配置数据库mysql的监听、触发器
            tablename1---199.9M---1M---0.1
            tablename2---0.9M
            容易造成一些脏数据
      
        2:根据时间来划分---推荐使用
      
            tablename201801
            tablenmae201802
            tablename201803
            tablename201804
            tablename201805
            tablename201806
      
            需要写定时器--22号就会生成一张新表---1.23
      
            什么时候去划分?每个月20-25号之间
      
            tablename201801
            tablename201802
      
      
        eg:查询用户所有的日志信息
      
            需要关联N*12张表,但是在业务处理的时候,我们不建议关联这么多张表,代码逻辑处理不了,只能通过业务处理(增加限制条件)
      
      
        3:根据用户ID来划分---不推荐使用--存在安全漏洞
      
            userid==自增、UUID,---算法----数字---取得是余数最后一位1-6
            table1
            table2
            table3....
      

四大特性、事务隔离

  • ACID:

      原子性、一致性、隔离性、持久性
    
  • 事务隔离四大级别:

    • 参考课程大纲脑图

如何对数据库做优化?

  • 1:数据库设计

      数据库表:字段类型、字段长度、注释、字段命名规范
      数据库索引:外键、关联字段、查询频率比较高的字段、
              如果数据表字段>20,则最多支持16个索引
              如果数据表字段<20,则根据查询频率字段来定
      数据库视图:相当于一张临时表,业务中,尽量少使用
      数据库引擎:根据业务,选择对应的表引擎技术
      数据库存储过程:尽量少用
      数据库字符:UTF-8、或者和页面字符保持一致
      数据库监听器/触发器:一般用于调度任务或者备份还原
    
  • 2:业务调用的sql语句优化

      xml:
      尽量少关联表,效率最高关联4张表,如果多于4张表,则需要开启两个链接事务,但是这两个事务,必须在一个service当中。
      如果是查询语句,则不建议使用*
      如果是查询语句,where条件后面,最好使用索引字段进行关联
    
  • 3:数据库服务器的搭建(集群)

      主从配置:
      读写分离:
      自动化(容器):