• mysql浅龟定


    一,尽量不字啊数据库做运算

    1,尽量不再数据库做运算,

    2,将复杂运算移动到cpu

    3,尽可能简单应用mysql

    二,控制表数据量

    1,纯 int不超过1000w

    2,含char不超过500w

    3,建议单裤不超过300-400个表

    三,保持表的苗条身材

    1,表的字段数少而精

    2,单表字段数上限在20~50个

    四,平衡范式和冗余

    1,效率优先,提升性能

    2,没有绝对的对与错

    3,适当牺牲范式,加入冗余

    五,拒绝3B

    1,大SQL

    2,大事务

    3,大批量

    六,字段设置龟定

    1,将字符转化为数字(更高效,查询快,占空间更小)

    2,优先使用enum或set(值已知或有限,如 性别)

    3,避免使用NULL字段(很难优化查询,加索引需要额外空间,含NULL复合索引无效)

    4,尽量不使用text/blob(必须使用时拆分到单独的表)

    5,不再数据库存图片

    七,索引浅龟定

    1,谨慎添加索引

    2,最好不超过字段数20%

    3,字段前加前缀

    4,不在索引列做运算

    八,主键设置

    1,二级索引存储主键值2,主键不应更新或者修改3,按自增顺序插入值4,忌用字符串做主键5,若不指定主键,innoDB会使用唯一且非空值索引代替

    九,事务,触发器,or,limit浅龟定1,事务/连接使用原则:即开即用,用完即关

    2,与事务无关的操作放到事务外面,减少锁资源的占用

    3,不破坏一致性的前提下,使用多个短事务代替长事务4,尽可能少用存储过程

    5,尽可能少使用触发器6,减少使用mysql函数对结果进行处理(由客户端程序负责)

    7,尽量不适用select *,只取需要的数据列

    8,改or为in()【or效率 O(n),in效率O(log n)】控制in的数量,建议小于2009,改or为union

    10,减少使用count(*)

    11,limit(偏移量越大则越慢)

    select id,col1,col2 from test limit 1999999,10;

    替换为:

    select id,col1,col2 from test where id>1999999 limit 10;

    杂项浅龟定:

    1,适当分解连接保证高效并发

    2,永远不再程序端显式加锁【外部锁对数据库不可控,高并发是时灾难】

    3,统一字符集为utf-8

    4,统一命名规范【库表名统一小写,索引名称默认为"idx_字段名",库名用缩写】

  • 相关阅读:
    Python数据可视化的四种简易方法
    阿里如何将“高峰前扩容、高峰后缩容”的梦想照进现实?
    支付宝客户端架构解析:Android 容器化框架初探
    阿里工业互联网平台“思考”:一场从0到1的蜕变
    关于Flutter初始化流程,我必须告诉你的是...
    类在什么时候加载和初始化
    instanceof 与isAssignableFrom
    Java注释@interface的用法【转】
    网站过滤器Filter
    正则表达式
  • 原文地址:https://www.cnblogs.com/sunshinekevin/p/6915390.html
Copyright © 2020-2023  润新知