mysql单机内部分库

目前项目使用的是单机mysql,内部也只有一个库,现在想要根据不同的子业务在单机内部拆分成多个库,避免后续子业务拓展但仍操作同一个大库的情况,但是现在有以下几个疑问:

1、单机内部拆分成多库之后是否会对原来的sql操作造成比较大的影响,比如单库内的跨表查询变成了多库跨表,还有事务操作也有可能需要跨库。

2、单机内部分库之后是否有助于提高稳定性,会不会出现一个库挂掉,另外的库是好的,整体单机表现正常的情况?

3、单机内部分库之后还是会受制于单机本身的性能瓶颈吧,分库后能提高IO吗?

4、分库之后还有哪些缺点?

阅读 2.7k
3 个回答
1、sql操作需要带库名
2、跨库事务即内部xa
3、单机多库与单库一样,一挂全挂
4、不做额外处理的话,IO性能并不会有什么变化

看楼主的意思是应该公司的业务拆分,不同的业务对应不同的数据库,不是应对大数据存储而进行的分库分表;那就是业务重构了,sql、代码、架构什么的肯定都是重来了,为什么还考虑对以前的sql有影响呢?
如果是只是业务分库,业务数据量又不是很大的话,性能什么的都不是暂时需要考虑的问题,一般都是数据量到达一定的量级才会考虑分库分表,现在最关键的还是完善好系统架构,好的架构对后期的维护和扩展真的很重要。

还是觉得楼主重点问的是业务拆分,提问分库很容易造成误解,看题目还以为是针对大数据量的分库分表。纯属个人观点!

新手上路,请多包涵

分库确实有很多问题,但是现在大多数互联网企业由于业务数据庞大基本上都会使用分库分表。分库分表最根本的原因就是解决单机负载压力,把一台机器上的压力分散到多台服务器上去。
分库也确实有一些问题需要考虑:
1.分库规则和策略(分片原则)。什么样的数据进如DB1中,什么样的数据进入DB2中
2.跨库事物
3.分布式业务主键如何设计
4.库表和库表之间如果需要join
5.分页的问题
6.多数据源整合的问题
其实,单机分库只是解决了表的压力,并没有解决服务器的压力。
现在也有很多开源组件支持分库分表,可以参考下mycat sharding-jdbc等等一些开源项目。

欢迎加Q群交流讨论Java技术 696883318

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题