方法有多種
成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專(zhuān)注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開(kāi)發(fā),軟件開(kāi)發(fā),小程序開(kāi)發(fā),十年建站對(duì)門(mén)簾等多個(gè)行業(yè),擁有多年的網(wǎng)站運(yùn)維經(jīng)驗(yàn)。
1:在數(shù)據(jù)庫(kù)中單獨(dú)存儲(chǔ)后三位的當(dāng)前值,整型類(lèi)型即可。比如12,13,15等等。代碼操作時(shí)獲取當(dāng)前值+1,然后保存+1后的值,根據(jù)當(dāng)前值得位數(shù)判斷是否需要補(bǔ)零。生成如012,013,123等數(shù)據(jù)
2:使用sql語(yǔ)句獲取id字段最大值,然后轉(zhuǎn)換為字符串,截取后三位,再轉(zhuǎn)為整數(shù),然后將轉(zhuǎn)后的整數(shù)+1,最后在連接上20140000就可
3:自己補(bǔ)充吧......
可以設(shè)置數(shù)據(jù)類(lèi)型長(zhǎng)度
精確數(shù)字
整數(shù)
bigint
從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數(shù)據(jù)(所有數(shù)字)。
int
從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數(shù)據(jù)(所有數(shù)字)。
smallint
從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整數(shù)數(shù)據(jù)。
tinyint
從 0 到 255 的整數(shù)數(shù)據(jù)。
bit
bit
1 或 0 的整數(shù)數(shù)據(jù)。
decimal 和 numeric
decimal
從 -10^38 +1 到 10^38 –1 的固定精度和小數(shù)位的數(shù)字?jǐn)?shù)據(jù)。
numeric
功能上等同于 decimal。
money 和 smallmoney
money
貨幣數(shù)據(jù)值介于 -2^63 (-922,337,203,685,477.5808) 與 2^63 - 1 (+922,337,203,685,477.5807) 之間,精確到貨幣單位的千分之十。
smallmoney
貨幣數(shù)據(jù)值介于 -214,748.3648 與 +214,748.3647 之間,精確到貨幣單位的千分之十。
近似數(shù)字
float
從 -1.79E + 308 到 1.79E + 308 的浮點(diǎn)精度數(shù)字。
real
從 -3.40E + 38 到 3.40E + 38 的浮點(diǎn)精度數(shù)字。
datetime 和 smalldatetime
datetime
從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時(shí)間數(shù)據(jù),精確到百分之三秒(或 3.33 毫秒)。
smalldatetime
從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時(shí)間數(shù)據(jù),精確到分鐘。
字符串
char
固定長(zhǎng)度的非 Unicode 字符數(shù)據(jù),最大長(zhǎng)度為 8,000 個(gè)字符。
varchar
可變長(zhǎng)度的非 Unicode 數(shù)據(jù),最長(zhǎng)為 8,000 個(gè)字符。
text
可變長(zhǎng)度的非 Unicode 數(shù)據(jù),最大長(zhǎng)度為 2^31 - 1 (2,147,483,647) 個(gè)字符。
Unicode 字符串
nchar
固定長(zhǎng)度的 Unicode 數(shù)據(jù),最大長(zhǎng)度為 4,000 個(gè)字符。
nvarchar
可變長(zhǎng)度 Unicode 數(shù)據(jù),其最大長(zhǎng)度為 4,000 字符。sysname 是系統(tǒng)提供用戶(hù)定義的數(shù)據(jù)類(lèi)型,在功能上等同于 nvarchar(128),用于引用數(shù)據(jù)庫(kù)對(duì)象名。
ntext
可變長(zhǎng)度 Unicode 數(shù)據(jù),其最大長(zhǎng)度為 2^30 - 1 (1,073,741,823) 個(gè)字符。
二進(jìn)制字符串
binary
固定長(zhǎng)度的二進(jìn)制數(shù)據(jù),其最大長(zhǎng)度為 8,000 個(gè)字節(jié)。
varbinary
可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),其最大長(zhǎng)度為 8,000 個(gè)字節(jié)。
image
可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),其最大長(zhǎng)度為 2^31 - 1 (2,147,483,647) 個(gè)字節(jié)。
其它數(shù)據(jù)類(lèi)型
cursor
游標(biāo)的引用。
sql_variant
一種存儲(chǔ) SQL Server 支持的各種數(shù)據(jù)類(lèi)型(text、ntext、timestamp 和 sql_variant 除外)值的數(shù)據(jù)類(lèi)型。
table
一種特殊的數(shù)據(jù)類(lèi)型,存儲(chǔ)供以后處理的結(jié)果集。
timestamp
數(shù)據(jù)庫(kù)范圍的唯一數(shù)字,每次更新行時(shí)也進(jìn)行更新。
uniqueidentifier
全局唯一標(biāo)識(shí)符 (GUID)。
tinyint,bigint
1.tinyint 默認(rèn)情況是帶符號(hào)的 2^8-1的范圍 超出范圍只存最大可接收值
比如 -129 256 會(huì)變成 -128 255
create table t9(id tinyint unsigned);
整數(shù)字段 默認(rèn)是帶符號(hào)的
針對(duì)整形 寬度不是限制位數(shù)而是顯示位數(shù)
根據(jù)用戶(hù)定義的枚舉值與分片節(jié)點(diǎn)映射文件,直接定位目標(biāo)分片。
用戶(hù)在rule.xml中配置枚舉值文件路徑和分片索引是字符串還是數(shù)字,DBLE在啟動(dòng)時(shí)會(huì)將枚舉值文件加載到內(nèi)存中,形成一個(gè)映射表
在DBLE的運(yùn)行過(guò)程中,用戶(hù)訪(fǎng)問(wèn)使用這個(gè)算法的表時(shí),WHERE子句中的分片索引值會(huì)被提取出來(lái),直接查映射表得到分片編號(hào)
與MyCat的類(lèi)似分片算法對(duì)比
中間件
DBLE
MyCat
分片算法種類(lèi) ? ?enum 分區(qū)算法 ? ?分片枚舉 ?
兩種中間件的枚舉分片算法使用上無(wú)差別。
開(kāi)發(fā)注意點(diǎn)
【分片索引】1. 整型數(shù)字(可以為負(fù)數(shù))或字符串((不含=和換行符)
【分片索引】2. 枚舉值之間不能重復(fù)
Male=0Male=1
或者
123=1123=2
會(huì)導(dǎo)致分片策略加載出錯(cuò)
【分片索引】3. 不同枚舉值可以映射到同一個(gè)分片上
Mr=0Mrs=1Miss=1Ms=1123=0
運(yùn)維注意點(diǎn)
【擴(kuò)容】1. 增加枚舉值無(wú)需數(shù)據(jù)再平衡
【擴(kuò)容】2. 增加一個(gè)枚舉值的分片數(shù)量數(shù)時(shí),需要對(duì)局部數(shù)據(jù)進(jìn)行遷移
【縮容】1. 減少枚舉值需要數(shù)據(jù)再平衡
【縮容】2. 減少一個(gè)枚舉值的分片數(shù)量數(shù)時(shí),需要對(duì)局部數(shù)據(jù)進(jìn)行遷移
配置注意點(diǎn)
【配置項(xiàng)】1. 在 rule.xml 中,可配置項(xiàng)為?property name="defaultNode" 、property name="mapFile" 和 property name="type"
【配置項(xiàng)】2. 在 rule.xml 中配置?property name="defaultNode"?標(biāo)簽,非必須配置項(xiàng),不配置該項(xiàng)的話(huà),用戶(hù)的分片索引值沒(méi)落在 mapFile 定義的范圍時(shí),DBLE 會(huì)報(bào)錯(cuò);若需要配置,必須為非負(fù)整數(shù),用戶(hù)的分片索引值沒(méi)落在 mapFile 定義的范圍時(shí),DBLE 會(huì)路由至這個(gè)值的 MySQL 分片
【配置項(xiàng)】3. 在 rule.xml 中配置 property name="mapFile"?標(biāo)簽,范圍映射文件的路徑:若在映射文件在 DBLE_HOME/conf 或其中,則可以使用相對(duì)路徑的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 時(shí),配置值就可以簡(jiǎn)寫(xiě)為 map/table_map.txt;映射文件在 DBLE_HOME/conf 目錄以外時(shí),需要使用絕對(duì)路徑,但這種做法需要考慮用戶(hù)權(quán)限等問(wèn)題,因此不建議把映射文件放在 DBLE_HOME/conf 外。
【配置項(xiàng)】4. 編輯 mapFile 所配置的文件
記錄格式為:枚舉值=分片編號(hào)
枚舉值可以是整型數(shù)字,或任意字符(除了=和換行符),分片編號(hào)必須是非負(fù)整型數(shù)字,記錄之間以換行分隔,一行僅能有一條記錄,枚舉值不能夠是“DEFAULT_NODE”這個(gè)字符串,允許以“//”和“#”在行首來(lái)注釋該行
【配置項(xiàng)】5. 在 rule.xml 中配置 property name="type"?標(biāo)簽;type 必須為整型;取值為 0 時(shí),mapFile 的枚舉值必須為整型;取值為非 0 時(shí),mapFile 的枚舉值可以是任意字符(除了=和換行符)
強(qiáng)制類(lèi)型轉(zhuǎn)換。比如f擔(dān)肌曹可丨玖查雪腸磨loat a=3.678;那么(int)a的值就是3;就是把小數(shù)點(diǎn)后邊的數(shù)據(jù)直接刪掉