国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

XCode v8.11 重量級分表分庫(無視海量數據)

2019-11-17 03:06:15
字體:
來源:轉載
供稿:網友

XCode v8.11 重量級分表分庫(無視海量數據)

Posted on 2014-06-16 05:01 大石頭 閱讀(...) 評論(...) 編輯 收藏

XCode天生就有分表分庫功能,設計于2005年!歷時9年,這是分表分庫功能第一次針對性正式更新。在XCode里面,分表分庫非常簡單,在操作數據(查詢/更新)前修改Meta.ConnName/Meta.TableName,指向別的連接字符串和表名,就實現了分表分庫功能!實際上,XCode實體層構建數據操作SQL(Select/Insert/Update/Delete)時,依賴于Meta.TableName,執行SQL時,依賴于Meta.ConnName。所以,修改這兩個即可實現數據操作的重定向!為了避免多線程誤傷以及混亂,這兩個屬性的修改,都是僅對本線程有效!實例代碼如下:

var entity = User.FindByID(1);entity.Account = "大石頭" + DateTime.Now;User.Meta.

這里展示了兩種分表分庫的用法!新增加的兩個API是ProcessWithSplit和CreateSplit,前兩個參數就是ConnName和TableName,意思是在目標連接/表名上進行數據庫操作。這兩個API都具有連接名表名還原功能,也就是說,執行完目標數據操作代碼以后,連接名和表名要還原回來當前狀態。執行日志如下:

03:38:28.996 9 N - Select * From [User] Order By ID Desc03:38:29.038 9 N - 完成更新緩存(第1次):NewLife.CommonEntity.User03:38:29.118 9 N - 檢查實體NewLife.CommonEntity.User的數據表架構,模式:CheckTableWhenFirstUse03:38:29.208 9 N - 創建表:User2(用戶)03:38:29.225 9 N - Create Table User2(ID int IDENTITY(1,1) Primary Key,Account nvarchar(50) NULL,PassWord nvarchar(50) NULL,IsAdmin bit NULL,IsEnable bit NULL)03:38:29.234 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Descr

日志中可以看到,第一次分表到User2時,XCode發現User2表不存在,馬上開動反向工程來創建一張一模一樣的表。該操作無視配置文件中關于反向工程的配置,即使配置關閉反向工程,這里仍然有效。我們還看到,User2表也進行了數據初始化,實體類User.InitData里面檢測數據表是否有數據,如果沒有,則自動添加一條。所以,數據初始化是表級有效,而不是實體類級別有效。在Insert User2之前,有一次根據Account的查詢,但是我們代碼里面并沒有這一次查詢,怎么回事?原來,Account是唯一索引,XCode的Valid會自動檢查,在數據插入到數據庫之前提前報警,而不是等待數據庫報錯。同樣,User3也經歷了這個過程!分表分庫,可以讓我們根據業務需要(一般是時間),把不同數據分散在不同數據庫和不同數據表中。因此,XCode能夠讓你的系統完全無視海量數據,完全無視性能!(分表后單表性能提升)當然,分表分庫的根基是反向工程,沒有它,你只能自己手工建立數據庫和數據表!我們相信,XCode的分表分庫功能在當下的數據映射框架中是獨一無二的!End.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自治县| 体育| 威远县| 连山| 清丰县| 赣州市| 乐都县| 从化市| 广河县| 深州市| 武陟县| 出国| 分宜县| 丹巴县| 攀枝花市| 古蔺县| 铜梁县| 许昌市| 唐海县| 桂林市| 宁南县| 南昌县| 湟中县| 延边| 临沭县| 金堂县| 天全县| 深州市| 威信县| 日照市| 庄河市| 凉城县| 雷山县| 开化县| 周至县| 和平区| 建平县| 鄂尔多斯市| 富阳市| 赤壁市| 佛冈县|