MyBatis如何实现Mysql数据库分库分表的实例详解


本文摘自PHP中文网,作者黄舟,侵删。

这篇文章主要介绍了MyBatis实现Mysql数据库分库分表操作和总结,需要的朋友可以参考下

前言

作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步。这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这时就需要进行数据库切分的操作了。

MyBatis实现分表最简单步骤

既然文章的标题都这么写了,不如直接上干货来的比较实际,我们就先来看看如何实现最简单的分表。

1、我们模拟用户表数据量超过千万(虽然实际不太可能)

2、用户表原来的名字叫做user_tab,我们切分为user_tab_0user_tab_1(实际也可能不是这么随意的名字),这样就能把原来千万的数据分离成两个百万的数据量的两张表了。

3、如何操作这两张表呢?我们利用userId也就是用户的唯一标识进行区分。

4、userId%2 == 0的用户操作表user_tab_0,同理userId%2 == 1的用户操作表user_tab_1

5、那么在MyBatis中sql语句如何实现呢?下面是举例查询一个用户的sql语句


1

2

3

4

5

<select id="getUser" parameterType="java.util.Map" resultType="UserDO">

    SELECT userId, name

    FROM user_tab_#{tabIndex}

    WHERE userId = #{userId}

</select>

其中我们传入了两个参数tabIndex和userId,tabIndex就是需要操作表的标示值(0或1),这样如果需要查询userId为5的用户,那么最终出现的sql语句就会是:


1

2

3

SELECT userId, name

FROM user_tab_1

WHERE userId = 5

其他多余的DAO服务和实现我这里就不多展示了,相信聪明的你肯定会的。

阅读剩余部分

相关阅读 >>

mysql怎么查两个表的交集

mysql5.7以上版本配置my.ini的详细步骤

在同一台机器上运行多个 mysql 服务

mysql中删除语句怎么写

mysql内存不足怎么办

mysql源码是什么语言

mysql查询时间基础教程

sql与pl /sql之间的简单比较

mysql如何查询下一条数据

mysql workbench怎么设置为中文?(仅菜单项汉化)

更多相关阅读请进入《Mybatis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...