设为首页 加入收藏

TOP

MySQL水平拆分(读书笔记整理)(三)
2015-07-24 11:53:45 来源: 作者: 【 】 浏览:4
Tags:MySQL 水平 拆分 读书 笔记 整理
ing name){ Stringsql="insert intohwdb.uc_user(user_id,uc_name,created_time)values(?,?,?)"; int i=0; long uid =user_id.longValue(); Connectionconn=cnn; try{ PreparedStatement preStmt=conn.prepareStatement(sql); preStmt.setLong(1, uid); preStmt.setString(2,name); preStmt.setString(3,getTimeByCalendar()); i=preStmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } return i;//返回影响的行数,1为执行成功 } }

?

6.4 测试代码

User_id按照注册年月日时分秒+9999,这样的思路是,一秒满足9999个并发,也不会,至于如何统一规划这全局的9999个,可以设置一个静态的全局变量,而且这个全局变量会及时保存到某个DB中,这样基本保证了不重复,比如user_id:2015053010401005、2015053010401006、2015053010401007,测试代码如下:

 MySQLTestmt=newMySQLTest(); // BigIntegerbi = newBigInteger("2015053010401005"); Stringport=mt.getDBPort(bi.longValue()); Connection conn=mt.getConn(port); mt.insert(conn,bi, "tim--"+bi.longValue());

1)通过%3来获取DB连接;

 余0 --> db1(3307端口) 余1 --> db2(3308端口) 余2 --> db3(3309端口) 

2)查看结果

运行结束后,可以去3个实例相应的查看录入的数据,如下所示:
Id为2015053010401005应该录入到db1(3307端口)

[root@data02 ~]# mysql--socket=/usr/local/mysql3307/mysql.sock -e "select * fromhwdb.uc_user;"; +------------------+-----------------------+---------------------+ | user_id | uc_name | created_time | +------------------+-----------------------+---------------------+ | 2015053010401005 | tim--2015053010401005 |2015-04-30 09:27:48 | +------------------+-----------------------+---------------------+ [root@data02 ~]#

Id为2015053010401006应该录入到db2(3308端口)

[root@data02 ~]# mysql--socket=/usr/local/mysql3308/mysql.sock -e "select * fromhwdb.uc_user;"; +------------------+-----------------------+---------------------+ | user_id | uc_name | created_time | +------------------+-----------------------+---------------------+ | 2015053010401006 | tim--2015053010401006 |2015-04-30 09:27:57 | +------------------+-----------------------+---------------------+ [root@data02 ~]#


Id为2015053010401007应该录入到db3(3309端口)

[root@data02 ~]# mysql--socket=/usr/local/mysql3309/mysql.sock -e "select * fromhwdb.uc_user;"; +------------------+-----------------------+---------------------+ | user_id | uc_name | created_time | +------------------+-----------------------+---------------------+ | 2015053010401007 | tim--2015053010401007| 2015-04-30 09:28:01 | +------------------+-----------------------+---------------------+ [root@data02 ~]#

6.5总结

基本和预想的一样的,数据通过模id取余数的方法,水平拆分到不同的库里面,这里只是简单演示了下,实际生产的复杂程度远比这个要高的多,所以大家遇到的问题会更多,但是水平拆分的理念都是类似的,这条路是光明的,大家可以放心走下去。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【访问MySQL服务器】 下一篇mysql旧表去重数据导入新表且赋予..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)