blob: b7aa3406a45ace32970b581cace0a967daa601d6 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[478],{877:function(a,t,r){"use strict";r.r(t);var e=r(29),s=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"背景"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#背景"}},[a._v("#")]),a._v(" 背景")]),a._v(" "),t("p",[a._v('存储组由用户显示指定,使用语句"SET STORAGE GROUP TO"来指定存储组,每一个存储组有一个对应的 StorageGroupProcessor')]),a._v(" "),t("p",[a._v("为了确保最终一致性,每一个存储组有一个数据插入锁(排它锁)来同步每一次插入操作。\n所以服务端数据写入的并行度为存储组的数量。")]),a._v(" "),t("h1",{attrs:{id:"问题"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#问题"}},[a._v("#")]),a._v(" 问题")]),a._v(" "),t("p",[a._v("从背景中可知,IoTDB数据写入的并行度为 max(客户端数量,服务端数据写入的并行度),也就是max(客户端数量,存储组数量)")]),a._v(" "),t("p",[a._v("在生产实践中,存储组的概念往往与特定真实世界实体相关(例如工厂,地点,国家等)。\n因此存储组的数量可能会比较小,这会导致IoTDB写入并行度不足。即使我们开再多的客户端写入线程,也无法走出这种困境。")]),a._v(" "),t("h1",{attrs:{id:"解决方案"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#解决方案"}},[a._v("#")]),a._v(" 解决方案")]),a._v(" "),t("p",[a._v("我们的方案是将一个存储组下的设备分为若干个设备组(称为 data region),将同步粒度从存储组级别改为 data region 粒度。")]),a._v(" "),t("p",[a._v('更具体的,我们使用哈希将设备分到不同的 data region 下,例如:\n对于一个名为"root.sg.d"的设备(假设其存储组为"root.sg"),它属于的 data region 为"root.sg.[hash("root.sg.d") mod num_of_data_region]"')]),a._v(" "),t("h1",{attrs:{id:"使用方法"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用方法"}},[a._v("#")]),a._v(" 使用方法")]),a._v(" "),t("p",[a._v("通过改变如下配置来设置每一个存储组下 data region 的数量:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("data_region_num\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("推荐值为[data region number] = [CPU core number] / [user-defined storage group number]")]),a._v(" "),t("p",[a._v("参考"),t("RouterLink",{attrs:{to:"/zh/UserGuide/Master/Reference/Config-Manual.html"}},[a._v("配置手册")]),a._v("以获取更多信息。")],1)])}),[],!1,null,null,null);t.default=s.exports}}]);