zoukankan      html  css  js  c++  java
  • 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与anaconda之间的冲突问题
    ansible之roles
    ansible剧本之playbook操作
    git从远程仓库拉取内容或向远程仓库上传内容
    python操作excel
    nginx基于uwsgi部署Django
    第二篇:版本控制git之分支
    笔试题92-101
    Django总结
    笔试题70-91
  • 原文地址:https://www.cnblogs.com/sunshinekevin/p/6915390.html
Copyright © 2011-2022 走看看