参考:
1.【已实践】Mysql安装配置.txt
2.【已实践】MySQL 主从复制的配置.txt
3.【已实践】读写分离-分库分表-sharding-jdbc
实践案例1:订单表的分库分表
例如平台业务系统的订单表:每天会产生80万比交易,每个月将近2000万,作如下的设计:
>> 按一年12个月分成12张表,设计3个数据库,这样3个库每个库12张表;
>> 实际上每个月最高2500的数据,会被平摊到3个库的当月表里,每个库800万数据量,每天每个库表20-30万次插入
数据库和表的路由策略是:
库ID = 订单号%库数量;
表ID = 订单号%表数量
设计:
(1) 库表设计
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_01`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_02`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_03`;
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_01`.`t_order_201701`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
....
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_01`.`t_order_201712`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_02`.`t_order_201701`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
....
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_02`.`t_order_201712`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_03`.`t_order_201701`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
....
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_03`.`t_order_201712`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
这里需用root用户建库,然后给xmtest用户相应的权限
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_01`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_02`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_03`;
grant all privileges on CFSP_ORDER_01.* to 'xmtest'@'%' identified by '123456' WITH GRANT OPTION;
grant all privileges on CFSP_ORDER_02.* to 'xmtest'@'%' identified by '123456' WITH GRANT OPTION;
grant all privileges on CFSP_ORDER_03.* to 'xmtest'@'%' identified by '123456' WITH GRANT OPTION;
注:在这里每个库建一张逻辑表
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_01`.`t_order`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_02`.`t_order`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_03`.`t_order`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20) ,PRIMARY KEY (`order_id`));
(2) 基于sharding-jdbc-mybatis的开发
参考工程:
sharding-jdbc-example-mybatis
sharding-jdbc-example-config-spring-masterslave
实践步骤:
(1) 通过maven构建spring框架 参考:构建SSH框架.txt
新构建项目:YJR-demo-Sharding-jdbc
(2) 在工程中配置:shanrding-jdbc
(3) 实践案例:按不同月份和不同订单号进行分表分库,读写分离测试
配置过程主要做的是:
1.spring-mabatis文件拆分成applicationContext.xml 和 Mybatis配置文件applicationContext-mybatis.xml
2.配置applicationContext-mybatis.xml和jdbc.properties(稍后提取公共部分)
2.1 这里配置库就行了,3个主库,伴随着读的2个从库(也分3个库)
order_01_master order_01_slave_0 order_01_slave_1
order_02_master order_02_slave_0 order_02_slave_1
order_03_master order_03_slave_0 order_03_slave_0
不要忘记:
(1) 提取公共部分(1.提取公共部分 2.使用durid数据源);
(2) 实践中的分页查询
(3) 全局主键/强制使用主库读写
(4) 使用全局ID
4.【已实践】读写分离-分库分表-基于中间件-Mycat
- 浏览: 65826 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (69)
- 系统评估,设计与规划 (4)
- 性能测试与诊断 (3)
- 硬件,网络与操作系统 (1)
- &&&&性能层面&&&& (0)
- 负载均衡与反向代理 (4)
- 应用扩容-RPC,SOA和微服务 (11)
- 数据扩容-应用层面&中间件 (6)
- 网络协议框架 (0)
- OpenResty (5)
- 缓存 (7)
- 应用服务器:基础及优化 (2)
- JVM:基础及优化 (1)
- Java及开发框架相关技术 (2)
- 关系型数据库:基础优化及读写分离 (9)
- NOSQL数据库 (0)
- 开发工具 (1)
- 收藏 (1)
- 实践项目总结 (0)
- 搜索引擎 (1)
- Zookeeper (1)
- &&&&可用性层面&&&& (1)
- 池化技术 (2)
- 学习 (1)
- 分布式系统链路追踪 (1)
- 开发效率 (1)
- jdk使用及源码解析 (1)
- 高级架构设计师考试 (0)
- JAVA设计模式 (1)
- JAVA虚拟机 (1)
- 数据结构与算法 (1)
- 网络 (1)
- 多线程 (0)
- 源码解析 (1)
- 业务场景及解决方案 (0)
- 石杉架构 (1)
最新评论
发表评论
-
悲观锁和乐观锁的区别和应用场景
2017-08-22 17:20 613悲观锁和乐观锁的区别和应用场景 https://zm8. ... -
基于Sharding-Jdbc的实战
2017-08-18 13:36 1680基于Sharding-Jdbc的实战 参考: http:/ ... -
基于sharding-jdbc 之spring+mybatis+sharding-jdbc整合
2017-08-18 13:35 7466基于sharding-jdbc 之spring+mybat ... -
Cannal实现数据异构
2017-08-15 17:49 3344问题:在大型网站架构 ... -
Mysql分库分表:基于DangDang-Sharding-Jdbc的介绍
2017-08-15 17:42 3184【大数据】每秒十万笔交易的数据架构解读 基于官网介绍, ... -
Mysql-主从复制配置
2017-08-15 17:45 478参考:<<MySQL主从复制的配置(CentOS- ... -
Mysql-安装与配置
2017-08-15 17:39 9901.备注:以下实践结合的是《MySQL源码编译安装(Cen ... -
数据库异常总结
2017-08-14 17:14 414突然数据库不可用了,一直报错:com.mysql.jdbc. ... -
基于spring-Mybatis的读写分离配置
2017-08-11 09:32 618参考: 1.Spring 实现数据库读写分离 2.ht ... -
基于应用层面的分库分表-当当sharding-jdbc
2017-08-10 15:23 1848阿里的分库框架cobar-clie ... -
Mysql-SQL优化
2017-07-31 16:50 670一、概述:Mysql数据库的优化技术,对mysql优化是一个综 ... -
Mysql-表的设计合理化
2017-07-31 16:48 576参考阅读: 58到家数 ...
相关推荐
本篇文章将基于“mysql5的使用 mysql实践”的主题,深入探讨MySQL的基础知识、安装配置、数据操作以及简单的性能优化,帮助初学者快速上手。 首先,我们来了解MySQL的基本概念。MySQL是一个开源、免费的SQL数据库...
本文档旨在提供一系列MySQL实践学习的关键知识点,帮助读者深入理解并掌握其核心功能。 一、安装与配置 在开始学习MySQL之前,你需要在你的计算机上安装MySQL服务器。这通常涉及到下载适合你操作系统的MySQL安装包...
总的来说,这份58同城的大数据量下MySQL实践技术方案,涵盖了从存储策略、索引优化、缓存管理、监控调优到分布式架构的全面内容,是理解如何在大数据环境下驾驭MySQL的宝贵资料。通过对这些知识点的学习和实践,可以...
为了提高数据库服务的可用性、弹性和可维护性,一种名为“云原生Mysql实践”的技术应运而生,它将数据库服务与云服务紧密集成,以实现更高的服务水平。 云原生Mysql实践的云化目标主要包括四个方面:高可用、数据...
本实践项目通过一个网站的运营日志,利用hadoop/hive/sqoop/mysql/python等一系列组件联合实践分析挖掘网站运营数据。是不可多得的完整的学习、讲课案例资源。本资源包含ppt、代码、文档及所需数据。
mysql实践任务.sql
秒杀场景下的MySQL实践.pdf
MySQL实践总结PPT教案学习.pptx
接下来,我将详细介绍《MySQL 最佳SQL优化实践手册》中提到的核心知识点。 首先,关于索引的优化,手册提到了多种索引类型,包括B-tree索引、hash索引、聚簇索引和非聚簇索引。B-tree索引由于其平衡树的特性,适合...
第3课 查询优化技术理论与MySQL实践(一)------子查询的优化(一) 第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容和范围,建立清晰的概念 从实践看,MySQL的子查询...
MySQL 实践指南 本文档旨在提供 MySQL 实践指南,涵盖 MySQL 基础知识、数据类型、表结构操作、数据操作语言(DML)等方面的内容。 一、MySQL 基础知识 MySQL 是一种关系型数据库管理系统,用于存储和管理数据。...
MySQL实践第1章SQL데이터 201007 SELECT * FROM copang_main . member ; -- copang_main이라는 db의 member table을 가져온다.DATETIME에 年月DAYOFMONTH DATEDIFF 训练DATE_ADD DATE_SUB UNIX_TIMESTAMP FROM_UNIX...
### MySQL开发最佳实践 在IT领域,特别是数据库管理和应用开发中,MySQL因其高效、稳定以及易用性而被广泛采用。然而,在实际的应用过程中,如何有效地利用MySQL,并避免常见的问题和陷阱,则是每个开发者和数据库...
本文将围绕知数堂吴炳锡所提出的MySQL最佳实践32条,针对硬件、MySQL版本、开发、安全、操作系统、MySQL配置和运维事项等几个方面,进行详细的知识点梳理。 首先,从硬件层面来看,BIOS的配置优化是非常重要的一个...
"MySQL性能优化和高可用架构实践" 本书《MySQL性能优化和高可用架构实践》是一本详细介绍MySQL性能优化和高可用架构实践的书籍,旨在帮助读者提升MySQL数据库的性能和可靠性。本书的内容涵盖了查询优化的基本原则和...
MySQL面试题与数据库...* MySQL 实践问题:数据备份、数据恢复、数据库性能优化等。 MySQL 面试题涵盖了数据库设计、SQL 语句、事务处理等多方面的知识点,对于一个 Java 工程师来说,掌握这些知识点是非常重要的。
### MySQL入门实践,适合初学者 #### 一、MySQL简介及安装 MySQL是一种关系型数据库管理系统,被广泛用于Web应用程序的开发中。它以其高性能、可靠性和易用性而著称,非常适合初学者入门学习。 - **安装过程**: ...
#### 二、MySQL实践案例分析 ##### 1. 个人博客系统 - **背景**: 个人博客系统是一种常见的应用场景,涉及到用户管理、文章发布等功能。 - **数据库设计**: 设计数据库存储用户信息、文章信息、评论信息等。 - **...