zoukankan      html  css  js  c++  java
  • MySQL性能优化经验

     

    核心

    • 不做运算 md5() Order By Rand()
    • 控制单表数据量
    • 保持表字段苗条
    • 平衡范式与冗余
    • 拒绝3B Big SQL Big Transaction Big Batch

    字段

    • 用好数值字段类型
    • 将字符转为数字 IP
    • 优先使用枚举 ENUM``SET
    • 避免使用NULL字段
    • 少用并拆分TEXT/BLOB
    • 不存图片

    索引

    • 谨慎合理添加索引 20%
    • 字符字段必须建前缀索引
    • 不在索引列做运算
    • 自增列或全局ID做InnoDB主键
    • 尽量不用外键

    SQL

    • SQL语句尽可能简单
    • 保持事务(连接)短小
    • 避免使用SP/TRIG/FUNC
    • 避免使用 SELECT *
    • 改写OR语句 IN UNION
    • 避免负向查询和%前缀模糊查询
    • 减少COUNT(*)
    • LIMIT高效分页
    • UNION ALL而非UNION
    • 分解联接保证高并发
    • GROUP BY去除排序
    • 同数据类型的列值比较
    • Load data导数据
    • 打散大批量更新 SLEEP
    • Know Every SQL

    约定

    • 隔离线上线下
    • 禁止未经DBA确认的子查询
    • 永远不在程序端显式加锁
    • 统一字符集为UTF8
    • 统一命名规范
  • 相关阅读:
    maven 常用命令
    navicat 破解
    linux命令
    Git常用命令
    关于近期工作的总结
    ES6新特性学习
    Hadoop初步学习
    串行、并行与并发的理解
    通过Spring profile方式实现多环境部署
    使用MySQL乐观锁解决超卖问题
  • 原文地址:https://www.cnblogs.com/jxlwqq/p/5590021.html
Copyright © 2011-2022 走看看