博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
雨燕apply项目总结
阅读量:6516 次
发布时间:2019-06-24

本文共 698 字,大约阅读时间需要 2 分钟。

1,数据库默认值的问题

数据库尽量是非空的,然后不设置默认值,默认值由程序来设计

因为如果程序中设计有错误,应该是空值的地方没有没有处理掉,那插入数据库的时候应该报错,但如果你设置了默认值,排查将会变得困难

2,数据库唯一索引

如果可以是唯一索引的地方就添加唯一索引,包括联合唯一索引,例如,在一个多对多的中间表,两个字段确定一条唯一的数据,这两个字段就要加联合唯一索引了,因为在并发的情况下,容易插入两条这样的数据,这是不合理的

3,分库分表

整体理论:https://juejin.im/entry/5b5eb7f2e51d4519700f7d3c

整体和redis的分库分表策略一样

单库:1,单库所在服务器上磁盘空间不足,2,MySQL理论上也是一台服务器,单库上操作的IO瓶颈,注定了他也是有并发场景。

单表:1,索引膨胀,查询超时,数据量大的时候每次crud都要重新修改索引

分表策略:

  •  库名规范:{dbName}[0-N],表名规范:{tableName}_[0-15]
  • 桶和表配置 4096 * 16(每个库下面最多16张表)
  • 库的下标范围,表的下标范围
  • 定位方式,根据定位的objectId(接口实现 String getObjectId();) md5值后取前4位
  • 取桶号:4位字符串中前三位转16进制
  • 取表号:4位字符串中的最后一位转16进制

通过计算到分表策略后,到主库的策略表里面,获得这个index号是哪个库负责的,(从库可以是在不同数据库,在程序中已经注入了他的数据源

 

转载于:https://www.cnblogs.com/vhyc/p/10760753.html

你可能感兴趣的文章
smarty只能更包含include的困惑
查看>>
mysql架构
查看>>
linux导出>>文件到Window txt乱码
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
extreme (思路讯)交换机 配置vlan
查看>>
LINUX信息安全系统设计基础第一周学习总结
查看>>
几个网络测试命令
查看>>
syslog-ng应用详解
查看>>
Cisco ASA Failover
查看>>
SpringCloud第二弹(高可用Eureka+Ribbon负载均衡)
查看>>
【非专业前端】vue+element+webpack
查看>>
产品经理的自我修养
查看>>
我的友情链接
查看>>
android多选联系人实现
查看>>
再读PE(2)
查看>>
老男孩Linux学习 -- 关于Linux网络
查看>>
我的友情链接
查看>>
System Center 2012 SP1 Data Protection Manager 设置备份
查看>>
cxf wsdl2java代码生成
查看>>