MYSQL集群-主从配置
《02_CentOS安装mysql数据库文档》
《03_Mysql主从配置文档》
《04_mysql主从知识点》
MYSQL集群-主从配置读写分离
参考工程文件
数据库分库分表、跨库查询
分库:
1:涉及到多数据源可以进行分库
2:项目部署是分布式系统,可以进行分库
3:涉及到大量的数据存储,需要分库
跨库查询:
1:必须要配置多数据源
2:在jdbc属性文件中增加多个数据库配置信息,key值保持唯一
3:在创建数据源的bean,需要搭建多个bean组件,id保持唯一
4:在dao层需要查询数据的时候,调用bean对应的templatement就可以了
分表:
应用场景:
1:设计到大量的数据存储,并且数据需要查询的时候
如何分表:
1:首先保证分表之后,表结构、索引、引擎、编码字符、视图等一致性
2:表名不能一样
第一种方式:
按照表容量大小进行分表(可以实现,不建议使用)
假设表容量最大200M(配置表的触发器)
tablename1-----199.9M----200.1M---数据丢失
tablename2-----0.1M-----数据不全、脏数据
tablename3.....
第二种方式:
按照时间进行分表(推荐使用)
建议每个月的20-25号左右,提前复制一张表
写(监听)
tablename_20171020
tablename_20171120
tablename_20171220
tablename_20180120
要写动态sql了
第三种,使用算法,判断表名称
用户ID必须使用的是UUID生成的字符
UUID对3取模/10,取余数1-6
那么此时可以使用这种方式,不过这种方式最多可以创建6张表
tablename1
tablename2
tablename...6
数据库触发器、监听器、视图、存储过程
参考资料:
你是如何对数据库做优化的?
1:数据库设计
数据库表:字段类型、字段长度、注释、字段命名规范
数据库索引:外键、关联字段、查询频率比较高的字段、
如果数据表字段>20,则最多支持16个索引
如果数据表字段<20,则根据查询频率字段来定
数据库视图:相当于一张临时表,业务中,尽量少使用
数据库引擎:根据业务,选择对应的表引擎技术
数据库存储过程:尽量少用
数据库字符:UTF-8、或者和页面字符保持一致
数据库监听器/触发器:一般用于调度任务或者备份还原
2:业务调用的sql语句优化
xml:
尽量少关联表,效率最高关联4张表,如果多于4张表,则需要开启两个链接事务,但是这两个事务,必须在一个service当中。
如果是查询语句,则不建议使用*
如果是查询语句,where条件后面,最好使用索引字段进行关联
3:数据库服务器的搭建(集群)
主从配置:
读写分离:
自动化(容器):