1,数据库默认值的问题

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

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

2,数据库唯一索引

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

3,分库分表

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

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

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

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

分表策略:

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

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

雨燕apply项目总结的更多相关文章

  1. spring boot系列01--快速构建spring boot项目

    最近的项目用spring boot 框架 借此学习了一下 这里做一下总结记录 非常便利的一个框架 它的优缺点我就不在这背书了 想了解的可以自行度娘谷歌 说一下要写什么吧 其实还真不是很清楚,只是想记录 ...

  2. 云平台项目--学习经验--回调函数中call和apply

    Js中可以通过call和apply来代替另一个对象调用一个方法,将一个函数对象上下文从初始上下文改变为thisObj指定的新对象.简而言之,改变函数执行的上下文,而call和apply的基本区别在于他 ...

  3. flink-----实时项目---day05-------1. ProcessFunction 2. apply对窗口进行全量聚合 3使用aggregate方法实现增量聚合 4.使用ProcessFunction结合定时器实现排序

    1. ProcessFunction ProcessFunction是一个低级的流处理操作,可以访问所有(非循环)流应用程序的基本构建块: event(流元素) state(容错,一致性,只能在Key ...

  4. JS核心系列:浅谈 call apply 与 bind

    在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...

  5. SQL Server-聚焦APPLY运算符(二十七)

    前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...

  6. H5项目开发分享——用Canvas合成文字

    以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...

  7. Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决

    在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...

  8. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  9. git提交项目到已存在的远程分支

    今天想提交项目到github的远程分支上,那个远程分支是之前就创建好的,而我的本地关联分支还没创建.   之前从未用github提交到远程分支过,弄了半个钟,看了几篇博文,终于折腾出来.现在把步骤整理 ...

随机推荐

  1. 分布式大数据系统离线分析技术解决方案(spark2.x)

    一.sark2.x新型的架构系统

  2. 图数据库Neo4j

    官网下载:https://neo4j.com/download/ 图数据库Neo4j入门:https://blog.csdn.net/gobitan/article/details/68929118 ...

  3. QT之uic、moc、rcc命令生成相应的cpp文件

    1.rcc 生成qrc.cpp文件 2.uic生成ui_*.h,moc生成moc_*.cpp文件

  4. Python参数笔记

    Python参数 1. 普通参数 必须要传入和定义时个数相同的参数 def miao(acfun, bilibili): print(acfun, bilibili) miao(11, 22) > ...

  5. tomcat文件下目录介绍

    主目录下有bin ,conf ,lib ,logs ,temp ,webapps ,work 7个文件夹,下面对它们分别进行介绍: 1.bin目录主要是用来存放tomcat的命令,主要有两大类,一类是 ...

  6. 设置Delphi默认按utf8格式保存单元文件

    Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Embarcadero\BDS\19.0\Editor] " ...

  7. html link JS

    在html中调用js代码: 一.将javascript直接写在html文件中,然后在html中调用js函数等. 二.将js代码写一个文件中,然后在html中引用该文件,在使用js文件中定义的js函数. ...

  8. oracle针对某列让特定信息排序[decode]

    在ORACLE查询中,如果在没有排序,但又想让某列中特定值的信息排到前面的时候,使用oracle的decode(字段,'字段值',数字) 如 select name from user 查询出来的所有 ...

  9. ios12更新开发者需要做什么

    1.StatusBar内部结构改变 现象:crash crash log: -[_UIStatusBarIdentifier isEqualToString:]: unrecognized selec ...

  10. 【图解】Hive文件存储格式

    摘自:https://blog.csdn.net/xueyao0201/article/details/79103973 引申阅读原理篇: 大数据:Hive - ORC 文件存储格式 大数据:Parq ...