Asp.NetCore 3.1 EFCore處理Mysql的分庫分表--MyCat解決方案


  • 一、什么情況下需要分庫分表?

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連接器:

MySql.Data.EntityFrameworkCore

 注:用Pomelo.EntityFrameworkCore.MySql這個組件也沒問題。

2、創建數據實體和DBContext:

using Microsoft.EntityFrameworkCore; using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace NetCore3WebTest.Models
{
    public class CourseContext: DbContext
    {
        //public CourseSContext(DbContextOptions<CourseSContext> options) : base(options)
        //{//沐雪大神在此
        //我的原創文章https://www.cnblogs.com/puzi0315/p/12608923.html,轉載能留個出處嗎?
        //}
        string connstr = "server=mysqldb.www.zyiz.net;port=8066;uid=root;pwd=123456;database=TESTDB";
        protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseMySQL(connstr);

        public DbSet<Course> course { get; set; }
 
    }


    public partial class Course
    {
        ///<summary>
        ///id
        ///</summary>
        public int id { get; set; }
        ///<summary>
        ///業務主鍵-年月-guid
        ///</summary>
        public string course_id { get; set; }
       ///<summary>
        ///課程名稱
        ///</summary>
        public string course_name { get; set; }
       

    }

}

注:

1、Mysql的端口號為3306,可以默認不寫;但是MyCat的端口號為8066,必須指定;

2、DBContext可以寫在StartUp里,連接字符串可以寫在appsettings.json里,我這里只是為了演示,簡單寫了。

3、鏈接字符串說明:

server=MyCat的服務器地址;port=8066;uid=MyCat在server.xml里配置的UserName;pwd=UserName的密碼;database=MyCat配置里的schemas名稱(非Mysql的庫名稱)

 

解釋的夠清楚了吧!!

 

 

3、測試:

 

  using(var db=new  CourseContext())
            {

                var list = db.Course.OrderBy(p=>p.id).ToList<Course>();
                JsonResult js = Json(list);
                return js;

            }

 

至於新增、修改、刪掉,跟以前的代碼一致。就不一一演示了。MyCat的分庫分表的配置,要看官方的文檔介紹,一一配置好。

 

官方的教程網址如下:http://www.mycat.io/document/mycat-definitive-guide.pdf

文章如果你覺得好,能給個“推薦”不?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM