mysql date函式怎麼用愛可生雲資料庫 2020-06-22

以每24小時作為一份時間(而非自然日),根據使用者的配置有兩種工作模式:帶狀模式中,使用者僅定義開始日期時,從開始日期(含)開始,每份時間1個分片地無限增加下去;環狀模式中,使用者定義了開始日期和結束日期時,以結束日期(含)和開始日期(含)之間的時間份數作為分片總數(分片數量固定),以類似取模的方式路由到這些分片裡。

1。 DBLE 啟動時,讀取使用者在 rule。xml 配置的 sBeginDate 來確定起始時間

2。 讀取使用者在 rule。xml 配置的 sPartionDay 來確定每個 MySQL 分片承載多少天內的資料

3。 讀取使用者在 rule。xml 配置的 dateFormat 來確定分片索引的日期格式

4。 在 DBLE 的執行過程中,使用者訪問使用這個演算法的表時,WHERE 子句中的分片索引值(字串),會被提取出來嘗試轉換成 Java 內部的時間型別

5。 然後求分片索引值與起始時間的差,除以 MySQL 分片承載的天數,確定所屬分片

1。 DBLE 啟動時,讀取使用者在 rule。xml 配置的起始時間 sBeginDate、終止時間 sEndDate 和每個 MySQL 分片承載多少天資料 sPartionDay

2。 根據使用者設定,建立起以 sBeginDate 開始,每 sPartionDay 天一個分片,直到 sEndDate 為止的一個環,把分片串聯串聯起來

3。 讀取使用者在 rule。xml 配置的 defaultNode

4。 在 DBLE 的執行過程中,使用者訪問使用這個演算法的表時,WHERE 子句中的分片索引值(字串),會被提取出來嘗試轉換成 Java 內部的日期型別

5。 然後求分片索引值與起始日期的差:如果分片索引值不早於 sBeginDate(哪怕晚於 sEndDate),就以 MySQL 分片承載的天數為模數,對分片索引值求模得到所屬分片;如果分片索引值早於 sBeginDate,就會被放到 defaultNode 分片上

與MyCat的類似分片演算法對比

中介軟體

DBLE

MyCat

分片演算法種類 date 分割槽演算法 按日期(天)分片

兩種中介軟體的取模範圍分片演算法使用上無差別

開發注意點

【分片索引】1。 必須是字串,而且 java。text。SimpleDateFormat 能基於使用者指定的 dateFormat 來轉換成 java。util。Date

【分片索引】2。 提供帶狀模式和環狀模式兩種模式

【分片索引】3。 帶狀模式以 sBeginDate(含)起,以 86400000 毫秒(24 小時整)為一份,每 sPartionDay 份為一個分片,理論上分片數量可以無限增長,但是出現 sBeginDate 之前的資料而且沒有設定 defaultNode 的話,會路由失敗(如果有 defaultNode,則路由至 defaultNode)

【分片索引】4。 環狀模式以 86400000 毫秒(24 小時整)為一份,每 sPartionDay 份為一個分片,以 sBeginDate(含)到 sEndDate(含)的時間長度除以單個分片長度得到恆定的分片數量,但是出現 sBeginDate 之前的資料而且沒有設定 defaultNode 的話,會路由失敗(如果有 defaultNode,則路由至 defaultNode)

【分片索引】5。 無論哪種模式,分片索引欄位的格式化字串 dateFormat 由使用者指定

【分片索引】6。 無論哪種模式,劃分不是以日曆時間為準,無法對應自然月和自然年,且會受閏秒問題影響

運維注意點

【擴容】1。 帶狀模式中,隨著 sBeginDate 之後的資料出現,分片數量的增加無需再平衡

【擴容】2。 帶狀模式沒有自動增添分片的能力,需要運維手工提前增加分片;如果路由策略計算出的分片並不存在時,會導致失敗

【擴容】3。 環狀模式中,如果新舊 [sBeginDate,sEndDate] 之間有重疊,需要進行部分資料遷移;如果新舊 [sBeginDate,sEndDate] 之間沒有重疊,需要資料再平衡

配置注意點

【配置項】1。 在 rule。xml 中,可配置項為

【配置項】2。在 rule。xml 中配置 ,符合 java。text。SimpleDateFormat 規範的字串,用於告知 DBLE 如何解析sBeginDate和sEndDate

【配置項】3。在 rule。xml 中配置 ,必須是符合 dateFormat 的日期字串

【配置項】4。在 rule。xml 中配置 ,必須是符合 dateFormat 的日期字串;配置了該項使用的是環狀模式,若沒有配置該項則使用的是帶狀模式

【配置項】5。在 rule。xml 中配置 ,非負整數,該分片策略以 86400000 毫秒(24 小時整)作為一份,而 sPartionDay 告訴 DBLE 把每多少份放在同一個分片

【配置項】6。在 rule。xml 中配置 標籤,非必須配置項,不配置該項的話,使用者的分片索引值沒落在 mapFile 定義

mysql date函式怎麼用匿名使用者 2017-09-13

mysql date函式怎麼用

獲得當前日期+時間(date + time)函式:now()

除了 now() 函式能獲得當前的日期時間外,MySQL 中還有下面的函式:

current_timestamp() current_timestamp

localtime() localtime

localtimestamp() localtimestamp

這些日期時間函式,都等同於 now()。鑑於 now() 函式簡短易記,建議總是使用 now() 來替代上面列出的函式。