- 一、什么情况下需要分库分表?
Mysql单表数据量超过500万条。
- 二、Asp.net Core 技术栈,分库分表的解决方案有哪些?
1、阿里云的DRDS
2、Mycat ---数据库分库分表中间件;
3、TiDB;
- 三、以上3种解决方案各自的特点:
1、阿里云DRDS是收费的商业版,价格稍贵,但是比SqlServer便宜多了;
2、MyCat分库分表,单表数据量在500万--5000万用最适合;
3、TiDB,单表数据量超过5000万以上最适合;
4、3种解决方案都是详细的文档;
5、使用过程中,运维维护成本,阿里云DRDS最方便最省事,TIDB其次,MyCat最差;钱多的就用阿里云DRDS.
- 四、Asp.net Core 如何接入3种解决方案?
1、跟直接连接Mysql基本一致;
2、引用Oracle官方的Mysql组件;
3、3种解决方案的sql有些出入,查看各自官方文档;
- 五、至于性能如何?
1、阿里云的DRDS毋庸置疑,TIDB在处理5000万以上的量,优势最明显;如果量级达到这个级别,就不要选择MyCat了。
2、MyCat的性能到底 如何,我们的项目目前也在初步试用中。
- 六、Asp.Net Core 3.1 EFCore接入MyCat的详细步骤
1、首要要自己安装MyCat,安装方法参照如下:
http://www.zyiz.net/tech/detail-123157.html
http://www.zyiz.net/tech/detail-123156.html
安装好,配置好,启动;(配置方面,以后再讲吧)
2、接下来我写个Demo的EFCore代码,大家可以自行修改,加入到自己的代码里。
1、引用Oracle官方的MySql连接器:
注:用Pomelo.EntityFrameworkCore.MySql这个组件也没问题。
2、创建数据实体和DBContext:
注:
1、Mysql的端口号为3306,可以默认不写;但是MyCat的端口号为8066,必须指定;
2、DBContext可以写在StartUp里,连接字符串可以写在appsettings.json里,我这里只是为了演示,简单写了。
3、链接字符串说明:
解释的够清楚了吧!!
3、测试:
至于新增、修改、删掉,跟以前的代码一致。就不一一演示了。MyCat的分库分表的配置,要看官方的文档介绍,一一配置好。
官方的教程网址如下:http://www.mycat.io/document/mycat-definitive-guide.pdf
文章如果你觉得好,能给个“推荐”不?
作者:沐雪
文章均系作者原创或翻译,如有错误不妥之处,欢迎各位批评指正。本文版权归作者所有,如需转载恳请注明。
为之网-热爱软件编程 http://www.weizhi.cc/