You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2019/08/01 14:47:23 UTC

[incubator-doris-website] branch asf-site updated: update load docs

This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-doris-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 1d1da70  update load docs
1d1da70 is described below

commit 1d1da703b5842369b3837f38a3539cd9ff16fd36
Author: morningman <mo...@163.com>
AuthorDate: Thu Aug 1 22:47:01 2019 +0800

    update load docs
---
 .../cn/administrator-guide/http-actions/index.html |   4 +-
 .../load-data/broker-load-manual.html              | 416 ++++++++++++++++--
 .../cn/administrator-guide/load-data/index.html    |  51 ++-
 .../load-data/insert-into-manual.html              | 366 ++++++++++++++++
 .../administrator-guide/load-data/load-manual.html | 394 +++++++++++++++++
 .../load-data/routine-load-manual.html             |  61 +--
 .../load-data/stream-load-manual.html              | 476 +++++++++++++++++++++
 .../operation/tablet-repair-and-balance.html       |   3 +
 content/Docs/cn/administrator-guide/privilege.html |  77 +++-
 .../Docs/cn/getting-started/hit-the-rollup.html    |   4 +-
 .../date-time-functions/current_timestamp.html     |   1 +
 .../date-time-functions/date_add.html              |   1 +
 .../date-time-functions/date_format.html           |   1 +
 .../date-time-functions/date_sub.html              |   1 +
 .../date-time-functions/datediff.html              |   3 +-
 .../sql-functions/date-time-functions/day.html     |   1 +
 .../sql-functions/date-time-functions/dayname.html |   1 +
 .../date-time-functions/dayofmonth.html            |   1 +
 .../date-time-functions/dayofweek.html             |   1 +
 .../date-time-functions/dayofyear.html             |   1 +
 .../date-time-functions/from_days.html             |   1 +
 .../date-time-functions/from_unixtime.html         |   1 +
 .../sql-functions/date-time-functions/index.html   |   7 +
 .../sql-functions/date-time-functions/month.html   |   1 +
 .../date-time-functions/monthname.html             |   1 +
 .../sql-functions/date-time-functions/now.html     |   1 +
 .../date-time-functions/str_to_date.html           |   5 +-
 .../{datediff.html => timediff.html}               |  69 +--
 .../sql-functions/date-time-functions/to_days.html |   5 +-
 .../date-time-functions/unix_timestamp.html        |   1 +
 .../date-time-functions/utc_timestamp.html         |   1 +
 .../date-time-functions/workofyear.html            |   1 +
 .../sql-functions/date-time-functions/year.html    |   1 +
 .../sql-functions/string-functions/split_part.html |  10 +-
 .../cn/sql-reference/sql-statements/index.html     |   1 -
 .../cn/sql-reference/sql-statements/insert.html    |   9 -
 .../load-data/broker-load-manual.md.txt            | 458 ++++++++++++++++++--
 .../cn/administrator-guide/load-data/index.rst.txt |   7 +-
 .../load-data/insert-into-manual.md.txt            | 137 ++++++
 .../load-data/load-manual.md.txt                   | 171 ++++++++
 .../load-data/routine-load-manual.md.txt           |   2 +-
 .../load-data/stream-load-manual.md.txt            | 262 ++++++++++++
 .../operation/tablet-repair-and-balance.md.txt     |   9 +
 .../Docs/cn/administrator-guide/privilege.md.txt   |  72 +++-
 .../Docs/cn/getting-started/hit-the-rollup.md.txt  |   4 +-
 .../date-time-functions/datediff.md.txt            |   4 +-
 .../date-time-functions/timediff.md.txt            |  45 ++
 .../string-functions/split_part.md.txt             |  10 +-
 .../cn/sql-reference/sql-statements/insert.md.txt  |  12 -
 content/objects.inv                                | Bin 2761 -> 2829 bytes
 content/searchindex.js                             |   2 +-
 51 files changed, 2989 insertions(+), 185 deletions(-)

diff --git a/content/Docs/cn/administrator-guide/http-actions/index.html b/content/Docs/cn/administrator-guide/http-actions/index.html
index 2211c46..58e14c4 100644
--- a/content/Docs/cn/administrator-guide/http-actions/index.html
+++ b/content/Docs/cn/administrator-guide/http-actions/index.html
@@ -36,7 +36,7 @@
     <link rel="index" title="Index" href="../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../search.html" />
     <link rel="next" title="get_log_file" href="fe-get-log-file.html" />
-    <link rel="prev" title="例行导入" href="../load-data/routine-load-manual.html" /> 
+    <link rel="prev" title="Insert Into" href="../load-data/insert-into-manual.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -191,7 +191,7 @@
         <a href="fe-get-log-file.html" class="btn btn-neutral float-right" title="get_log_file" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="../load-data/routine-load-manual.html" class="btn btn-neutral float-left" title="例行导入" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="../load-data/insert-into-manual.html" class="btn btn-neutral float-left" title="Insert Into" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/content/Docs/cn/administrator-guide/load-data/broker-load-manual.html b/content/Docs/cn/administrator-guide/load-data/broker-load-manual.html
index 0c1fbe1..656d4fc 100644
--- a/content/Docs/cn/administrator-guide/load-data/broker-load-manual.html
+++ b/content/Docs/cn/administrator-guide/load-data/broker-load-manual.html
@@ -35,8 +35,8 @@
   <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../search.html" />
-    <link rel="next" title="例行导入" href="routine-load-manual.html" />
-    <link rel="prev" title="数据导入" href="index.html" /> 
+    <link rel="next" title="Stream load" href="stream-load-manual.html" />
+    <link rel="prev" title="导入总览" href="load-manual.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -89,11 +89,20 @@
 <li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">开始使用</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="../index.html">操作手册</a><ul class="current">
 <li class="toctree-l2 current"><a class="reference internal" href="index.html">数据导入</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="load-manual.html">导入总览</a></li>
 <li class="toctree-l3 current"><a class="current reference internal" href="#">Broker Load</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="#properties">properties</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id1">适用场景</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id2">名词解释</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id3">基本原理</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id4">基本操作</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id10">相关系统配置</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id11">最佳实践</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id15">常见问题</a></li>
 </ul>
 </li>
-<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">例行导入</a></li>
+<li class="toctree-l3"><a class="reference internal" href="stream-load-manual.html">Stream load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">Routine Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="insert-into-manual.html">Insert Into</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../http-actions/index.html">HTTP API</a></li>
@@ -179,26 +188,186 @@
             
   <div class="section" id="broker-load">
 <h1>Broker Load<a class="headerlink" href="#broker-load" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="properties">
-<h2>properties<a class="headerlink" href="#properties" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="strict-mode">
-<h3>strict mode<a class="headerlink" href="#strict-mode" title="Permalink to this headline">¶</a></h3>
-<p>broker load导入可以开启strict mode模式。开启方式为 <code class="docutils literal notranslate"><span class="pre">properties</span> <span class="pre">(&quot;strict_mode&quot;</span> <span class="pre">=</span> <span class="pre">&quot;true&quot;)</span></code> 。默认的 strict mode为开启。</p>
-<p><em>注意:strict mode 功能仅在新版本的broker load中有效,如果导入明确指定 <code class="docutils literal notranslate"><span class="pre">&quot;version&quot;</span> <span class="pre">=</span> <span class="pre">&quot;v1&quot;</span></code> 则没有此功能。</em></p>
-<p>strict mode模式的意思是:对于导入过程中的列类型转换进行严格过滤。严格过滤的策略如下:</p>
+<p>Broker load 是一个异步的导入方式,支持的数据源取决于 Broker 进程支持的数据源。</p>
+<p>用户需要通过 MySQL 协议 创建 Broker load 导入,并通过查看导入命令检查导入结果。</p>
+<div class="section" id="id1">
+<h2>适用场景<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>源数据在 Broker 可以访问的存储系统中,如 HDFS。</li>
+<li>数据量在 几十到百GB 级别。</li>
+</ul>
+</div>
+<div class="section" id="id2">
+<h2>名词解释<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
 <ol class="simple">
-<li>对于列类型转换来说,如果 strict_mode 为true,则错误的数据将被filter。这里的错误数据是指:原始数据并不为空值,在参与列类型转换后结果为空值的这一类数据。</li>
-<li>对于导入的某列包含函数变换的,导入的值和函数的结果一致,strict 对其不产生影响。(其中 strftime 等 broker 系统支持的函数也属于这类)。</li>
-<li>对于导入的某列类型包含范围限制的,如果原始数据能正常通过类型转换,但无法通过范围限制的,strict 对其也不产生影响。<ul>
-<li>例如:如果类型是 decimal(1,0), 原始数据为10,则属于可以通过类型转换但不在列声明的范围内。这种数据 strict 对其不产生影响。</li>
+<li>Frontend(FE):Doris 系统的元数据和调度节点。在导入流程中主要负责导入 plan 生成和导入任务的调度工作。</li>
+<li>Backend(BE):Doris 系统的计算和存储节点。在导入流程中主要负责数据的 ETL 和存储。</li>
+<li>Broker:Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力。</li>
+<li>Plan:导入执行计划,BE 会执行导入执行计划将数据导入到 Doris 系统中。</li>
+</ol>
+</div>
+<div class="section" id="id3">
+<h2>基本原理<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<p>用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。</p>
+<p>BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>                 <span class="o">+</span>
+                 <span class="o">|</span> <span class="mf">1.</span> <span class="n">user</span> <span class="n">create</span> <span class="n">broker</span> <span class="n">load</span>
+                 <span class="n">v</span>
+            <span class="o">+----+----+</span>
+            <span class="o">|</span>         <span class="o">|</span>
+            <span class="o">|</span>   <span class="n">FE</span>    <span class="o">|</span>
+            <span class="o">|</span>         <span class="o">|</span>
+            <span class="o">+----+----+</span>
+                 <span class="o">|</span>
+                 <span class="o">|</span> <span class="mf">2.</span> <span class="n">BE</span> <span class="n">etl</span> <span class="ow">and</span> <span class="n">load</span> <span class="n">the</span> <span class="n">data</span>
+    <span class="o">+--------------------------+</span>
+    <span class="o">|</span>            <span class="o">|</span>             <span class="o">|</span>
+<span class="o">+---</span><span class="n">v</span><span class="o">---+</span>     <span class="o">+--</span><span class="n">v</span><span class="o">----+</span>    <span class="o">+---</span><span class="n">v</span><span class="o">---+</span>
+<span class="o">|</span>       <span class="o">|</span>     <span class="o">|</span>       <span class="o">|</span>    <span class="o">|</span>       <span class="o">|</span>
+<span class="o">|</span>  <span class="n">BE</span>   <span class="o">|</span>     <span class="o">|</span>  <span class="n">BE</span>   <span class="o">|</span>    <span class="o">|</span>   <span class="n">BE</span>  <span class="o">|</span>
+<span class="o">|</span>       <span class="o">|</span>     <span class="o">|</span>       <span class="o">|</span>    <span class="o">|</span>       <span class="o">|</span>
+<span class="o">+---+-^-+</span>     <span class="o">+---+-^-+</span>    <span class="o">+--+-^--+</span>
+    <span class="o">|</span> <span class="o">|</span>           <span class="o">|</span> <span class="o">|</span>         <span class="o">|</span> <span class="o">|</span>
+    <span class="o">|</span> <span class="o">|</span>           <span class="o">|</span> <span class="o">|</span>         <span class="o">|</span> <span class="o">|</span> <span class="mf">3.</span> <span class="n">pull</span> <span class="n">data</span> <span class="kn">from</span> <span class="nn">broker</span>
+<span class="o">+---</span><span class="n">v</span><span class="o">-+-+</span>     <span class="o">+---</span><span class="n">v</span><span class="o">-+-+</span>    <span class="o">+--</span><span class="n">v</span><span class="o">-+--+</span>
+<span class="o">|</span>       <span class="o">|</span>     <span class="o">|</span>       <span class="o">|</span>    <span class="o">|</span>       <span class="o">|</span>
+<span class="o">|</span><span class="n">Broker</span> <span class="o">|</span>     <span class="o">|</span><span class="n">Broker</span> <span class="o">|</span>    <span class="o">|</span><span class="n">Broker</span> <span class="o">|</span>
+<span class="o">|</span>       <span class="o">|</span>     <span class="o">|</span>       <span class="o">|</span>    <span class="o">|</span>       <span class="o">|</span>
+<span class="o">+---+-^-+</span>     <span class="o">+---+-^-+</span>    <span class="o">+---+-^-+</span>
+    <span class="o">|</span> <span class="o">|</span>           <span class="o">|</span> <span class="o">|</span>          <span class="o">|</span> <span class="o">|</span>
+<span class="o">+---</span><span class="n">v</span><span class="o">-+-----------</span><span class="n">v</span><span class="o">-+----------</span><span class="n">v</span><span class="o">-+-+</span>
+<span class="o">|</span>       <span class="n">HDFS</span><span class="o">/</span><span class="n">BOS</span><span class="o">/</span><span class="n">AFS</span> <span class="n">cluster</span>       <span class="o">|</span>
+<span class="o">|</span>                                  <span class="o">|</span>
+<span class="o">+----------------------------------+</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="id4">
+<h2>基本操作<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id5">
+<h3>创建导入<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
+<p>Broker load 创建导入语句</p>
+<p>语法:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">LOAD</span> <span class="n">LABEL</span> <span class="n">db_name</span><span class="o">.</span><span class="n">label_name</span> 
+<span class="p">(</span><span class="n">data_desc</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+<span class="n">WITH</span> <span class="n">BROKER</span> <span class="n">broker_name</span> <span class="n">broker_properties</span>
+<span class="p">[</span><span class="n">PROPERTIES</span> <span class="p">(</span><span class="n">key1</span><span class="o">=</span><span class="n">value1</span><span class="p">,</span> <span class="o">...</span> <span class="p">)]</span>
+
+<span class="o">*</span> <span class="n">data_desc</span><span class="p">:</span>
+
+    <span class="n">DATA</span> <span class="n">INFILE</span> <span class="p">(</span><span class="s1">&#39;file_path&#39;</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+    <span class="p">[</span><span class="n">NEGATIVE</span><span class="p">]</span>
+    <span class="n">INTO</span> <span class="n">TABLE</span> <span class="n">tbl_name</span>
+    <span class="p">[</span><span class="n">PARTITION</span> <span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)]</span>
+    <span class="p">[</span><span class="n">COLUMNS</span> <span class="n">TERMINATED</span> <span class="n">BY</span> <span class="n">separator</span> <span class="p">]</span>
+    <span class="p">[(</span><span class="n">col1</span><span class="p">,</span> <span class="o">...</span><span class="p">)]</span>
+    <span class="p">[</span><span class="n">SET</span> <span class="p">(</span><span class="n">k1</span><span class="o">=</span><span class="n">f1</span><span class="p">(</span><span class="n">xx</span><span class="p">),</span> <span class="n">k2</span><span class="o">=</span><span class="n">f2</span><span class="p">(</span><span class="n">xx</span><span class="p">))]</span>
+
+<span class="o">*</span> <span class="n">broker_properties</span><span class="p">:</span> 
+
+    <span class="p">(</span><span class="n">key1</span><span class="o">=</span><span class="n">value1</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>示例:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">LOAD</span> <span class="n">LABEL</span> <span class="n">db1</span><span class="o">.</span><span class="n">label1</span>
+<span class="p">(</span>
+    <span class="n">DATA</span> <span class="n">INFILE</span><span class="p">(</span><span class="s2">&quot;hdfs://abc.com:8888/user/palo/test/ml/file1&quot;</span><span class="p">)</span>
+    <span class="n">INTO</span> <span class="n">TABLE</span> <span class="n">tbl1</span>
+    <span class="n">COLUMNS</span> <span class="n">TERMINATED</span> <span class="n">BY</span> <span class="s2">&quot;,&quot;</span>
+    <span class="p">(</span><span class="n">tmp_c1</span><span class="p">,</span><span class="n">tmp_c2</span><span class="p">)</span>
+    <span class="n">SET</span>
+    <span class="p">(</span>
+        <span class="nb">id</span><span class="o">=</span><span class="n">tmp_c2</span><span class="p">,</span>
+        <span class="n">name</span><span class="o">=</span><span class="n">tmp_c1</span><span class="p">)</span>
+    <span class="p">),</span>
+    <span class="n">DATA</span> <span class="n">INFILE</span><span class="p">(</span><span class="s2">&quot;hdfs://abc.com:8888/user/palo/test/ml/file2&quot;</span><span class="p">)</span>
+    <span class="n">INTO</span> <span class="n">TABLE</span> <span class="n">tbl2</span>
+    <span class="n">COLUMNS</span> <span class="n">TERMINATED</span> <span class="n">BY</span> <span class="s2">&quot;,&quot;</span>
+    <span class="p">(</span><span class="n">col1</span><span class="p">,</span> <span class="n">col2</span><span class="p">)</span>
+<span class="p">)</span>
+<span class="n">WITH</span> <span class="n">BROKER</span> <span class="s1">&#39;broker&#39;</span>
+<span class="p">(</span>
+    <span class="s2">&quot;username&quot;</span><span class="o">=</span><span class="s2">&quot;user&quot;</span><span class="p">,</span>
+    <span class="s2">&quot;password&quot;</span><span class="o">=</span><span class="s2">&quot;pass&quot;</span>
+<span class="p">)</span>
+<span class="n">PROPERTIES</span>
+<span class="p">(</span>
+    <span class="s2">&quot;timeout&quot;</span> <span class="o">=</span> <span class="s2">&quot;3600&quot;</span>
+<span class="p">);</span>
+</pre></div>
+</div>
+<p>创建导入的详细语法执行 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">BROKER</span> <span class="pre">LOAD</span></code> 查看语法帮助。这里主要介绍 Broker load 的创建导入语法中参数意义和注意事项。</p>
+<div class="section" id="label">
+<h4>Label<a class="headerlink" href="#label" title="Permalink to this headline">¶</a></h4>
+<p>导入任务的标识。每个导入任务,都有一个在单 database 内部唯一的 Label。Label 是用户在导入命令中自定义的名称。通过这个 Label,用户可以查看对应导入任务的执行情况。</p>
+<p>Label 的另一个作用,是防止用户重复导入相同的数据。<strong>强烈推荐用户同一批次数据使用相同的label。这样同一批次数据的重复请求只会被接受一次,保证了 At-Most-Once 语义</strong></p>
+<p>当 Label 对应的导入作业状态为 CANCELLED 时,可以再次使用该 Label 提交导入作业。</p>
+</div>
+<div class="section" id="id6">
+<h4>数据描述类参数<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h4>
+<p>数据描述类参数主要指的是 Broker load 创建导入语句中的属于 <code class="docutils literal notranslate"><span class="pre">data_desc</span></code> 部分的参数。每组 <code class="docutils literal notranslate"><span class="pre">data_desc</span> </code> 主要表述了本次导入涉及到的数据源地址,ETL 函数,目标表及分区等信息。</p>
+<p>下面主要对数据描述类的部分参数详细解释:</p>
+<ul>
+<li><p class="first">多表导入</p>
+<p>Broker load 支持一次导入任务涉及多张表,每个 Broker load 导入任务可在多个 <code class="docutils literal notranslate"><span class="pre">data_desc</span></code> 声明多张表来实现多表导入。每个单独的 <code class="docutils literal notranslate"><span class="pre">data_desc</span></code> 还可以指定属于该表的数据源地址。Broker load 保证了单次导入的多张表之间原子性成功或失败。</p>
+</li>
+<li><p class="first">negative</p>
+<p><code class="docutils literal notranslate"><span class="pre">data_desc</span></code>中还可以设置数据取反导入。这个功能主要用于,当数据表中聚合列的类型都为 SUM 类型时。如果希望撤销某一批导入的数据。则可以通过 <code class="docutils literal notranslate"><span class="pre">negative</span></code> 参数当如同一批数据。Doris 会自动为这一批数据在聚合列上数据取反,以达到消除同一批数据的功能。</p>
+</li>
+<li><p class="first">partition</p>
+<p>在 <code class="docutils literal notranslate"><span class="pre">data_desc</span></code> 中可以指定待导入表的 partition 信息,如果待导入数据不属于指定的 partition 则不会被导入。同时,不在指定 Partition 的数据会被认为是错误数据。</p>
+</li>
 </ul>
+</div>
+<div class="section" id="id7">
+<h4>导入作业参数<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h4>
+<p>导入作业参数主要指的是 Broker load 创建导入语句中的属于 <code class="docutils literal notranslate"><span class="pre">opt_properties</span></code>部分的参数。导入作业参数是作用于整个导入作业的。</p>
+<p>下面主要对导入作业参数的部分参数详细解释:</p>
+<ul>
+<li><p class="first">timeout</p>
+<p>导入作业的超时时间(以秒为单位),用户可以在 <code class="docutils literal notranslate"><span class="pre">opt_properties</span></code> 中自行设置每个导入的超时时间。导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。Broker load 的默认导入超时时间为4小时。</p>
+<p>通常情况下,用户不需要手动设置导入任务的超时时间。当在默认超时时间内无法完成导入时,可以手动设置任务的超时时间。</p>
+<blockquote>
+<div><p>推荐超时时间</p>
+<p>总文件大小(MB) / 用户 Doris 集群最慢导入速度(MB/s)  &gt; timeout &gt; ((总文件大小(MB) * 待导入的表及相关 Roll up 表的个数) / (10 * 导入并发数) )</p>
+</div></blockquote>
+<blockquote>
+<div><p>导入并发数见文档最后的导入系统配置说明,公式中的 10 为目前的导入限速 10MB/s。</p>
+</div></blockquote>
+<blockquote>
+<div><p>例如一个 1G 的待导入数据,待导入表包含3个 Rollup 表,当前的导入并发数为 3。则 timeout 的 最小值为 <code class="docutils literal notranslate"><span class="pre">(1</span> <span class="pre">*</span> <span class="pre">1024</span> <span class="pre">*</span> <span class="pre">3</span> <span class="pre">)</span> <span class="pre">/</span> <span class="pre">(10</span> <span class="pre">*</span> <span class="pre">3)</span> <span class="pre">=</span> <span class="pre">102</span> <span class="pre">秒</span></code></p>
+</div></blockquote>
+<p>由于每个 Doris 集群的机器环境不同且集群并发的查询任务也不同,所以用户 Doris 集群的最慢导入速度需要用户自己根据历史的导入任务速度进行推测。</p>
 </li>
+<li><p class="first">max_filter_ratio</p>
+<p>导入任务的最大容忍率,默认为0容忍,取值范围是0~1。当导入的错误率超过该值,则导入失败。</p>
+<p>如果用户希望忽略错误的行,可以通过设置这个参数大于 0,来保证导入可以成功。</p>
+<p>计算公式为:</p>
+<p><code class="docutils literal notranslate"><span class="pre">(dpp.abnorm.ALL</span> <span class="pre">/</span> <span class="pre">(dpp.abnorm.ALL</span> <span class="pre">+</span> <span class="pre">dpp.norm.ALL</span> <span class="pre">)</span> <span class="pre">)</span> <span class="pre">&gt;</span> <span class="pre">max_filter_ratio</span></code></p>
+<p><code class="docutils literal notranslate"><span class="pre">dpp.abnorm.ALL</span></code> 表示数据质量不合格的行数。如类型不匹配,列数不匹配,长度不匹配等等。</p>
+<p><code class="docutils literal notranslate"><span class="pre">dpp.norm.ALL</span></code> 指的是导入过程中正确数据的条数。可以通过 <code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">LOAD</span></code> 命令查询导入任务的正确数据量。</p>
+<p>原始文件的行数 = <code class="docutils literal notranslate"><span class="pre">dpp.abnorm.ALL</span> <span class="pre">+</span> <span class="pre">dpp.norm.ALL</span></code></p>
+</li>
+<li><p class="first">exec_mem_limit</p>
+<p>导入任务的内存使用上限。当导入任务使用的内存超过设定上限时,导入任务会被 CANCEL。默认为 2G,单位为字节。</p>
+<p>当导入出现 <code class="docutils literal notranslate"><span class="pre">Memory</span> <span class="pre">exceed</span> <span class="pre">limit</span></code> 错误时,可以适当调整这个参数,如调整为 4G、8G 等。</p>
+</li>
+<li><p class="first">strict_mode</p>
+<p>Broker load 导入可以开启 strict mode 模式。开启方式为 <code class="docutils literal notranslate"><span class="pre">properties</span> <span class="pre">(&quot;strict_mode&quot;</span> <span class="pre">=</span> <span class="pre">&quot;true&quot;)</span></code> 。默认的 strict mode 为开启。</p>
+<p>strict mode 模式的意思是:对于导入过程中的列类型转换进行严格过滤。严格过滤的策略如下:</p>
+<ol class="simple">
+<li>对于列类型转换来说,如果 strict mode 为true,则错误的数据将被 filter。这里的错误数据是指:原始数据并不为空值,在参与列类型转换后结果为空值的这一类数据。</li>
+<li>对于导入的某列由函数变换生成时,strict mode 对其不产生影响。</li>
+<li>对于导入的某列类型包含范围限制的,如果原始数据能正常通过类型转换,但无法通过范围限制的,strict mode 对其也不产生影响。例如:如果类型是 decimal(1,0), 原始数据为 10,则属于可以通过类型转换但不在列声明的范围内。这种数据 strict 对其不产生影响。</li>
 </ol>
+</li>
+</ul>
 </div>
 <div class="section" id="strict-mode-source-data">
-<h3>strict mode 与 source data 的导入关系<a class="headerlink" href="#strict-mode-source-data" title="Permalink to this headline">¶</a></h3>
+<h4>strict mode 与 source data 的导入关系<a class="headerlink" href="#strict-mode-source-data" title="Permalink to this headline">¶</a></h4>
 <p>这里以列类型为 TinyInt 来举例</p>
-<p>注:当表中的列允许导入空值时</p>
+<blockquote>
+<div>注:当表中的列允许导入空值时</div></blockquote>
 <table border="1" class="docutils">
 <thead>
 <tr>
@@ -206,7 +375,7 @@
 <th>source data example</th>
 <th>string to int</th>
 <th>strict_mode</th>
-<th>load_data</th>
+<th>result</th>
 </tr>
 </thead>
 <tbody>
@@ -222,7 +391,7 @@
 <td>aaa or 2000</td>
 <td>NULL</td>
 <td>true</td>
-<td>filtered</td>
+<td>invalid data(filtered)</td>
 </tr>
 <tr>
 <td>not null</td>
@@ -240,7 +409,8 @@
 </tr>
 </tbody>
 </table><p>这里以列类型为 Decimal(1,0) 举例</p>
-<p>注:当表中的列允许导入空值时</p>
+<blockquote>
+<div>注:当表中的列允许导入空值时</div></blockquote>
 <table border="1" class="docutils">
 <thead>
 <tr>
@@ -248,7 +418,7 @@
 <th>source data example</th>
 <th>string to int</th>
 <th>strict_mode</th>
-<th>load_data</th>
+<th>result</th>
 </tr>
 </thead>
 <tbody>
@@ -264,7 +434,7 @@
 <td>aaa</td>
 <td>NULL</td>
 <td>true</td>
-<td>filtered</td>
+<td>invalid data(filtered)</td>
 </tr>
 <tr>
 <td>not null</td>
@@ -281,8 +451,204 @@
 <td>correct data</td>
 </tr>
 </tbody>
-</table><p><em>注意:10 虽然是一个超过范围的值,但是因为其类型符合decimal的要求,所以strict mode对其不产生影响。10 最后会在其他 ETL 处理流程中被过滤。但不会被strict mode过滤。</em></p>
+</table><blockquote>
+<div>注意:10 虽然是一个超过范围的值,但是因为其类型符合 decimal的要求,所以 strict mode对其不产生影响。10 最后会在其他 ETL 处理流程中被过滤。但不会被 strict mode 过滤。</div></blockquote>
+</div>
+</div>
+<div class="section" id="id8">
+<h3>查看导入<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h3>
+<p>Broker load 导入方式由于是异步的,所以用户必须将创建导入的 Label 记录,并且在<strong>查看导入命令中使用 Label 来查看导入结果</strong>。查看导入命令在所有导入方式中是通用的,具体语法可执行 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">SHOW</span> <span class="pre">LOAD</span></code> 查看。</p>
+<p>示例:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>mysql&gt; show load order by createtime desc limit 1\G
+*************************** 1. row ***************************
+         JobId: 76391
+         Label: label1
+         State: FINISHED
+      Progress: ETL:N/A; LOAD:100%
+          Type: BROKER
+       EtlInfo: dpp.abnorm.ALL=15; dpp.norm.ALL=28133376
+      TaskInfo: cluster:N/A; timeout(s):10800; max_filter_ratio:5.0E-5
+      ErrorMsg: N/A
+    CreateTime: 2019-07-27 11:46:42
+  EtlStartTime: 2019-07-27 11:46:44
+ EtlFinishTime: 2019-07-27 11:46:44
+ LoadStartTime: 2019-07-27 11:46:44
+LoadFinishTime: 2019-07-27 11:50:16
+           URL: http://192.168.1.1:8040/api/_load_error_log?file=__shard_4/error_log_insert_stmt_4bb00753932c491a-a6da6e2725415317_4bb00753932c491a_a6da6e2725415317
+</pre></div>
+</div>
+<p>下面主要介绍了查看导入命令返回结果集中参数意义:</p>
+<ul>
+<li><p class="first">JobId</p>
+<p>导入任务的唯一ID,每个导入任务的 JobId 都不同,有系统自动生成。与 Label 不同的是,JobId永远不会相同,而 Label 则可以在导入任务失败后被复用。</p>
+</li>
+<li><p class="first">Label</p>
+<p>导入任务的标识。</p>
+</li>
+<li><p class="first">State</p>
+<p>导入任务当前所处的阶段。在 Broker load 导入过程中主要会出现 PENDING 和 LOADING 这两个导入中的状态。如果 Broker load 处于 PENDING 状态,则说明当前导入任务正在等待被执行;LOADING 状态则表示正在执行中。</p>
+<p>导入任务的最终阶段有两个:CANCELLED 和 FINISHED,当 Load job 处于这两个阶段时,导入完成。其中 CANCELLED 为导入失败,FINISHED 为导入成功。</p>
+</li>
+<li><p class="first">Progress</p>
+<p>导入任务的进度描述。分为两种进度:ETL 和 LOAD,对应了导入流程的两个阶段 ETL 和 LOADING。目前 Broker load 由于只有 LOADING 阶段,所以 ETL 则会永远显示为 <code class="docutils literal notranslate"><span class="pre">N/A</span></code></p>
+<p>LOAD 的进度范围为:0~100%。</p>
+<p><code class="docutils literal notranslate"><span class="pre">LOAD</span> <span class="pre">进度</span> <span class="pre">=</span> <span class="pre">当前完成导入的表个数</span> <span class="pre">/</span> <span class="pre">本次导入任务设计的总表个数</span> <span class="pre">*</span> <span class="pre">100%</span></code></p>
+<p><strong>如果所有导入表均完成导入,此时 LOAD 的进度为 99%</strong> 导入进入到最后生效阶段,整个导入完成后,LOAD 的进度才会改为 100%。</p>
+<p>导入进度并不是线性的。所以如果一段时间内进度没有变化,并不代表导入没有在执行。</p>
+</li>
+<li><p class="first">Type</p>
+<p>导入任务的类型。Broker load 的 type 取值只有 BROKER。</p>
+</li>
+<li><p class="first">EtlInfo</p>
+<p>主要显示了导入的数据量指标 <code class="docutils literal notranslate"><span class="pre">dpp.norm.ALL</span> <span class="pre">和</span> <span class="pre">dpp.abnorm.ALL</span></code>。用户可以根据这两个指标验证当前导入任务的错误率是否超过 max_filter_ratio。</p>
+</li>
+<li><p class="first">TaskInfo</p>
+<p>主要显示了当前导入任务参数,也就是创建 Broker load 导入任务时用户指定的导入任务参数,包括:<code class="docutils literal notranslate"><span class="pre">cluster</span></code>,<code class="docutils literal notranslate"><span class="pre">timeout</span></code> 和<code class="docutils literal notranslate"><span class="pre">max_filter_ratio</span></code>。</p>
+</li>
+<li><p class="first">ErrorMsg</p>
+<p>在导入任务状态为CANCELLED,会显示失败的原因,显示分两部分:type 和 msg,如果导入任务成功则显示 <code class="docutils literal notranslate"><span class="pre">N/A</span></code>。</p>
+<p>type的取值意义:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>USER_CANCEL: 用户取消的任务
+ETL_RUN_FAIL:在ETL阶段失败的导入任务
+ETL_QUALITY_UNSATISFIED:数据质量不合格,也就是错误数据率超过了 max_filter_ratio
+LOAD_RUN_FAIL:在LOADING阶段失败的导入任务
+TIMEOUT:导入任务没在超时时间内完成
+UNKNOWN:未知的导入错误
+</pre></div>
+</div>
+</li>
+<li><p class="first">CreateTime/EtlStartTime/EtlFinishTime/LoadStartTime/LoadFinishTime</p>
+<p>这几个值分别代表导入创建的时间,ETL阶段开始的时间,ETL阶段完成的时间,Loading阶段开始的时间和整个导入任务完成的时间。</p>
+<p>Broker load 导入由于没有 ETL 阶段,所以其 EtlStartTime, EtlFinishTime, LoadStartTime 被设置为同一个值。</p>
+<p>导入任务长时间停留在 CreateTime,而 LoadStartTime 为 N/A 则说明目前导入任务堆积严重。用户可减少导入提交的频率。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">LoadFinishTime</span> <span class="o">-</span> <span class="n">CreateTime</span> <span class="o">=</span> <span class="n">整个导入任务所消耗时间</span>
+<span class="n">LoadFinishTime</span> <span class="o">-</span> <span class="n">LoadStartTime</span> <span class="o">=</span> <span class="n">整个</span> <span class="n">Broker</span> <span class="n">load</span> <span class="n">导入任务执行时间</span> <span class="o">=</span> <span class="n">整个导入任务所消耗时间</span> <span class="o">-</span> <span class="n">导入任务等待的时间</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">URL</p>
+<p>导入任务的错误数据样例,访问 URL 地址既可获取本次导入的错误数据样例。当本次导入不存在错误数据时,URL 字段则为 N/A。</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h3>取消导入<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h3>
+<p>当 Broker load 作业状态不为 CANCELLED 或 FINISHED 时,可以被用户手动取消。取消时需要指定待取消导入任务的 Label 。取消导入命令语法可执行 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">CANCEL</span> <span class="pre">LOAD</span></code>查看。</p>
+</div>
+</div>
+<div class="section" id="id10">
+<h2>相关系统配置<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="fe">
+<h3>FE 配置<a class="headerlink" href="#fe" title="Permalink to this headline">¶</a></h3>
+<p>下面几个配置属于 Broker load 的系统级别配置,也就是作用于所有 Broker load 导入任务的配置。主要通过修改 <code class="docutils literal notranslate"> <span class="pre">fe.conf</span></code>来调整配置值。</p>
+<ul>
+<li><p class="first">min_bytes_per_broker_scanner/max_bytes_per_broker_scanner/max_broker_concurrency</p>
+<p>前两个配置限制了单个 BE 处理的数据量的最小和最大值。第三个配置限制了一个作业的最大的导入并发数。最小处理的数据量,最大并发数,源文件的大小和当前集群 BE 的个数 <strong>共同决定了本次导入的并发数</strong>。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>本次导入并发数 = Math.min(源文件大小/最小处理量,最大并发数,当前BE节点个数)
+本次导入单个BE的处理量 = 源文件大小/本次导入的并发数
+</pre></div>
+</div>
+<p>通常一个导入作业支持的最大数据量为 <code class="docutils literal notranslate"><span class="pre">max_bytes_per_broker_scanner</span> <span class="pre">*</span> <span class="pre">BE</span> <span class="pre">节点数</span></code>。如果需要导入更大数据量,则需要适当调整 <code class="docutils literal notranslate"><span class="pre">max_bytes_per_broker_scanner</span></code> 参数的大小。</p>
+<p>默认配置:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>参数名:min_bytes_per_broker_scanner, 默认 64MB,单位bytes。
+参数名:max_broker_concurrency, 默认 10。
+参数名:max_bytes_per_broker_scanner,默认 3G,单位bytes。
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id11">
+<h2>最佳实践<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id12">
+<h3>应用场景<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h3>
+<p>使用 Broker load 最适合的场景就是原始数据在文件系统(HDFS,BOS,AFS)中的场景。其次,由于 Broker load 是单次导入中唯一的一种异步导入的方式,所以如果用户在导入大文件中,需要使用异步接入,也可以考虑使用 Broker load。</p>
+</div>
+<div class="section" id="id13">
+<h3>数据量<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h3>
+<p>这里仅讨论单个 BE 的情况,如果用户集群有多个 BE 则下面标题中的数据量应该乘以 BE 个数来计算。比如:如果用户有3个 BE,则 3G 以下(包含)则应该乘以 3,也就是 9G 以下(包含)。</p>
+<ul>
+<li><p class="first">3G 以下(包含)</p>
+<p>用户可以直接提交 Broker load 创建导入请求。</p>
+</li>
+<li><p class="first">3G 以上</p>
+<p>由于单个导入 BE 最大的处理量为 3G,超过 3G 的待导入文件就需要通过调整 Broker load 的导入参数来实现大文件的导入。</p>
+<ol>
+<li><p class="first">根据当前 BE 的个数和原始文件的大小修改单个 BE 的最大扫描量和最大并发数。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>修改 fe.conf 中配置
+
+max_broker_concurrency = BE 个数
+当前导入任务单个 BE 处理的数据量 = 原始文件大小 / max_broker_concurrency
+max_bytes_per_broker_scanner &gt;= 当前导入任务单个 BE 处理的数据量
+
+比如一个 100G 的文件,集群的 BE 个数为 10 个
+max_broker_concurrency = 10
+max_bytes_per_broker_scanner &gt;= 10G = 100G / 10
+</pre></div>
+</div>
+<p>修改后,所有的 BE 会并发的处理导入任务,每个 BE 处理原始文件的一部分。</p>
+<p><em>注意:上述两个 FE 中的配置均为系统配置,也就是说其修改是作用于所有的 Broker load的任务的。</em></p>
+</li>
+<li><p class="first">在创建导入的时候自定义当前导入任务的 timeout 时间</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>当前导入任务单个 BE 处理的数据量 / 用户 Doris 集群最慢导入速度(MB/s) &gt;= 当前导入任务的 timeout 时间 &gt;= 当前导入任务单个 BE 处理的数据量 / 10M/s
+
+比如一个 100G 的文件,集群的 BE 个数为 10个
+timeout &gt;= 1000s = 10G / 10M/s
+</pre></div>
+</div>
+</li>
+<li><p class="first">当用户发现第二步计算出的 timeout 时间超过系统默认的导入最大超时时间 4小时</p>
+<p>这时候不推荐用户将导入最大超时时间直接改大来解决问题。单个导入时间如果超过默认的导入最大超时时间4小时,最好是通过切分待导入文件并且分多次导入来解决问题。主要原因是:单次导入超过4小时的话,导入失败后重试的时间成本很高。</p>
+<p>可以通过如下公式计算出 Doris 集群期望最大导入文件数据量:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>期望最大导入文件数据量 = 14400s * 10M/s * BE 个数
+比如:集群的 BE 个数为 10个
+期望最大导入文件数据量 = 14400 * 10M/s * 10 = 1440000M ≈ 1440G
+
+注意:一般用户的环境可能达不到 10M/s 的速度,所以建议超过 500G 的文件都进行文件切分,再导入。
+</pre></div>
 </div>
+</li>
+</ol>
+</li>
+</ul>
+</div>
+<div class="section" id="id14">
+<h3>完整例子<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h3>
+<p>数据情况:用户数据在 HDFS 中,文件地址为 hdfs://abc.com:8888/store_sales, hdfs 的认证用户名为 root, 密码为 password, 数据量大小约为 30G,希望导入到数据库 bj_sales 的表 store_sales 中。</p>
+<p>集群情况:集群的 BE 个数约为 3 个,Broker 名称均为 broker。</p>
+<ul>
+<li><p class="first">step1: 经过上述方法的计算,本次导入的单个 BE 导入量为 10G,则需要先修改 FE 的配置,将单个 BE 导入最大量修改为:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">max_bytes_per_broker_scanner</span> <span class="o">=</span> <span class="mi">10737418240</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">step2: 经计算,本次导入的时间大约为 1000s,并未超过默认超时时间,可不配置导入自定义超时时间。</p>
+</li>
+<li><p class="first">step3:创建导入语句</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">LOAD</span> <span class="n">LABEL</span> <span class="n">bj_sales</span><span class="o">.</span><span class="n">store_sales_broker_load_01</span>
+<span class="p">(</span>
+    <span class="n">DATA</span> <span class="n">INFILE</span><span class="p">(</span><span class="s2">&quot;hdfs://abc.com:8888/store_sales&quot;</span><span class="p">)</span>
+    <span class="n">INTO</span> <span class="n">TABLE</span> <span class="n">store_sales</span>
+<span class="p">)</span>
+<span class="n">WITH</span> <span class="n">BROKER</span> <span class="s1">&#39;broker&#39;</span>
+<span class="p">(</span><span class="s2">&quot;username&quot;</span><span class="o">=</span><span class="s2">&quot;root&quot;</span><span class="p">,</span> <span class="s2">&quot;password&quot;</span><span class="o">=</span><span class="s2">&quot;password&quot;</span><span class="p">);</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id15">
+<h2>常见问题<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">导入报错:<code class="docutils literal notranslate"><span class="pre">Scan</span> <span class="pre">bytes</span> <span class="pre">per</span> <span class="pre">broker</span> <span class="pre">scanner</span> <span class="pre">exceed</span> <span class="pre">limit:xxx</span></code></p>
+<p>请参照文档中最佳实践部分,修改 FE 配置项 <code class="docutils literal notranslate"><span class="pre">max_bytes_per_broker_scanner</span></code> 和 <code class="docutils literal notranslate"><span class="pre">max_broker_concurrency</span></code></p>
+</li>
+<li><p class="first">导入报错:<code class="docutils literal notranslate"><span class="pre">failed</span> <span class="pre">to</span> <span class="pre">send</span> <span class="pre">batch</span></code> 或 <code class="docutils literal notranslate"><span class="pre">TabletWriter</span> <span class="pre">add</span> <span class="pre">batch</span> <span class="pre">with</span> <span class="pre">unknown</span> <span class="pre">id</span></code></p>
+<p>请参照 <a class="reference internal" href="load-manual.html"><span class="doc">导入手册</span></a> 中 <strong>通用系统配置</strong> 中 <strong>BE 配置</strong>,适当修改 <code class="docutils literal notranslate"><span class="pre">tablet_writer_rpc_timeout_sec</span></code> 和 <code class="docutils literal notranslate"><span class="pre">streaming_load_rpc_max_alive_time_sec</span></code>。</p>
+</li>
+</ul>
 </div>
 </div>
 
@@ -294,10 +660,10 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="routine-load-manual.html" class="btn btn-neutral float-right" title="例行导入" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="stream-load-manual.html" class="btn btn-neutral float-right" title="Stream load" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="index.html" class="btn btn-neutral float-left" title="数据导入" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="load-manual.html" class="btn btn-neutral float-left" title="导入总览" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/content/Docs/cn/administrator-guide/load-data/index.html b/content/Docs/cn/administrator-guide/load-data/index.html
index 8322623..f7e1f40 100644
--- a/content/Docs/cn/administrator-guide/load-data/index.html
+++ b/content/Docs/cn/administrator-guide/load-data/index.html
@@ -35,7 +35,7 @@
   <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../search.html" />
-    <link rel="next" title="Broker Load" href="broker-load-manual.html" />
+    <link rel="next" title="导入总览" href="load-manual.html" />
     <link rel="prev" title="操作手册" href="../index.html" /> 
 </head>
 
@@ -89,8 +89,11 @@
 <li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">开始使用</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="../index.html">操作手册</a><ul class="current">
 <li class="toctree-l2 current"><a class="current reference internal" href="#">数据导入</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="load-manual.html">导入总览</a></li>
 <li class="toctree-l3"><a class="reference internal" href="broker-load-manual.html">Broker Load</a></li>
-<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">例行导入</a></li>
+<li class="toctree-l3"><a class="reference internal" href="stream-load-manual.html">Stream load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">Routine Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="insert-into-manual.html">Insert Into</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../http-actions/index.html">HTTP API</a></li>
@@ -176,16 +179,46 @@
 <h1>数据导入<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h1>
 <div class="toctree-wrapper compound">
 <ul>
+<li class="toctree-l1"><a class="reference internal" href="load-manual.html">导入总览</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="load-manual.html#id2">基本概念</a></li>
+<li class="toctree-l2"><a class="reference internal" href="load-manual.html#id3">导入方式</a></li>
+<li class="toctree-l2"><a class="reference internal" href="load-manual.html#id4">基本原理</a></li>
+<li class="toctree-l2"><a class="reference internal" href="load-manual.html#id6">同步和异步</a></li>
+<li class="toctree-l2"><a class="reference internal" href="load-manual.html#id10">最佳实践</a></li>
+<li class="toctree-l2"><a class="reference internal" href="load-manual.html#id11">通用系统配置</a></li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="broker-load-manual.html">Broker Load</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#properties">properties</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id1">适用场景</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id2">名词解释</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id3">基本原理</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id4">基本操作</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id10">相关系统配置</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id11">最佳实践</a></li>
+<li class="toctree-l2"><a class="reference internal" href="broker-load-manual.html#id15">常见问题</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="stream-load-manual.html">Stream load</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="stream-load-manual.html#id1">基本原理</a></li>
+<li class="toctree-l2"><a class="reference internal" href="stream-load-manual.html#id2">基本操作</a></li>
+<li class="toctree-l2"><a class="reference internal" href="stream-load-manual.html#id8">相关系统配置</a></li>
+<li class="toctree-l2"><a class="reference internal" href="stream-load-manual.html#id9">最佳实践</a></li>
+<li class="toctree-l2"><a class="reference internal" href="stream-load-manual.html#id13">常见问题</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="routine-load-manual.html">例行导入</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id2">名词解释</a></li>
-<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id3">原理</a></li>
+<li class="toctree-l1"><a class="reference internal" href="routine-load-manual.html">Routine Load</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id1">名词解释</a></li>
+<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id2">原理</a></li>
 <li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#kafka">Kafka 例行导入</a></li>
-<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id8">其他说明</a></li>
-<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id9">相关参数</a></li>
+<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id7">其他说明</a></li>
+<li class="toctree-l2"><a class="reference internal" href="routine-load-manual.html#id8">相关参数</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="insert-into-manual.html">Insert Into</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="insert-into-manual.html#id1">基本操作</a></li>
+<li class="toctree-l2"><a class="reference internal" href="insert-into-manual.html#id4">相关系统配置</a></li>
+<li class="toctree-l2"><a class="reference internal" href="insert-into-manual.html#id5">最佳实践</a></li>
+<li class="toctree-l2"><a class="reference internal" href="insert-into-manual.html#id9">常见问题</a></li>
 </ul>
 </li>
 </ul>
@@ -200,7 +233,7 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="broker-load-manual.html" class="btn btn-neutral float-right" title="Broker Load" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="load-manual.html" class="btn btn-neutral float-right" title="导入总览" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="../index.html" class="btn btn-neutral float-left" title="操作手册" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/content/Docs/cn/administrator-guide/load-data/insert-into-manual.html b/content/Docs/cn/administrator-guide/load-data/insert-into-manual.html
new file mode 100644
index 0000000..9e0a198
--- /dev/null
+++ b/content/Docs/cn/administrator-guide/load-data/insert-into-manual.html
@@ -0,0 +1,366 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Insert Into &mdash; Doris Documentations 0.11.0 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../../../../_static/jquery.js"></script>
+        <script type="text/javascript" src="../../../../_static/underscore.js"></script>
+        <script type="text/javascript" src="../../../../_static/doctools.js"></script>
+        <script type="text/javascript" src="../../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../../search.html" />
+    <link rel="next" title="HTTP API" href="../http-actions/index.html" />
+    <link rel="prev" title="Routine Load" href="routine-load-manual.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../../index.html" class="icon icon-home"> Doris Documentations
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.11.0
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../installing/index.html">编译与部署</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">开始使用</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">操作手册</a><ul class="current">
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">数据导入</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="load-manual.html">导入总览</a></li>
+<li class="toctree-l3"><a class="reference internal" href="broker-load-manual.html">Broker Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="stream-load-manual.html">Stream load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">Routine Load</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Insert Into</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#id1">基本操作</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id4">相关系统配置</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id5">最佳实践</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id9">常见问题</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../http-actions/index.html">HTTP API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operation/index.html">运维操作</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../backup-restore.html">备份与恢复</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../colocation-join.html">Colocation Join</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../export_manual.html">数据导出</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../privilege.html">权限管理</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../small-file-mgr.html">文件管理器</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../extending-doris/index.html">扩展功能</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../internal/index.html">设计文档</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../sql-reference/index.html">SQL 手册</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Apache 社区</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../../index.html">Doris Documentations</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">操作手册</a> &raquo;</li>
+        
+          <li><a href="index.html">数据导入</a> &raquo;</li>
+        
+      <li>Insert Into</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../../../../_sources/Docs/cn/administrator-guide/load-data/insert-into-manual.md.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="insert-into">
+<h1>Insert Into<a class="headerlink" href="#insert-into" title="Permalink to this headline">¶</a></h1>
+<p>Insert Into 语句的使用方式和 MySQL 等数据库中 Insert Into 语句的使用方式类似。但在 Doris 中,所有的数据写入都是一个独立的导入作业。所以这里将 Insert Into 也作为一种导入方式介绍。</p>
+<p>主要的 Insert Into 命令包含以下两种;</p>
+<ul class="simple">
+<li>INSERT INTO tbl SELECT …</li>
+<li>INSERT INTO tbl (col1, col2, …) VALUES (1, 2, …), (1,3, …);</li>
+</ul>
+<p>其中第二种命令仅用于 Demo,不要使用在测试或生产环境中。</p>
+<div class="section" id="id1">
+<h2>基本操作<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id2">
+<h3>创建导入<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
+<p>Insert Into 命令需要通过 MySQL 协议提交,创建导入请求会同步返回导入结果。</p>
+<p>语法:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">table_name</span> <span class="p">[</span><span class="n">partition_info</span><span class="p">]</span> <span class="p">[</span><span class="n">col_list</span><span class="p">]</span> <span class="p">[</span><span class="n">query_stmt</span><span class="p">]</span> <span class="p">[</span><span class="n">VALUES</span><span class="p" [...]
+</pre></div>
+</div>
+<p>示例:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">tbl2</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">tbl3</span><span class="p">;</span>
+<span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">tbl1</span> <span class="n">VALUES</span> <span class="p">(</span><span class="s2">&quot;qweasdzxcqweasdzxc&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>下面主要介绍创建导入语句中使用到的参数:</p>
+<ul>
+<li><p class="first">partition_info</p>
+<p>导入表的目标分区,如果指定目标分区,则只会导入符合目标分区的数据。如果没有指定,则默认值为这张表的所有分区。</p>
+</li>
+<li><p class="first">col_list</p>
+<p>导入表的目标列,可以以任意的顺序存在。如果没有指定目标列,那么默认值是这张表的所有列。如果待表中的某个列没有存在目标列中,那么这个列需要有默认值,否则 Insert Into 就会执行失败。</p>
+<p>如果查询语句的结果列类型与目标列的类型不一致,那么会调用隐式类型转化,如果不能够进行转化,那么 Insert Into 语句会报语法解析错误。</p>
+</li>
+<li><p class="first">query_stmt</p>
+<p>通过一个查询语句,将查询语句的结果导入到 Doris 系统中的其他表。查询语句支持任意 Doris 支持的 SQL 查询语法。</p>
+</li>
+<li><p class="first">VALUES</p>
+<p>用户可以通过 VALUES 语法插入一条或者多条数据。</p>
+<p><em>注意:VALUES 方式仅适用于导入几条数据作为导入 DEMO 的情况,完全不适用于任何测试和生产环境。Doris 系统本身也不适合单条数据导入的场景。建议使用 INSERT INTO SELECT 的方式进行批量导入。</em></p>
+</li>
+</ul>
+</div>
+<div class="section" id="id3">
+<h3>导入结果<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
+<p>Insert Into 本身就是一个 SQL 命令,所以返回的行为同 SQL 命令的返回行为。</p>
+<p>如果导入失败,则返回语句执行失败。如果导入成功,则返回语句执行成功,还会附加返回一个 Label 字段。</p>
+<p>Label 是该 Insert Into 导入作业的标识。每个导入作业,都有一个在单 database 内部唯一的 Label。Insert Into 的 Label 则是由系统生成的,用户可以拿着这个 Label 通过查询导入命令异步获取导入状态。</p>
+</div>
+</div>
+<div class="section" id="id4">
+<h2>相关系统配置<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="fe">
+<h3>FE 配置<a class="headerlink" href="#fe" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">timeout</p>
+<p>导入任务的超时时间(以秒为单位),导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。</p>
+<p>目前 Insert Into 并不支持自定义导入的 timeout 时间,所有 Insert Into 导入的超时时间是统一的,默认的 timeout 时间为1小时。如果导入的源文件无法再规定时间内完成导入,则需要调整 FE 的参数<code class="docutils literal notranslate"><span class="pre">insert_load_default_timeout_second</span></code>。</p>
+<p>同时 Insert Into 语句收到 Session 变量 <code class="docutils literal notranslate"><span class="pre">query_timeout</span></code> 的限制。可以通过 <code class="docutils literal notranslate"><span class="pre">SET</span> <span class="pre">query_timeout</span> <span class="pre">=</span> <span class="pre">xxx;</span></code> 来增加超时时间,单位是秒。</p>
+</li>
+</ul>
+</div>
+<div class="section" id="session">
+<h3>Session 变量<a class="headerlink" href="#session" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">enable_insert_strict</p>
+<p>Insert Into 导入本身不能控制导入可容忍的错误率。用户只能通过 <code class="docutils literal notranslate"><span class="pre">enable_insert_strict</span></code> 这个 Session 参数用来控制。当该参数设置为 false 时,表示至少有一条数据被正确导入,则返回成功。当该参数设置为 false 时,表示如果有一条数据错误,则导入失败。默认为 false。可通过 <code class="docutils literal notranslate"><span class="pre">SET</span> <span class="pre">enable_insert_strict</span> <span class="pre">=</span> <span class="pre">true;</span></code> 来设置。</p>
+</li>
+<li><p class="first">query_timeout</p>
+<p>Insert Into 本身也是一个 SQL 命令,因此 Insert Into 语句也受到 Session 变量 <code class="docutils literal notranslate"><span class="pre">query_timeout</span></code> 的限制。可以通过 <code class="docutils literal notranslate"><span class="pre">SET</span> <span class="pre">query_timeout</span> <span class="pre">=</span> <span class="pre">xxx;</span></code> 来增加超时时间,单位是秒。</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id5">
+<h2>最佳实践<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id6">
+<h3>应用场景<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h3>
+<ol class="simple">
+<li>用户希望仅导入几条假数据,验证一下 Doris 系统的功能。此时适合使用 INSERT INTO VALUS 的语法。</li>
+<li>用户希望将已经在 Doris 表中的数据进行 ETL 转换并导入到一个新的 Doris 表中,此时适合使用 INSERT INTO SELECT 语法。</li>
+<li>用户可以创建一种外部表,如 MySQL 外部表映射一张 MySQL 系统中的表。或者创建 Broker 外部表来映射 HDFS 上的数据文件。然后通过 INSERT INTO SELECT 语法将外部表中的数据导入到 Doris 表中存储。</li>
+</ol>
+</div>
+<div class="section" id="id7">
+<h3>数据量<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
+<p>Insert Into 对数据量没有限制,大数据量导入也可以支持。但 Insert Into 有默认的超时时间,用户预估的导入数据量过大,就需要修改系统的 Insert Into 导入超时时间。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>导入数据量 = 36G 约≤ 3600s * 10M/s 
+其中 10M/s 是最大导入限速,用户需要根据当前集群情况计算出平均的导入速度来替换公式中的 10M/s
+</pre></div>
+</div>
+</div>
+<div class="section" id="id8">
+<h3>完整例子<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h3>
+<p>用户有一张表 store_sales 在数据库 sales 中,用户又创建了一张表叫 bj_store_sales 也在数据库 sales 中,用户希望将 store_sales 中销售记录在 bj 的数据导入到这张新建的表 bj_store_sales 中。导入的数据量约为:10G。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>store_sales schema:
+(id, total, user_id, sale_timestamp, region)
+
+bj_store_sales schema:
+(id, total, user_id, sale_timestamp)
+</pre></div>
+</div>
+<p>集群情况:用户当前集群的平均导入速度约为 5M/s</p>
+<ul>
+<li><p class="first">Step1: 判断是否要修改 Insert Into 的默认超时时间</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">计算导入的大概时间</span>
+<span class="mi">10</span><span class="n">G</span> <span class="o">/</span> <span class="mi">5</span><span class="n">M</span><span class="o">/</span><span class="n">s</span> <span class="o">=</span> <span class="mi">2000</span><span class="n">s</span>
+
+<span class="n">修改</span> <span class="n">FE</span> <span class="n">配置</span>
+<span class="n">insert_load_default_timeout_second</span> <span class="o">=</span> <span class="mi">2000</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Step2:创建导入任务</p>
+<p>由于用户是希望将一张表中的数据做 ETL 并导入到目标表中,所以应该使用 Insert into query_stmt 方式导入。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">bj_store_sales</span> <span class="n">SELECT</span> <span class="nb">id</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">sale_timestamp</span> <span class="n">FROM</span> <span class="n">store_sales</span> <span class="n">where< [...]
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id9">
+<h2>常见问题<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">查看错误行</p>
+<p>由于 Insert Into 无法控制错误率,只能通过 <code class="docutils literal notranslate"><span class="pre">enable_insert_strict</span></code> 设置为完全容忍错误数据或完全忽略错误数据。因此如果 <code class="docutils literal notranslate"><span class="pre">enable_insert_strict</span></code> 设为 true,则 Insert Into 可能会失败。而如果 <code class="docutils literal notranslate"><span class="pre">enable_insert_strict</span></code> 设为 false,则可能出现仅导入了部分合格数据的情况。但无论以上哪种情况,Doris 目前无法提供查看不合格数据行的功能。因此用户无法通过 Insert Into 语句来查看具体的导入错误。</p>
+<p>错误的原因通常如:源数据列长度超过目的数据列长度、列类型不匹配、分区不匹配、列顺序不匹配等等。当依然无法检查出问题时。目前只能建议先运行 Insert Into 语句中的 SELECT 命令将数据导出到一个文件中,然后在通过 Stream load 的方式导入这个文件,来查看具体的错误。</p>
+</li>
+</ul>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../http-actions/index.html" class="btn btn-neutral float-right" title="HTTP API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="routine-load-manual.html" class="btn btn-neutral float-left" title="Routine Load" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Apache Doris(Incubating)
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/content/Docs/cn/administrator-guide/load-data/load-manual.html b/content/Docs/cn/administrator-guide/load-data/load-manual.html
new file mode 100644
index 0000000..4ac91d2
--- /dev/null
+++ b/content/Docs/cn/administrator-guide/load-data/load-manual.html
@@ -0,0 +1,394 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>导入总览 &mdash; Doris Documentations 0.11.0 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../../../../_static/jquery.js"></script>
+        <script type="text/javascript" src="../../../../_static/underscore.js"></script>
+        <script type="text/javascript" src="../../../../_static/doctools.js"></script>
+        <script type="text/javascript" src="../../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../../search.html" />
+    <link rel="next" title="Broker Load" href="broker-load-manual.html" />
+    <link rel="prev" title="数据导入" href="index.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../../index.html" class="icon icon-home"> Doris Documentations
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.11.0
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../installing/index.html">编译与部署</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">开始使用</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">操作手册</a><ul class="current">
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">数据导入</a><ul class="current">
+<li class="toctree-l3 current"><a class="current reference internal" href="#">导入总览</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#id2">基本概念</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id3">导入方式</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id4">基本原理</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id6">同步和异步</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id10">最佳实践</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id11">通用系统配置</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="broker-load-manual.html">Broker Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="stream-load-manual.html">Stream load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">Routine Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="insert-into-manual.html">Insert Into</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../http-actions/index.html">HTTP API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operation/index.html">运维操作</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../backup-restore.html">备份与恢复</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../colocation-join.html">Colocation Join</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../export_manual.html">数据导出</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../privilege.html">权限管理</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../small-file-mgr.html">文件管理器</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../extending-doris/index.html">扩展功能</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../internal/index.html">设计文档</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../sql-reference/index.html">SQL 手册</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Apache 社区</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../../index.html">Doris Documentations</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">操作手册</a> &raquo;</li>
+        
+          <li><a href="index.html">数据导入</a> &raquo;</li>
+        
+      <li>导入总览</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../../../../_sources/Docs/cn/administrator-guide/load-data/load-manual.md.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="id1">
+<h1>导入总览<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h1>
+<p>导入(Load)功能就是将用户的原始数据导入到 Doris 中。导入成功后,用户即可通过 Mysql 客户端查询数据。</p>
+<p>Doris 支持多种导入方式。建议先完整阅读本文档,再根据所选择的导入方式,查看各自导入方式的详细文档。</p>
+<div class="section" id="id2">
+<h2>基本概念<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<ol class="simple">
+<li>Frontend(FE):Doris 系统的元数据和调度节点。在导入流程中主要负责导入规划生成和导入任务的调度工作。</li>
+<li>Backend(BE):Doris 系统的计算和存储节点。在导入流程中主要负责数据的 ETL 和存储。</li>
+<li>Broker:Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力。</li>
+<li>导入作业(Load job):导入作业读取用户提交的源数据,转换或清洗后,将数据导入到 Doris 系统中。导入完成后,数据即可被用户查询到。</li>
+<li>Label:所有导入作业都有一个 Label。Label 在一个数据库内唯一,可由用户指定或系统自动生成,用于标识一个导入作业。相同的 Label 仅可用于一个成功的导入作业。</li>
+<li>MySQL 协议/HTTP 协议:Doris 提供两种访问协议接口。 MySQL 协议和 HTTP 协议。部分导入方式使用 MySQL 协议接口提交作业,部分导入方式使用 HTTP 协议接口提交作业。</li>
+</ol>
+</div>
+<div class="section" id="id3">
+<h2>导入方式<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<p>为适配不同的数据导入需求,Doris 系统提供了5种不同的导入方式。每种导入方式支持不同的数据源,存在不同的使用方式(异步,同步)。</p>
+<p>所有导入方式都支持 csv 数据格式。其中 Broker load 还支持 parquet 数据格式。</p>
+<p>每个导入方式的说明请参阅单个导入方式的操作手册。</p>
+<ul>
+<li><p class="first">Broker load</p>
+<p>通过 Broker 进程访问并读取外部数据源(如 HDFS)导入到 Doris。用户通过 Mysql 协议提交导入作业后,异步执行。通过 <code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">LOAD</span></code> 命令查看导入结果。</p>
+</li>
+<li><p class="first">Stream load</p>
+<p>用户通过 HTTP 协议提交请求并携带原始数据创建导入。主要用于快速将本地文件或数据流中的数据导入到 Doris。导入命令同步返回导入结果。</p>
+</li>
+<li><p class="first">Insert</p>
+<p>类似 MySQL 中的 Insert 语句,Doris 提供 <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">INTO</span> <span class="pre">tbl</span> <span class="pre">SELECT</span> <span class="pre">...;</span></code> 的方式从 Doris 的表中读取数据并导入到另一张表。或者通过 <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">INTO</span> <span class="pre">tbl</span> <span class="pre">VALUES(...);</span></code> 插入单条数据。</p>
+</li>
+<li><p class="first">Multi load</p>
+<p>用户通过 HTTP 协议提交多个导入作业。Multi Load 可以保证多个导入作业的原子生效。</p>
+</li>
+<li><p class="first">Routine load</p>
+<p>用户通过 MySQL 协议提交例行导入作业,生成一个常驻线程,不间断的从数据源(如 Kafka)中读取数据并导入到 Doris 中。</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id4">
+<h2>基本原理<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id5">
+<h3>导入执行流程<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+---------+</span>      <span class="o">+---------+</span>      <span class="o">+----------+</span>      <span class="o">+-----------+</span>
+<span class="o">|</span>         <span class="o">|</span>      <span class="o">|</span>         <span class="o">|</span>      <span class="o">|</span>          <span class="o">|</span>      <span class="o">|</span>           <span class="o">|</span>
+<span class="o">|</span> <span class="n">PENDING</span> <span class="o">+-----&gt;+</span>   <span class="n">ETL</span>   <span class="o">+-----&gt;+</span> <span class="n">LOADING</span>  <span class="o">+-----&gt;+</span> <span class="n">FINISHED</span>  <span class="o">|</span>
+<span class="o">|</span>         <span class="o">|</span>      <span class="o">|</span>         <span class="o">|</span>      <span class="o">|</span>          <span class="o">|</span>      <span class="o">|</span>           <span class="o">|</span>
+<span class="o">+---------+</span>      <span class="o">+---+-----+</span>      <span class="o">+----+-----+</span>      <span class="o">+-----------+</span>
+     <span class="o">|</span>               <span class="o">|</span>                 <span class="o">|</span>
+     <span class="o">|</span>               <span class="o">|</span>                 <span class="o">|</span>
+     <span class="o">|</span>               <span class="o">|</span>                 <span class="o">|</span>
+     <span class="o">|</span>               <span class="o">|</span>                 <span class="o">|</span>            <span class="o">+-----------+</span>
+     <span class="o">|</span>               <span class="o">|</span>                 <span class="o">|</span>            <span class="o">|</span>           <span class="o">|</span>
+     <span class="o">+---------------+-----------------+------------&gt;</span> <span class="n">CANCELLED</span> <span class="o">|</span>
+                                                    <span class="o">|</span>           <span class="o">|</span>
+                                                    <span class="o">+-----------+</span>
+</pre></div>
+</div>
+<p>如上图,一个导入作业主要经过上面4个阶段。</p>
+<ul class="simple">
+<li>PENDING(非必须): 该阶段只有 Broker Load 才有。Broker Load 被用户提交后会短暂停留在这个阶段,直到被 FE 中的 Scheduler 调度。 其中 Scheduler 的调度间隔为5秒。</li>
+<li>ETL(非必须): 该阶段在版本 0.10.0(包含) 之前存在,主要是用于将原始数据按照用户声明的方式进行变换,并且过滤不满足条件的原始数据。在 0.10.0 后的版本,ETL 阶段不再存在,其中数据 transform 的工作被合并到 LOADING 阶段。</li>
+<li>LOADING: 该阶段在版本 0.10.0(包含)之前主要用于将变换后的数据推到对应的 BE 存储中。在 0.10.0 后的版本,该阶段先对数据进行清洗和变换,然后将数据发送到 BE 存储中。当所有导入数据均完成导入后,进入等待生效过程,此时 Load job 依旧是 LOADING。</li>
+<li>FINISHED: 在 Load job 涉及的所有数据均生效后,Load job 的状态变成 FINISHED。FINISHED 后导入的数据均可查询。</li>
+<li>CANCELLED: 在作业 FINISH 的之前,作业都可能被取消并进入 CANCELLED 状态。如用户手动取消,或导入出现错误等。CANCELLED 也是 Load Job 的最终状态,不可被再次执行。</li>
+</ul>
+<p>上述阶段,除了 PENDING 到 LOADING 阶段是 Scheduler 轮训调度的,其他阶段之前的转移都是回调机制实现。</p>
+</div>
+<div class="section" id="label">
+<h3>Label 和 原子性<a class="headerlink" href="#label" title="Permalink to this headline">¶</a></h3>
+<p>Doris 对所有导入方式提供原子性保证。既保证同一个导入作业内的数据,原子生效。不会出现仅导入部分数据的情况。</p>
+<p>同时,每一个导入作业都有一个由用户指定或者系统自动生成的 Label。Label 在一个 Database 内唯一。当一个 Label 对应的导入作业成功够,不可在重复使用该 Label 提交导入作业。如果 Label 对应的导入作业失败,则可以重复使用。</p>
+<p>用户可以通过 Label 机制,来保证 Label 对应的数据最多被导入一次,级 At-Most-Once 语义。</p>
+</div>
+</div>
+<div class="section" id="id6">
+<h2>同步和异步<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
+<p>Doris 目前的导入方式分为两类,同步和异步。如果是外部程序接入 Doris 的导入功能,需要判断使用导入方式是哪类再确定接入逻辑。</p>
+<div class="section" id="id7">
+<h3>同步<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
+<p>同步导入方式既用户创建导入任务,Doris 同步执行导入,执行完成后返回用户导入结果。用户可直接根据创建导入任务命令返回的结果同步判断导入是否成功。</p>
+<p>同步类型的导入方式有: <strong>Stream load</strong>,<strong>Insert</strong>。</p>
+<p>操作步骤:</p>
+<ol class="simple">
+<li>用户(外部系统)创建导入任务。</li>
+<li>Doris 返回导入结果。</li>
+<li>用户(外部系统)判断导入结果,如果失败可以再次提交导入任务。</li>
+</ol>
+<p><em>注意:如果用户使用的导入方式是同步返回的,且导入的数据量过大,则创建导入请求可能会花很长时间才能返回结果。</em></p>
+</div>
+<div class="section" id="id8">
+<h3>异步<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h3>
+<p>异步导入方式既用户创建导入任务后,Doris 直接返回创建成功。<strong>创建成功不代表数据已经导入</strong>。导入任务会被异步执行,用户在创建成功后,需要通过轮询的方式发送查看命令查看导入作业的状态。如果创建失败,则可以根据失败信息,判断是否需要再次创建。</p>
+<p>异步类型的导入方式有:<strong>Broker load</strong>,<strong>Multi load</strong>。</p>
+<p>操作步骤:</p>
+<ol class="simple">
+<li>用户(外部系统)创建导入任务。</li>
+<li>Doris 返回导入创建结果。</li>
+<li>用户(外部系统)判断导入创建结果,成功则进入4,失败回到重试创建导入,回到1。</li>
+<li>用户(外部系统)轮询查看导入任务,直到状态变为 FINISHED 或 CANCELLED。</li>
+</ol>
+</div>
+<div class="section" id="id9">
+<h3>注意事项<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h3>
+<p>无论是异步还是同步的导入类型,都不应该在 Doris 返回导入失败或导入创建失败后,无休止的重试。<strong>外部系统在有限次数重试并失败后,保留失败信息,大部分多次重试均失败问题都是使用方法问题或数据本身问题。</strong></p>
+</div>
+</div>
+<div class="section" id="id10">
+<h2>最佳实践<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
+<p>用户在接入 Doris 导入时,一般会采用程序接入的方式,这样可以保证数据被定期的导入到 Doris 中。下面主要说明了程序接入 Doris 的最佳实践。</p>
+<ol class="simple">
+<li>选择合适的导入方式:根据数据源所在位置选择导入方式。例如:如果原始数据存放在 HDFS 上,则使用 Broker load 导入。</li>
+<li>确定导入方式的协议:如果选择了 Broker load 导入方式,则外部系统需要能使用 MySQL 协议定期提交和查看导入作业。</li>
+<li>确定导入方式的类型:导入方式为同步或异步。比如 Broker load 为异步导入方式,则外部系统在提交创建导入后,必须调用查看导入命令,根据查看导入命令的结果来判断导入是否成功。</li>
+<li>制定 Label 生成策略:Label 生成策略需满足,每一批次数据唯一且固定的原则。这样 Doris 就可以保证 At-Most-Once。</li>
+<li>程序自身保证 At-Least-Once:外部系统需要保证自身的 At-Least-Once,这样就可以保证导入流程的 Exactly-Once。</li>
+</ol>
+</div>
+<div class="section" id="id11">
+<h2>通用系统配置<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
+<p>下面主要解释了几个所有导入方式均通用的系统级别的配置。</p>
+<div class="section" id="fe">
+<h3>FE 配置<a class="headerlink" href="#fe" title="Permalink to this headline">¶</a></h3>
+<p>以下配置属于 FE 的系统配置,可以通过修改 FE 的配置文件 <code class="docutils literal notranslate"><span class="pre">fe.conf</span></code> 来修改配置。</p>
+<ul>
+<li><p class="first">max_load_timeout_second 和 min_load_timeout_second</p>
+<p>这两个配置含义为:最大的导入超时时间,最小的导入超时时间,以秒为单位。默认的最大超时时间为3天, 默认的最小超时时间为1秒。用户自定义的导入超时时间不可超过这个范围。该参数通用于所有的导入方式。</p>
+</li>
+<li><p class="first">desired_max_waiting_jobs</p>
+<p>在等待队列中的导入任务个数最大值,默认为100。当在 FE 中处于 PENDING 状态(也就是等待执行的)导入个数超过该值,新的导入请求则会被拒绝。</p>
+<p>此配置仅对异步执行的导入有效,当异步执行的导入等待个数超过默认值,则后续的创建导入请求会被拒绝。</p>
+</li>
+<li><p class="first">max_running_txn_num_per_db</p>
+<p>这个配置的含义是说,每个 Database 中正在运行的导入最大个数(不区分导入类型,统一计数)。当当前 Database 正在运行的导入个数超过最大值时,后续的导入不会被执行。如果是同步导入作业,则导入会被拒绝。如果是异步导入作业。则作业会在队列中等待。</p>
+</li>
+</ul>
+</div>
+<div class="section" id="be">
+<h3>BE 配置<a class="headerlink" href="#be" title="Permalink to this headline">¶</a></h3>
+<p>以下配置属于 BE 的系统配置,可以通过修改 BE 的配置文件 <code class="docutils literal notranslate"><span class="pre">be.conf</span></code> 来修改配置。</p>
+<ul>
+<li><p class="first">push_write_mbytes_per_sec</p>
+<p>BE 上单个 Tablet 的写入速度限制。默认是 10,即 10MB/s。通常 BE 对单个 Tablet 的最大写入速度,根据 Schema 以及系统的不同,大约在 10-30MB/s 之间。可以适当调整这个参数来控制导入速度。</p>
+</li>
+<li><p class="first">write_buffer_size</p>
+<p>导入数据在 BE 上会先写入一个 memtable,memtable 达到阈值后才会写回磁盘。默认大小是 100MB。过小的阈值可能导致 BE 上存在大量的小文件。可以适当提高这个阈值减少文件数量。但过大的阈值可能导致 RPC 超时,见下面的配置说明。</p>
+</li>
+<li><p class="first">tablet_writer_rpc_timeout_sec</p>
+<p>导入过程中,发送一个 Batch(1024行)的 RPC 超时时间。默认 600 秒。因为该 RPC 可能涉及多个 memtable 的写盘操作,所以可能会因为写盘导致 RPC 超时,可以适当调整这个超时时间来减少超时错误(如 <code class="docutils literal notranslate"><span class="pre">send</span> <span class="pre">batch</span> <span class="pre">fail</span></code> 错误)。同时,如果调大 <code class="docutils literal notranslate"><span class="pre">write_buffer_size</span></code> 配置,也需要适当调大这个参数。</p>
+</li>
+<li><p class="first">streaming_load_rpc_max_alive_time_sec</p>
+<p>在导入过程中,Doris 会为每一个 Tablet 开启一个 Writer,用于接收数据并写入。这个参数指定了 Writer 的等待超时时间。如果在这个时间内,Writer 没有收到任何数据,则 Writer 会被自动销毁。当系统处理速度较慢时,Writer 可能长时间接收不到下一批数据,导致导入报错:<code class="docutils literal notranslate"><span class="pre">TabletWriter</span> <span class="pre">add</span> <span class="pre">batch</span> <span class="pre">with</span> <span class="pre">unknown</span> <span class="pre">id</span></code>。此时可适当增大这个配置。默认为 600 秒。</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="broker-load-manual.html" class="btn btn-neutral float-right" title="Broker Load" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="index.html" class="btn btn-neutral float-left" title="数据导入" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Apache Doris(Incubating)
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/content/Docs/cn/administrator-guide/load-data/routine-load-manual.html b/content/Docs/cn/administrator-guide/load-data/routine-load-manual.html
index 68af363..657d948 100644
--- a/content/Docs/cn/administrator-guide/load-data/routine-load-manual.html
+++ b/content/Docs/cn/administrator-guide/load-data/routine-load-manual.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>例行导入 &mdash; Doris Documentations 0.11.0 documentation</title>
+  <title>Routine Load &mdash; Doris Documentations 0.11.0 documentation</title>
   
 
   
@@ -35,8 +35,8 @@
   <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../search.html" />
-    <link rel="next" title="HTTP API" href="../http-actions/index.html" />
-    <link rel="prev" title="Broker Load" href="broker-load-manual.html" /> 
+    <link rel="next" title="Insert Into" href="insert-into-manual.html" />
+    <link rel="prev" title="Stream load" href="stream-load-manual.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -89,15 +89,18 @@
 <li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">开始使用</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="../index.html">操作手册</a><ul class="current">
 <li class="toctree-l2 current"><a class="reference internal" href="index.html">数据导入</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="load-manual.html">导入总览</a></li>
 <li class="toctree-l3"><a class="reference internal" href="broker-load-manual.html">Broker Load</a></li>
-<li class="toctree-l3 current"><a class="current reference internal" href="#">例行导入</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="#id2">名词解释</a></li>
-<li class="toctree-l4"><a class="reference internal" href="#id3">原理</a></li>
+<li class="toctree-l3"><a class="reference internal" href="stream-load-manual.html">Stream load</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Routine Load</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#id1">名词解释</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id2">原理</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#kafka">Kafka 例行导入</a></li>
-<li class="toctree-l4"><a class="reference internal" href="#id8">其他说明</a></li>
-<li class="toctree-l4"><a class="reference internal" href="#id9">相关参数</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id7">其他说明</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id8">相关参数</a></li>
 </ul>
 </li>
+<li class="toctree-l3"><a class="reference internal" href="insert-into-manual.html">Insert Into</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../http-actions/index.html">HTTP API</a></li>
@@ -162,7 +165,7 @@
         
           <li><a href="index.html">数据导入</a> &raquo;</li>
         
-      <li>例行导入</li>
+      <li>Routine Load</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -181,12 +184,12 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="id1">
-<h1>例行导入<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h1>
+  <div class="section" id="routine-load">
+<h1>Routine Load<a class="headerlink" href="#routine-load" title="Permalink to this headline">¶</a></h1>
 <p>例行导入(Routine Load)功能为用户提供了一种自动从指定数据源进行数据导入的功能。</p>
 <p>本文档主要介绍该功能的实现原理、使用方式以及最佳实践。</p>
-<div class="section" id="id2">
-<h2>名词解释<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id1">
+<h2>名词解释<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
 <li>FE:Frontend,Doris 的前端节点。负责元数据管理和请求接入。</li>
 <li>BE:Backend,Doris 的后端节点。负责查询执行和数据存储。</li>
@@ -196,8 +199,8 @@
 <li>TaskScheduler:任务调度器。用于调度 Task 的执行。</li>
 </ul>
 </div>
-<div class="section" id="id3">
-<h2>原理<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id2">
+<h2>原理<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>         <span class="o">+---------+</span>
          <span class="o">|</span>  <span class="n">Client</span> <span class="o">|</span>
          <span class="o">+----+----+</span>
@@ -231,16 +234,16 @@
 <div class="section" id="kafka">
 <h2>Kafka 例行导入<a class="headerlink" href="#kafka" title="Permalink to this headline">¶</a></h2>
 <p>当前我们仅支持从 Kafka 系统进行例行导入。该部分会详细介绍 Kafka 例行导入使用方式和最佳实践。</p>
-<div class="section" id="id4">
-<h3>使用限制<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="id3">
+<h3>使用限制<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
 <ol class="simple">
 <li>支持无认证的 Kafka 访问,以及通过 SSL 方式认证的 Kafka 集群。</li>
 <li>支持的消息格式为 csv 文本格式。每一个 message 为一行,且行尾<strong>不包含</strong>换行符。</li>
 <li>仅支持 Kafka 0.10.0.0(含) 以上版本。</li>
 </ol>
 </div>
-<div class="section" id="id5">
-<h3>创建例行导入任务<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="id4">
+<h3>创建例行导入任务<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
 <p>创建例行导入任务的的详细语法可以连接到 Doris 后,执行 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">CREATE</span> <span class="pre">ROUTINE</span> <span class="pre">LOAD;</span></code> 查看语法帮助。这里主要详细介绍,创建作业时的注意事项。</p>
 <ul>
 <li><p class="first">columns_mapping</p>
@@ -322,19 +325,19 @@
 </div></blockquote>
 </div>
 </div>
-<div class="section" id="id6">
-<h3>查看导入作业状态<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="id5">
+<h3>查看导入作业状态<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
 <p>查看<strong>作业</strong>状态的具体命令和示例可以通过 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">SHOW</span> <span class="pre">ROUTINE</span> <span class="pre">LOAD;</span></code> 命令查看。</p>
 <p>查看<strong>任务</strong>运行状态的具体命令和示例可以通过 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">SHOW</span> <span class="pre">ROUTINE</span> <span class="pre">LOAD</span> <span class="pre">TASK;</span></code> 命令查看。</p>
 <p>只能查看当前正在运行中的任务,已结束和未开始的任务无法查看。</p>
 </div>
-<div class="section" id="id7">
-<h3>作业控制<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="id6">
+<h3>作业控制<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h3>
 <p>用户可以通过 <code class="docutils literal notranslate"><span class="pre">STOP/PAUSE/RESUME</span></code> 三个命令来控制作业的停止,暂停和重启。可以通过 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">STOP</span> <span class="pre">ROUTINE</span> <span class="pre">LOAD;</span></code>, <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">PAUSE</span> <span class="pre">ROUTINE</span> <span class="pre">LOAD;</span></code> 以及 <code class= [...]
 </div>
 </div>
-<div class="section" id="id8">
-<h2>其他说明<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id7">
+<h2>其他说明<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
 <ol>
 <li><p class="first">例行导入作业和 ALTER TABLE 操作的关系</p>
 <ul class="simple">
@@ -361,8 +364,8 @@
 </li>
 </ol>
 </div>
-<div class="section" id="id9">
-<h2>相关参数<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id8">
+<h2>相关参数<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
 <p>一些系统配置参数会影响例行导入的使用。</p>
 <ol>
 <li><p class="first">max_routine_load_task_concurrent_num</p>
@@ -386,10 +389,10 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="../http-actions/index.html" class="btn btn-neutral float-right" title="HTTP API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="insert-into-manual.html" class="btn btn-neutral float-right" title="Insert Into" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="broker-load-manual.html" class="btn btn-neutral float-left" title="Broker Load" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="stream-load-manual.html" class="btn btn-neutral float-left" title="Stream load" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/content/Docs/cn/administrator-guide/load-data/stream-load-manual.html b/content/Docs/cn/administrator-guide/load-data/stream-load-manual.html
new file mode 100644
index 0000000..bc8d630
--- /dev/null
+++ b/content/Docs/cn/administrator-guide/load-data/stream-load-manual.html
@@ -0,0 +1,476 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Stream load &mdash; Doris Documentations 0.11.0 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../../../../_static/jquery.js"></script>
+        <script type="text/javascript" src="../../../../_static/underscore.js"></script>
+        <script type="text/javascript" src="../../../../_static/doctools.js"></script>
+        <script type="text/javascript" src="../../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../../search.html" />
+    <link rel="next" title="Routine Load" href="routine-load-manual.html" />
+    <link rel="prev" title="Broker Load" href="broker-load-manual.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../../index.html" class="icon icon-home"> Doris Documentations
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.11.0
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../installing/index.html">编译与部署</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">开始使用</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">操作手册</a><ul class="current">
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">数据导入</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="load-manual.html">导入总览</a></li>
+<li class="toctree-l3"><a class="reference internal" href="broker-load-manual.html">Broker Load</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Stream load</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#id1">基本原理</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id2">基本操作</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id8">相关系统配置</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id9">最佳实践</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id13">常见问题</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="routine-load-manual.html">Routine Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="insert-into-manual.html">Insert Into</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../http-actions/index.html">HTTP API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operation/index.html">运维操作</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../backup-restore.html">备份与恢复</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../colocation-join.html">Colocation Join</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../export_manual.html">数据导出</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../privilege.html">权限管理</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../small-file-mgr.html">文件管理器</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../extending-doris/index.html">扩展功能</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../internal/index.html">设计文档</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../sql-reference/index.html">SQL 手册</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Apache 社区</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../../index.html">Doris Documentations</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">操作手册</a> &raquo;</li>
+        
+          <li><a href="index.html">数据导入</a> &raquo;</li>
+        
+      <li>Stream load</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../../../../_sources/Docs/cn/administrator-guide/load-data/stream-load-manual.md.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="stream-load">
+<h1>Stream load<a class="headerlink" href="#stream-load" title="Permalink to this headline">¶</a></h1>
+<p>Stream load 是一个同步的导入方式,用户通过发送 HTTP 协议发送请求将本地文件或数据流导入到 Doris 中。Stream load 同步执行导入并返回导入结果。用户可直接通过请求的返回体判断本次导入是否成功。</p>
+<p>Stream load 主要适用于导入本地文件,或通过程序导入数据流中的数据。</p>
+<div class="section" id="id1">
+<h2>基本原理<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<p>下图展示了 Stream load 的主要流程,省略了一些导入细节。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>                         <span class="o">^</span>      <span class="o">+</span>
+                         <span class="o">|</span>      <span class="o">|</span>
+                         <span class="o">|</span>      <span class="o">|</span> <span class="mi">1</span><span class="n">A</span><span class="o">.</span> <span class="n">User</span> <span class="n">submit</span> <span class="n">load</span> <span class="n">to</span> <span class="n">FE</span>
+                         <span class="o">|</span>      <span class="o">|</span>
+                         <span class="o">|</span>   <span class="o">+--</span><span class="n">v</span><span class="o">-----------+</span>
+                         <span class="o">|</span>   <span class="o">|</span> <span class="n">FE</span>           <span class="o">|</span>
+<span class="mf">5.</span> <span class="n">Return</span> <span class="n">result</span> <span class="n">to</span> <span class="n">user</span> <span class="o">|</span>   <span class="o">+--+-----------+</span>
+                         <span class="o">|</span>      <span class="o">|</span>
+                         <span class="o">|</span>      <span class="o">|</span> <span class="mf">2.</span> <span class="n">Redirect</span> <span class="n">to</span> <span class="n">BE</span>
+                         <span class="o">|</span>      <span class="o">|</span>
+                         <span class="o">|</span>   <span class="o">+--</span><span class="n">v</span><span class="o">-----------+</span>
+                         <span class="o">+---+</span><span class="n">Coordinator</span> <span class="n">BE</span><span class="o">|</span> <span class="mi">1</span><span class="n">B</span><span class="o">.</span> <span class="n">User</span> <span class="n">submit</span> <span class="n">load</span> <span class="n">to</span> <span class="n">BE</span>
+                             <span class="o">+-+-----+----+-+</span>
+                               <span class="o">|</span>     <span class="o">|</span>    <span class="o">|</span>
+                         <span class="o">+-----+</span>     <span class="o">|</span>    <span class="o">+-----+</span>
+                         <span class="o">|</span>           <span class="o">|</span>          <span class="o">|</span> <span class="mf">3.</span> <span class="n">Distrbute</span> <span class="n">data</span>
+                         <span class="o">|</span>           <span class="o">|</span>          <span class="o">|</span>
+                       <span class="o">+-</span><span class="n">v</span><span class="o">-+</span>       <span class="o">+-</span><span class="n">v</span><span class="o">-+</span>      <span class="o">+-</span><span class="n">v</span><span class="o">-+</span>
+                       <span class="o">|</span><span class="n">BE</span> <span class="o">|</span>       <span class="o">|</span><span class="n">BE</span> <span class="o">|</span>      <span class="o">|</span><span class="n">BE</span> <span class="o">|</span>
+                       <span class="o">+---+</span>       <span class="o">+---+</span>      <span class="o">+---+</span>
+</pre></div>
+</div>
+<p>Stream load 中,Doris 会选定一个节点作为 Coordinator 节点。该节点负责接数据并分发数据到其他数据节点。</p>
+<p>用户通过 HTTP 协议提交导入命令。如果提交到 FE,则 FE 会通过 HTTP redirect 指令将请求转发给某一个 BE。用户也可以直接提交导入命令给某一指定 BE。</p>
+<p>导入的最终结果由 Coordinator BE 返回给用户。</p>
+</div>
+<div class="section" id="id2">
+<h2>基本操作<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id3">
+<h3>创建导入<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
+<p>Stream load 通过 HTTP 协议提交和传输数据。这里通过 <code class="docutils literal notranslate"><span class="pre">curl</span></code> 命令展示如何提交导入。</p>
+<p>用户也可以通过其他 HTTP client 进行操作。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>curl --location-trusted -u user:passwd [-H &quot;&quot;...] -T data.file -XPUT http://fe_host:http_port/api/{db}/{table}/_stream_load
+
+Header 中支持如下属性:
+label, column_separator, columns, where, max_filter_ratio, partitions
+格式为: -H &quot;key1:value1&quot;
+</pre></div>
+</div>
+<p>示例:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">curl</span> <span class="o">--</span><span class="n">location</span><span class="o">-</span><span class="n">trusted</span> <span class="o">-</span><span class="n">u</span> <span class="n">root</span> <span class="o">-</span><span class="n">T</span> <span class="n">date</span> <span class="o">-</span><span class="n">H</span> <span class="s2">&quot;label:123&quot;</span> <span class="n">http [...]
+</pre></div>
+</div>
+<p>创建导入的详细语法帮助执行 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">STREAM</span> <span class="pre">LOAD</span></code> 查看, 下面主要介绍创建 Stream load 的部分参数意义。</p>
+<div class="section" id="id4">
+<h4>签名参数<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h4>
+<ul>
+<li><p class="first">user/passwd</p>
+<p>Stream load 由于创建导入的协议使用的是 HTTP 协议,通过 Basic access authentication 进行签名。Doris 系统会根据签名验证用户身份和导入权限。</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id5">
+<h4>导入任务参数<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h4>
+<p>Stream load 由于使用的是 HTTP 协议,所以所有导入任务有关的参数均设置在 Header 中。下面主要介绍了 Stream load 导入任务参数的部分参数意义。</p>
+<ul>
+<li><p class="first">label</p>
+<p>导入任务的标识。每个导入任务,都有一个在单 database 内部唯一的 label。label 是用户在导入命令中自定义的名称。通过这个 label,用户可以查看对应导入任务的执行情况。</p>
+<p>label 的另一个作用,是防止用户重复导入相同的数据。<strong>强烈推荐用户同一批次数据使用相同的 label。这样同一批次数据的重复请求只会被接受一次,保证了 At-Most-Once</strong></p>
+<p>当 label 对应的导入作业状态为 CANCELLED 时,该 label 可以再次被使用。</p>
+</li>
+<li><p class="first">max_filter_ratio</p>
+<p>导入任务的最大容忍率,默认为0容忍,取值范围是0~1。当导入的错误率超过该值,则导入失败。</p>
+<p>如果用户希望忽略错误的行,可以通过设置这个参数大于 0,来保证导入可以成功。</p>
+<p>计算公式为:</p>
+<p><code class="docutils literal notranslate"><span class="pre">(dpp.abnorm.ALL</span> <span class="pre">/</span> <span class="pre">(dpp.abnorm.ALL</span> <span class="pre">+</span> <span class="pre">dpp.norm.ALL</span> <span class="pre">)</span> <span class="pre">)</span> <span class="pre">&gt;</span> <span class="pre">max_filter_ratio</span></code></p>
+<p><code class="docutils literal notranslate"><span class="pre">dpp.abnorm.ALL</span></code> 表示数据质量不合格的行数。如类型不匹配,列数不匹配,长度不匹配等等。</p>
+<p><code class="docutils literal notranslate"><span class="pre">dpp.norm.ALL</span></code> 指的是导入过程中正确数据的条数。可以通过 <code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">LOAD</span></code> 命令查询导入任务的正确数据量。</p>
+<p>原始文件的行数 = <code class="docutils literal notranslate"><span class="pre">dpp.abnorm.ALL</span> <span class="pre">+</span> <span class="pre">dpp.norm.ALL</span></code></p>
+</li>
+<li><p class="first">where</p>
+<p>导入任务指定的过滤条件。Stream load 支持对原始数据指定 where 语句进行过滤。被过滤的数据将不会被导入,也不会参与 filter ratio 的计算,但会被计入<code class="docutils literal notranslate"><span class="pre">num_rows_unselected</span></code>。</p>
+</li>
+<li><p class="first">partition</p>
+<p>待导入表的 Partition 信息,如果待导入数据不属于指定的 Partition 则不会被导入。这些数据将计入 <code class="docutils literal notranslate"><span class="pre">dpp.abnorm.ALL</span> </code></p>
+</li>
+<li><p class="first">columns</p>
+<p>待导入数据的函数变换配置,目前 Stream load 支持的函数变换方法包含列的顺序变化以及表达式变换,其中表达式变换的方法与查询语句的一致。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>列顺序变换例子:原始数据有两列,目前表也有两列(c1,c2)但是原始文件的第一列对应的是目标表的c2列, 而原始文件的第二列对应的是目标表的c1列,则写法如下:
+columns: c2,c1
+
+表达式变换例子:原始文件有两列,目标表也有两列(c1,c2)但是原始文件的两列均需要经过函数变换才能对应目标表的两列,则写法如下:
+columns: tmp_c1, tmp_c2, c1 = year(tmp_c1), c2 = mouth(tmp_c2)
+其中 tmp_*是一个占位符,代表的是原始文件中的两个原始列。
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id6">
+<h3>返回结果<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h3>
+<p>由于 Stream load 是一种同步的导入方式,所以导入的结果会通过创建导入的返回值直接返回给用户。</p>
+<p>示例:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+    <span class="s2">&quot;TxnId&quot;</span><span class="p">:</span> <span class="mi">1003</span><span class="p">,</span>
+    <span class="s2">&quot;Label&quot;</span><span class="p">:</span> <span class="s2">&quot;b6f3bc78-0d2c-45d9-9e4c-faa0a0149bee&quot;</span><span class="p">,</span>
+    <span class="s2">&quot;Status&quot;</span><span class="p">:</span> <span class="s2">&quot;Success&quot;</span><span class="p">,</span>
+    <span class="s2">&quot;Message&quot;</span><span class="p">:</span> <span class="s2">&quot;OK&quot;</span><span class="p">,</span>
+    <span class="s2">&quot;NumberTotalRows&quot;</span><span class="p">:</span> <span class="mi">1000000</span><span class="p">,</span>
+    <span class="s2">&quot;NumberLoadedRows&quot;</span><span class="p">:</span> <span class="mi">1000000</span><span class="p">,</span>
+    <span class="s2">&quot;NumberFilteredRows&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
+    <span class="s2">&quot;NumberUnselectedRows&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
+    <span class="s2">&quot;LoadBytes&quot;</span><span class="p">:</span> <span class="mi">40888898</span><span class="p">,</span>
+    <span class="s2">&quot;LoadTimeMs&quot;</span><span class="p">:</span> <span class="mi">2144</span><span class="p">,</span>
+    <span class="s2">&quot;ErrorURL&quot;</span><span class="p">:</span> <span class="s2">&quot;http://192.168.1.1:8042/api/_load_error_log?file=__shard_0/error_log_insert_stmt_db18266d4d9b4ee5-abb00ddd64bdf005_db18266d4d9b4ee5_abb00ddd64bdf005&quot;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>下面主要解释了 Stream load 导入结果参数:</p>
+<ul>
+<li><p class="first">TxnId:导入的事务ID。用户可不感知。</p>
+</li>
+<li><p class="first">Label:导入 Label。由用户指定或系统自动生成。</p>
+</li>
+<li><p class="first">Status:导入完成状态。</p>
+<p>“Success”:表示导入成功。</p>
+<p>“Publish Timeout”:该状态也表示导入已经完成,只是数据可能会延迟可见,无需重试。</p>
+<p>“Label Already Exists”:Label 重复,需更换 Label。</p>
+<p>“Fail”:导入失败。</p>
+</li>
+<li><p class="first">Message:导入错误信息。</p>
+</li>
+<li><p class="first">NumberTotalRows:导入总处理的行数。</p>
+</li>
+<li><p class="first">NumberLoadedRows:成功导入的行数。</p>
+</li>
+<li><p class="first">NumberFilteredRows:数据质量不合格的行数。</p>
+</li>
+<li><p class="first">NumberUnselectedRows:被 where 条件过滤的行数。</p>
+</li>
+<li><p class="first">LoadBytes:导入的字节数。</p>
+</li>
+<li><p class="first">LoadTimeMs:导入完成时间。单位毫秒。</p>
+</li>
+<li><p class="first">ErrorURL:如果有数据质量问题,通过访问这个 URL 查看具体错误行。</p>
+</li>
+</ul>
+<blockquote>
+<div>注意:由于 Stream load 是同步的导入方式,所以并不会在 Doris 系统中记录导入信息,用户无法异步的通过查看导入命令看到 Stream load。使用时需监听创建导入请求的返回值获取导入结果。</div></blockquote>
+</div>
+<div class="section" id="id7">
+<h3>取消导入<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
+<p>用户无法手动取消 Stream load,Stream load 在超时或者导入错误后会被系统自动取消。</p>
+</div>
+</div>
+<div class="section" id="id8">
+<h2>相关系统配置<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="fe">
+<h3>FE 配置<a class="headerlink" href="#fe" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">stream_load_default_timeout_second</p>
+<p>导入任务的超时时间(以秒为单位),导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。</p>
+<p>目前 Stream load 并不支持自定义导入的 timeout 时间,所有 Stream load 导入的超时时间是统一的,默认的 timeout 时间为300秒。如果导入的源文件无法再规定时间内完成导入,则需要调整 FE 的参数<code class="docutils literal notranslate"><span class="pre">stream_load_default_timeout_second</span></code>。</p>
+</li>
+</ul>
+</div>
+<div class="section" id="be">
+<h3>BE 配置<a class="headerlink" href="#be" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">streaming_load_max_mb</p>
+<p>Stream load 的最大导入大小,默认为 10G,单位是 MB。如果用户的原始文件超过这个值,则需要调整 BE 的参数 <code class="docutils literal notranslate"><span class="pre">streaming_load_max_mb</span></code>。</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id9">
+<h2>最佳实践<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="id10">
+<h3>应用场景<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h3>
+<p>使用 Stream load 的最合适场景就是原始文件在内存中,或者在磁盘中。其次,由于 Stream load 是一种同步的导入方式,所以用户如果希望用同步方式获取导入结果,也可以使用这种导入。</p>
+</div>
+<div class="section" id="id11">
+<h3>数据量<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h3>
+<p>由于 Stream load 的原理是由 BE 发起的导入并分发数据,建议的导入数据量在 1G 到 10G 之间。由于默认的最大 Stream load 导入数据量为 10G,所以如果要导入超过 10G 的文件需要修改 BE 的配置 <code class="docutils literal notranslate"><span class="pre">streaming_load_max_mb</span></code></p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>比如:待导入文件大小为15G
+修改 BE 配置 streaming_load_max_mb 为 16000 即可。
+</pre></div>
+</div>
+<p>Stream load 的默认超时为 300秒,按照 Doris 目前最大的导入限速来看,约超过 3G 的文件就需要修改导入任务默认超时时间了。</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>导入任务超时时间 = 导入数据量 / 10M/s (具体的平均导入速度需要用户根据自己的集群情况计算)
+例如:导入一个 10G 的文件
+timeout = 1000s 等于 10G / 10M/s
+</pre></div>
+</div>
+</div>
+<div class="section" id="id12">
+<h3>完整例子<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h3>
+<p>数据情况: 数据在发送导入请求端的本地磁盘路径 /home/store_sales 中,导入的数据量约为 15G,希望导入到数据库 bj_sales 的表 store_sales 中。</p>
+<p>集群情况:Stream load 的并发数不受集群大小影响。</p>
+<ul>
+<li><p class="first">step1: 导入文件大小是否超过默认的最大导入大小10G</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">修改</span> <span class="n">BE</span> <span class="n">conf</span>
+<span class="n">streaming_load_max_mb</span> <span class="o">=</span> <span class="mi">16000</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">step2: 计算大概的导入时间是否超过默认 timeout 值</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>导入时间 ≈ 15000 / 10 = 1500s
+超过了默认的 timeout 时间,需要修改 FE 的配置
+stream_load_default_timeout_second = 1500
+</pre></div>
+</div>
+</li>
+<li><p class="first">step3:创建导入任务</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">curl</span> <span class="o">--</span><span class="n">location</span><span class="o">-</span><span class="n">trusted</span> <span class="o">-</span><span class="n">u</span> <span class="n">user</span><span class="p">:</span><span class="n">password</span> <span class="o">-</span><span class="n">T</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class=" [...]
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id13">
+<h2>常见问题<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">Label Already Exists</p>
+<p>Stream load 的 Label 重复排查步骤如下:</p>
+<ol>
+<li><p class="first">是否和其他导入方式已经存在的导入 Label 冲突:</p>
+<p>由于 Doris 系统中导入的 Label 不区分导入方式,所以存在其他导入方式使用了相同 Label 的问题。</p>
+<p>通过 <code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">LOAD</span> <span class="pre">WHERE</span> <span class="pre">LABEL</span> <span class="pre">=</span> <span class="pre">“xxx”</span></code>,其中 xxx 为重复的 Label 字符串,查看是否已经存在一个 FINISHED 导入的 Label 和用户申请创建的 Label 相同。</p>
+</li>
+<li><p class="first">是否 Stream load 同一个作业被重复提交了</p>
+<p>由于 Stream load 是 HTTP 协议提交创建导入任务,一般各个语言的 HTTP Client 均会自带请求重试逻辑。Doris 系统在接受到第一个请求后,已经开始操作 Stream load,但是由于没有及时返回给 Client 端结果, Client 端会发生再次重试创建请求的情况。这时候 Doris 系统由于已经在操作第一个请求,所以第二个请求已经就会被报 Label Already Exists 的情况。</p>
+<p>排查上述可能的方法:使用 Label 搜索 FE Master 的日志,看是否存在同一个 Label 出现了两次 <code class="docutils literal notranslate"><span class="pre">redirect</span> <span class="pre">load</span> <span class="pre">action</span> <span class="pre">to</span> <span class="pre">destination=</span> </code> 的情况。如果有就说明,请求被 Client 端重复提交了。</p>
+<p>建议用户根据当前请求的数据量,计算出大致导入的时间,并根据导入超时时间改大 Client 端的请求超时时间,避免请求被 Client 端多次提交。</p>
+</li>
+</ol>
+</li>
+</ul>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="routine-load-manual.html" class="btn btn-neutral float-right" title="Routine Load" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="broker-load-manual.html" class="btn btn-neutral float-left" title="Broker Load" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Apache Doris(Incubating)
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/content/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.html b/content/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.html
index 12364ec..99da516 100644
--- a/content/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.html
+++ b/content/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.html
@@ -305,6 +305,7 @@
 <p>删除一个非 Colocation Group 中指定的副本分布 BE 节点上的副本。</p>
 </li>
 </ol>
+<p>Doris 在选择副本节点时,不会将同一个 Tablet 的副本部署在同一个 host 的不同 BE 上。保证了即使同一个 host 上的所有 BE 都挂掉,也不会造成全部副本丢失。</p>
 <div class="section" id="id5">
 <h3>调度优先级<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
 <p>TabletScheduler 里等待被调度的分片会根据状态不同,赋予不同的优先级。优先级高的分片将会被优先调度。目前有以下几种优先级。</p>
@@ -358,6 +359,7 @@
 <div class="section" id="id8">
 <h2>副本均衡<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
 <p>Doris 会自动进行集群内的副本均衡。均衡的主要思想,是对某些分片,先在低负载的节点上创建一个副本,然后再删除这些分片在高负载节点上的副本。同时,因为不同存储介质的存在,在同一个集群内的不同 BE 节点上,可能存在或不存在一种或两种存储介质。我们要求存储介质为 A 的分片在均衡后,尽量依然存储在存储介质 A 中。所以我们根据存储介质,对集群的 BE 节点进行划分。然后针对不同的存储介质的 BE 节点集合,进行负载均衡调度。</p>
+<p>同样,副本均衡会保证不会将同一个 Tablet 的副本部署在同一个 host 的 BE 上。</p>
 <div class="section" id="be">
 <h3>BE 节点负载<a class="headerlink" href="#be" title="Permalink to this headline">¶</a></h3>
 <p>我们用 ClusterLoadStatistics(CLS)表示一个 cluster 中各个 Backend 的负载均衡情况。TabletScheduler 根据这个统计值,来触发集群均衡。我们当前通过 <strong>磁盘使用率</strong> 和 <strong>副本数量</strong> 两个指标,为每个BE计算一个 loadScore,作为 BE 的负载分数。分数越高,表示该 BE 的负载越重。</p>
@@ -754,6 +756,7 @@
 <h2>相关问题<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
 <li>在某些情况下,默认的副本修复和均衡策略可能会导致网络被打满(多发生在千兆网卡,且每台 BE 的磁盘数量较多的情况下)。此时需要调整一些参数来减少同时进行的均衡和修复任务数。</li>
+<li>目前针对 Colocate Table 的副本的均衡策略无法保证同一个 Tablet 的副本不会分布在同一个 host 的 BE 上。但 Colocate Table 的副本的修复策略会检测到这种分布错误并校正。但可能会出现,校正后,均衡策略再次认为副本不均衡而重新均衡。从而导致在两种状态间不停交替,无法使 Colocate Group 达成稳定。针对这种情况,我们建议在使用 Colocate 属性时,尽量保证集群是同构的,以减小副本分布在同一个 host 上的概率。</li>
 </ul>
 </div>
 </div>
diff --git a/content/Docs/cn/administrator-guide/privilege.html b/content/Docs/cn/administrator-guide/privilege.html
index 6ab0e9e..fa48362 100644
--- a/content/Docs/cn/administrator-guide/privilege.html
+++ b/content/Docs/cn/administrator-guide/privilege.html
@@ -97,8 +97,11 @@
 <li class="toctree-l2 current"><a class="current reference internal" href="#">权限管理</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#id2">名词解释</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#id3">支持的操作</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id4">权限说明</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id5">一些说明</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id4">权限类型</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id5">权限层级</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#admin-grant">ADMIN/GRANT 权限说明</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id6">一些说明</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id7">最佳实践</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="small-file-mgr.html">文件管理器</a></li>
@@ -210,10 +213,10 @@
 <li>查看已创建的角色:SHOW ROELS</li>
 <li>查看用户属性:SHOW PROPERTY</li>
 </ol>
-<p>关于以上命令的详细帮助,可以通过 mysql 客户端连接 Doris 后,使用 help + command 获取帮助。如 <code class="docutils literal notranslate"><span class="pre">help</span> <span class="pre">create</span> <span class="pre">user</span></code>。</p>
+<p>关于以上命令的详细帮助,可以通过 mysql 客户端连接 Doris 后,使用 help + command 获取帮助。如 <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">CREATE</span> <span class="pre">USER</span></code>。</p>
 </div>
 <div class="section" id="id4">
-<h2>权限说明<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
+<h2>权限类型<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
 <p>Doris 目前支持以下几种权限</p>
 <ol>
 <li><p class="first">Node_priv</p>
@@ -229,18 +232,57 @@
 <p>对数据库、表的写权限。包括 Load、Insert、Delete 等。</p>
 </li>
 <li><p class="first">Alter_priv</p>
-<p>对数据库、表的更改权限。包括重命名 库/表、添加/删除/变更 列等操作。</p>
+<p>对数据库、表的更改权限。包括重命名 库/表、添加/删除/变更 列、添加/删除 分区等操作。</p>
 </li>
 <li><p class="first">Create_priv</p>
-<p>创建数据库、表的权限。</p>
+<p>创建数据库、表、视图的权限。</p>
 </li>
 <li><p class="first">Drop_priv</p>
-<p>删除数据库、表的权限。</p>
+<p>删除数据库、表、视图的权限。</p>
 </li>
 </ol>
 </div>
 <div class="section" id="id5">
-<h2>一些说明<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
+<h2>权限层级<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
+<p>同时,根据权限适用范围的不同,我们将权限分为以下三个层级:</p>
+<ol class="simple">
+<li>GLOBAL LEVEL:全局权限。即通过 GRANT 语句授予的 <code class="docutils literal notranslate"><span class="pre">*.*</span></code> 上的权限。被授予的权限适用于任意数据库中的任意表。</li>
+<li>DATABASE LEVEL:数据库级权限。即通过 GRANT 语句授予的 <code class="docutils literal notranslate"><span class="pre">db.*</span></code> 上的权限。被授予的权限适用于指定数据库中的任意表。</li>
+<li>TABLE LEVEL:表级权限。即通过 GRANT 语句授予的 <code class="docutils literal notranslate"><span class="pre">db.tbl</span></code> 上的权限。被授予的权限适用于指定数据库中的指定表。</li>
+</ol>
+</div>
+<div class="section" id="admin-grant">
+<h2>ADMIN/GRANT 权限说明<a class="headerlink" href="#admin-grant" title="Permalink to this headline">¶</a></h2>
+<p>ADMIN_PRIV 和 GRANT_PRIV 权限同时拥有**“授予权限”**的权限,较为特殊。这里对和这两个权限相关的操作逐一说明。</p>
+<ol class="simple">
+<li>CREATE USER<ul>
+<li>拥有 ADMIN 权限,或任意层级的 GRANT 权限的用户可以创建新用户。</li>
+</ul>
+</li>
+<li>DROP USER<ul>
+<li>只有 ADMIN 权限可以删除用户。</li>
+</ul>
+</li>
+<li>CREATE/DROP ROLE<ul>
+<li>只有 ADMIN 权限可以创建角色。</li>
+</ul>
+</li>
+<li>GRANT/REVOKE<ul>
+<li>拥有 ADMIN 权限,或者 GLOBAL 层级 GRANT 权限的用户,可以授予或撤销任意用户的权限。</li>
+<li>拥有 DATABASE 层级 GRANT 权限的用户,可以授予或撤销任意用户对指定数据库的权限。</li>
+<li>拥有 TABLE 层级 GRANT 权限的用户,可以授予或撤销任意用户对指定数据库中指定表的权限。</li>
+</ul>
+</li>
+<li>SET PASSWORD<ul>
+<li>拥有 ADMIN 权限,或者 GLOBAL 层级 GRANT 权限的用户,可以设置任意用户的密码。</li>
+<li>普通用户可以设置自己对应的 UserIdentity 的密码。自己对应的 UserIdentity 可以通过 <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">CURRENT_USER();</span></code> 命令查看。</li>
+<li>拥有非 GLOBAL 层级 GRANT 权限的用户,不可以设置已存在用户的密码,仅能在创建用户时指定密码。</li>
+</ul>
+</li>
+</ol>
+</div>
+<div class="section" id="id6">
+<h2>一些说明<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
 <ol>
 <li><p class="first">Doris 初始化时,会自动创建如下用户和角色:</p>
 <ol class="simple">
@@ -272,8 +314,6 @@
 <p>CREATE USER cmy&#64;’192.%’ IDENTIFIED BY “abcde”;</p>
 <p>在优先级上,’192.%’ 优先于 ‘%’,因此,当用户 cmy 从 192.168.1.1 这台机器尝试使用密码 ‘12345’ 登陆 Doris 会被拒绝。</p>
 </li>
-<li><p class="first">权限冲突</p>
-</li>
 </ol>
 </li>
 <li><p class="first">忘记密码</p>
@@ -283,9 +323,22 @@
 </li>
 <li><p class="first">任何用户都不能重置 root 用户的密码,除了 root 用户自己。</p>
 </li>
-<li><p class="first">拥有 GRANT 权限的用户可以设置密码。如果没有 GRANT 用户,则用户仅可以设置自己对应的 UserIdentity 的密码。自己对应的 UserIdentity 可以通过 <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">CURRENT_USER();</span></code> 命令查看。</p>
+<li><p class="first">ADMIN_PRIV 权限只能在 GLOBAL 层级授予或撤销。</p>
+</li>
+<li><p class="first">拥有 GLOBAL 层级 GRANT_PRIV 其实等同于拥有 ADMIN_PRIV,因为该层级的 GRANT_PRIV 有授予任意权限的权限,请谨慎使用。</p>
+</li>
+</ol>
+</div>
+<div class="section" id="id7">
+<h2>最佳实践<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
+<p>这里举例一些 Doris 权限系统的使用场景。</p>
+<ol>
+<li><p class="first">场景一</p>
+<p>Doris 集群的使用者分为管理员(Admin)、开发工程师(RD)和用户(Client)。其中管理员拥有整个集群的所有权限,主要负责集群的搭建、节点管理等。开发工程师负责业务建模,包括建库建表、数据的导入和修改等。用户访问不同的数据库和表来获取数据。</p>
+<p>在这种场景下,可以为管理员赋予 ADMIN 权限或 GRANT 权限。对 RD 赋予对任意或指定数据库表的 CREATE、DROP、ALTER、LOAD、SELECT 权限。对 Client 赋予对任意或指定数据库表 SELECT 权限。同时,也可以通过创建不同的角色,来简化对多个用户的授权操作。</p>
 </li>
-<li><p class="first">ADMIN_PRIV 和 GRANT_PRIV 权限只能 <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ON</span> <span class="pre">*.*</span></code> 或 <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">FROM</span> <span class="pre">*.*</span></code>。因为对于指定的库和表,这两个权限没有意义。同时,拥有 GRANT_PRIV 其实等同于拥有 ADMIN_PRIV,因为 GRANT_PRIV 有授予任意权限的权限,请谨慎使用。</p>
+<li><p class="first">场景二</p>
+<p>一个集群内有多个业务,每个业务可能使用一个或多个数据。每个业务需要管理自己的用户。在这种场景下。管理员用户可以为每个数据库创建一个拥有 DATABASE 层级 GRANT 权限的用户。该用户仅可以对用户进行指定的数据库的授权。</p>
 </li>
 </ol>
 </div>
diff --git a/content/Docs/cn/getting-started/hit-the-rollup.html b/content/Docs/cn/getting-started/hit-the-rollup.html
index 65cf22c..bcc02fb 100644
--- a/content/Docs/cn/getting-started/hit-the-rollup.html
+++ b/content/Docs/cn/getting-started/hit-the-rollup.html
@@ -287,12 +287,12 @@ rollup_index4(k4, k6, k5, k1, k2, k3, k7)
 </pre></div>
 </div>
 <p>再看以下查询:</p>
-<p><code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">test</span> <span class="pre">WHERE</span> <span class="pre">k9</span> <span class="pre">IN</span> <span class="pre">(&quot;xxx&quot;,</span> <span class="pre">&quot;yyyy&quot;)</span> <span class="pre">AND</span> <span class="pre">k1</span> <span class="pre">=</span> <span class="pre">10;</span></code></p>
+<p><code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">test</span> <span class="pre">WHERE</span> <span class="pre">k4</span> <span class="pre">=1</span> <span class="pre">AND</span> <span class="pre">k5</span> <span class="pre">&gt;</span> <span class="pre">3;</span></code></p>
 <p>有 k4 以及 k5 的条件,检查 rollup_index3、rollup_index4 的第一列含有 k4,但是 rollup_index3 的第二列含有k5,所以匹配的前缀索引最长。</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>|   0:OlapScanNode                                                                                                                                                                                                                                                                                                                                                                                                
 |      TABLE: test                                                                                                                                                                                                                                                                                                                                                                                                  
 |      PREAGGREGATION: OFF. Reason: No AggregateInfo                                                                                                                                                                                                                                                                                                                                                                
-|      PREDICATES: `k4` &gt;= 1, `k5` &gt; 3                                                                                                                                                                                                                                                                                                                                                                              
+|      PREDICATES: `k4` = 1, `k5` &gt; 3                                                                                                                                                                                                                                                                                                                                                                              
 |      partitions=1/1                                                                                                                                                                                                                                                                                                                                                                                               
 |      rollup: rollup_index3                                                                                                                                                                                                                                                                                                                                                                                        
 |      buckets=10/10                                                                                                                                                                                                                                                                                                                                                                                                
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.html
index 8f6e00c..21771d5 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_add.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_add.html
index fe28e24..4cfc906 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_add.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_add.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_format.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_format.html
index d3f8913..c48ed1a 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_format.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_format.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_sub.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_sub.html
index 324235b..7ff6ac9 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_sub.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/date_sub.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html
index 5091e72..591b299 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
@@ -200,7 +201,7 @@
 <h1>datediff<a class="headerlink" href="#datediff" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="syntax">
 <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2>
-<p><code class="docutils literal notranslate"><span class="pre">DATETIME</span> <span class="pre">DATEDIFF(expr1,expr2)</span></code></p>
+<p><code class="docutils literal notranslate"><span class="pre">DATETIME</span> <span class="pre">DATEDIFF(DATETIME</span> <span class="pre">expr1,DATETIME</span> <span class="pre">expr2)</span></code></p>
 </div>
 <div class="section" id="description">
 <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/day.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/day.html
index f917b38..9f65e80 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/day.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/day.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayname.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayname.html
index a943026..f92b15e 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayname.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayname.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.html
index 40b5fb5..ee52a5f 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofweek.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofweek.html
index 93c6aa9..1f09245 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofweek.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofweek.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofyear.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofyear.html
index fc8c8da..ab821e0 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofyear.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/dayofyear.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_days.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_days.html
index 7eefac4..7d3a0ea 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_days.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_days.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.html
index f080b51..ae022d6 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/index.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/index.html
index f1040de..58a1656 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/index.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/index.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
@@ -294,6 +295,12 @@
 <li class="toctree-l2"><a class="reference internal" href="str_to_date.html#examples">Examples</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="timediff.html">timediff</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="timediff.html#syntax">Syntax</a></li>
+<li class="toctree-l2"><a class="reference internal" href="timediff.html#description">Description</a></li>
+<li class="toctree-l2"><a class="reference internal" href="timediff.html#examples">Examples</a></li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="to_days.html">to_days</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="to_days.html#syntax">Syntax</a></li>
 <li class="toctree-l2"><a class="reference internal" href="to_days.html#description">Description</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/month.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/month.html
index 562f164..9edb864 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/month.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/month.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/monthname.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/monthname.html
index 58c3b0c..c6b044e 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/monthname.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/monthname.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4 current"><a class="current reference internal" href="#">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/now.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/now.html
index 68647cb..99a3a3b 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/now.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/now.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/str_to_date.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/str_to_date.html
index d96f336..c4182b8 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/str_to_date.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/str_to_date.html
@@ -35,7 +35,7 @@
   <link rel="stylesheet" href="../../../../../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../../search.html" />
-    <link rel="next" title="to_days" href="to_days.html" />
+    <link rel="next" title="timediff" href="timediff.html" />
     <link rel="prev" title="now" href="now.html" /> 
 </head>
 
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
@@ -235,7 +236,7 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="to_days.html" class="btn btn-neutral float-right" title="to_days" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="timediff.html" class="btn btn-neutral float-right" title="timediff" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="now.html" class="btn btn-neutral float-left" title="now" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.html
similarity index 67%
copy from content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html
copy to content/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.html
index 5091e72..081d531 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>datediff &mdash; Doris Documentations 0.11.0 documentation</title>
+  <title>timediff &mdash; Doris Documentations 0.11.0 documentation</title>
   
 
   
@@ -35,8 +35,8 @@
   <link rel="stylesheet" href="../../../../../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../../search.html" />
-    <link rel="next" title="day" href="day.html" />
-    <link rel="prev" title="date_sub" href="date_sub.html" /> 
+    <link rel="next" title="to_days" href="to_days.html" />
+    <link rel="prev" title="str_to_date" href="str_to_date.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -98,7 +98,7 @@
 <li class="toctree-l4"><a class="reference internal" href="date_add.html">date_add</a></li>
 <li class="toctree-l4"><a class="reference internal" href="date_format.html">date_format</a></li>
 <li class="toctree-l4"><a class="reference internal" href="date_sub.html">date_sub</a></li>
-<li class="toctree-l4 current"><a class="current reference internal" href="#">datediff</a></li>
+<li class="toctree-l4"><a class="reference internal" href="datediff.html">datediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="day.html">day</a></li>
 <li class="toctree-l4"><a class="reference internal" href="dayname.html">dayname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="dayofmonth.html">dayofmonth</a></li>
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4 current"><a class="current reference internal" href="#">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
@@ -177,13 +178,13 @@
         
           <li><a href="index.html">日期函数</a> &raquo;</li>
         
-      <li>datediff</li>
+      <li>timediff</li>
     
     
       <li class="wy-breadcrumbs-aside">
         
             
-            <a href="../../../../../_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.md.txt" rel="nofollow"> View page source</a>
+            <a href="../../../../../_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.md.txt" rel="nofollow"> View page source</a>
           
         
       </li>
@@ -196,33 +197,47 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="datediff">
-<h1>datediff<a class="headerlink" href="#datediff" title="Permalink to this headline">¶</a></h1>
+  <div class="section" id="timediff">
+<h1>timediff<a class="headerlink" href="#timediff" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="syntax">
 <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2>
-<p><code class="docutils literal notranslate"><span class="pre">DATETIME</span> <span class="pre">DATEDIFF(expr1,expr2)</span></code></p>
+<p><code class="docutils literal notranslate"><span class="pre">TIME</span> <span class="pre">TIMEDIFF(DATETIME</span> <span class="pre">expr1,</span> <span class="pre">DATETIME</span> <span class="pre">expr2)</span></code></p>
 </div>
 <div class="section" id="description">
 <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
-<p>计算expr1 - expr2,结果精确到天。</p>
-<p>expr1 和 expr2 参数是合法的日期或日期/时间表达式。</p>
-<p>注释:只有值的日期部分参与计算。</p>
+<p>TIMEDIFF返回两个DATETIME之间的差值</p>
+<p>TIMEDIFF函数返回表示为时间值的expr1 - expr2的结果,返回值为TIME类型</p>
+<p>其结果被限制在从-838:59:59到838:59:59之间的TIME值范围内</p>
 </div>
 <div class="section" id="examples">
 <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">datediff</span><span class="p">(</span><span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2007-12-31 23:59:59&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span class="p">),</span> <span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2007-1 [...]
-<span class="o">+-----------------------------------------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">datediff</span><span class="p">(</span><span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2007-12-31 23:59:59&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span class="p">),</span> <span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2007-12-30&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span class="p">))</span> <span class="o">|</span>
-<span class="o">+-----------------------------------------------------------------------------------+</span>
-<span class="o">|</span>                                                                                 <span class="mi">1</span> <span class="o">|</span>
-<span class="o">+-----------------------------------------------------------------------------------+</span>
-
-<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">datediff</span><span class="p">(</span><span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2010-11-30 23:59:59&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span class="p">),</span> <span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2010-12-31&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span clas [...]
-<span class="o">+-----------------------------------------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">datediff</span><span class="p">(</span><span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2010-11-30 23:59:59&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span class="p">),</span> <span class="n">CAST</span><span class="p">(</span><span class="s1">&#39;2010-12-31&#39;</span> <span class="n">AS</span> <span class="n">DATETIME</span><span class="p">))</span> <span class="o">|</span>
-<span class="o">+-----------------------------------------------------------------------------------+</span>
-<span class="o">|</span>                                                                               <span class="o">-</span><span class="mi">31</span> <span class="o">|</span>
-<span class="o">+-----------------------------------------------------------------------------------+</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="n">TIMEDIFF</span><span class="p">(</span><span class="n">now</span><span class="p">(),</span><span class="n">utc_timestamp</span><span class="p">());</span>
+<span class="o">+----------------------------------+</span>
+<span class="o">|</span> <span class="n">timediff</span><span class="p">(</span><span class="n">now</span><span class="p">(),</span> <span class="n">utc_timestamp</span><span class="p">())</span> <span class="o">|</span>
+<span class="o">+----------------------------------+</span>
+<span class="o">|</span> <span class="mi">08</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span>                         <span class="o">|</span>
+<span class="o">+----------------------------------+</span>
+
+<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="n">TIMEDIFF</span><span class="p">(</span><span class="s1">&#39;2019-07-11 16:59:30&#39;</span><span class="p">,</span><span class="s1">&#39;2019-07-11 16:59:21&#39;</span><span class="p">);</span>
+<span class="o">+--------------------------------------------------------+</span>
+<span class="o">|</span> <span class="n">timediff</span><span class="p">(</span><span class="s1">&#39;2019-07-11 16:59:30&#39;</span><span class="p">,</span> <span class="s1">&#39;2019-07-11 16:59:21&#39;</span><span class="p">)</span> <span class="o">|</span>
+<span class="o">+--------------------------------------------------------+</span>
+<span class="o">|</span> <span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">09</span>                                               <span class="o">|</span>
+<span class="o">+--------------------------------------------------------+</span>
+
+<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="n">TIMEDIFF</span><span class="p">(</span><span class="s1">&#39;2019-01-01 00:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;2009-01-01 00:00:00&#39;</span><span class="p">);</span>
+<span class="o">+--------------------------------------------------------+</span>
+<span class="o">|</span> <span class="n">timediff</span><span class="p">(</span><span class="s1">&#39;2019-01-01 00:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;2009-01-01 00:00:00&#39;</span><span class="p">)</span> <span class="o">|</span>
+<span class="o">+--------------------------------------------------------+</span>
+<span class="o">|</span> <span class="mi">838</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="mi">59</span>                                              <span class="o">|</span>
+<span class="o">+--------------------------------------------------------+</span>
+
+<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="n">TIMEDIFF</span><span class="p">(</span><span class="s1">&#39;2019-01-01 00:00:00&#39;</span><span class="p">,</span> <span class="n">NULL</span><span class="p">);</span>
+<span class="o">+---------------------------------------+</span>
+<span class="o">|</span> <span class="n">timediff</span><span class="p">(</span><span class="s1">&#39;2019-01-01 00:00:00&#39;</span><span class="p">,</span> <span class="n">NULL</span><span class="p">)</span> <span class="o">|</span>
+<span class="o">+---------------------------------------+</span>
+<span class="o">|</span> <span class="n">NULL</span>                                  <span class="o">|</span>
+<span class="o">+---------------------------------------+</span>
 </pre></div>
 </div>
 </div>
@@ -236,10 +251,10 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="day.html" class="btn btn-neutral float-right" title="day" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="to_days.html" class="btn btn-neutral float-right" title="to_days" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="date_sub.html" class="btn btn-neutral float-left" title="date_sub" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="str_to_date.html" class="btn btn-neutral float-left" title="str_to_date" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/to_days.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/to_days.html
index d1c42e1..191ab86 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/to_days.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/to_days.html
@@ -36,7 +36,7 @@
     <link rel="index" title="Index" href="../../../../../genindex.html" />
     <link rel="search" title="Search" href="../../../../../search.html" />
     <link rel="next" title="unix_timestamp" href="unix_timestamp.html" />
-    <link rel="prev" title="str_to_date" href="str_to_date.html" /> 
+    <link rel="prev" title="timediff" href="timediff.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
@@ -231,7 +232,7 @@
         <a href="unix_timestamp.html" class="btn btn-neutral float-right" title="unix_timestamp" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="str_to_date.html" class="btn btn-neutral float-left" title="str_to_date" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="timediff.html" class="btn btn-neutral float-left" title="timediff" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.html
index 8f8ea66..9913dc0 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.html
index 6542bef..fcd8506 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/workofyear.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/workofyear.html
index 77ac670..3f04682 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/workofyear.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/workofyear.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/year.html b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/year.html
index 2ea6c17..acd34a6 100644
--- a/content/Docs/cn/sql-reference/sql-functions/date-time-functions/year.html
+++ b/content/Docs/cn/sql-reference/sql-functions/date-time-functions/year.html
@@ -110,6 +110,7 @@
 <li class="toctree-l4"><a class="reference internal" href="monthname.html">monthname</a></li>
 <li class="toctree-l4"><a class="reference internal" href="now.html">now</a></li>
 <li class="toctree-l4"><a class="reference internal" href="str_to_date.html">str_to_date</a></li>
+<li class="toctree-l4"><a class="reference internal" href="timediff.html">timediff</a></li>
 <li class="toctree-l4"><a class="reference internal" href="to_days.html">to_days</a></li>
 <li class="toctree-l4"><a class="reference internal" href="unix_timestamp.html">unix_timestamp</a></li>
 <li class="toctree-l4"><a class="reference internal" href="utc_timestamp.html">utc_timestamp</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-functions/string-functions/split_part.html b/content/Docs/cn/sql-reference/sql-functions/string-functions/split_part.html
index 7804cc1..4054117 100644
--- a/content/Docs/cn/sql-reference/sql-functions/string-functions/split_part.html
+++ b/content/Docs/cn/sql-reference/sql-functions/string-functions/split_part.html
@@ -211,18 +211,18 @@
 </div>
 <div class="section" id="examples">
 <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">split_part</span><span class="p">(</span><span class="s2">&quot;hello word&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">split_part</span><span class="p">(</span><span class="s2">&quot;hello world&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
 <span class="o">+----------------------------------+</span>
-<span class="o">|</span> <span class="n">split_part</span><span class="p">(</span><span class="s1">&#39;hello word&#39;</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">split_part</span><span class="p">(</span><span class="s1">&#39;hello world&#39;</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">|</span>
 <span class="o">+----------------------------------+</span>
 <span class="o">|</span> <span class="n">hello</span>                            <span class="o">|</span>
 <span class="o">+----------------------------------+</span>
 
-<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">split_part</span><span class="p">(</span><span class="s2">&quot;hello word&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">split_part</span><span class="p">(</span><span class="s2">&quot;hello world&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
 <span class="o">+----------------------------------+</span>
-<span class="o">|</span> <span class="n">split_part</span><span class="p">(</span><span class="s1">&#39;hello word&#39;</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">split_part</span><span class="p">(</span><span class="s1">&#39;hello world&#39;</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">|</span>
 <span class="o">+----------------------------------+</span>
-<span class="o">|</span> <span class="n">word</span>                             <span class="o">|</span>
+<span class="o">|</span> <span class="n">world</span>                             <span class="o">|</span>
 <span class="o">+----------------------------------+</span>
 
 <span class="n">mysql</span><span class="o">&gt;</span> <span class="n">select</span> <span class="n">split_part</span><span class="p">(</span><span class="s2">&quot;2019年7月8号&quot;</span><span class="p">,</span> <span class="s2">&quot;月&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
diff --git a/content/Docs/cn/sql-reference/sql-statements/index.html b/content/Docs/cn/sql-reference/sql-statements/index.html
index ea12f3f..4c7beb3 100644
--- a/content/Docs/cn/sql-reference/sql-statements/index.html
+++ b/content/Docs/cn/sql-reference/sql-statements/index.html
@@ -188,7 +188,6 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="insert.html">INSERT</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="insert.html#syntax">Syntax</a></li>
-<li class="toctree-l2"><a class="reference internal" href="insert.html#description">Description</a></li>
 <li class="toctree-l2"><a class="reference internal" href="insert.html#parameters">Parameters</a></li>
 <li class="toctree-l2"><a class="reference internal" href="insert.html#note">Note</a></li>
 <li class="toctree-l2"><a class="reference internal" href="insert.html#examples">Examples</a></li>
diff --git a/content/Docs/cn/sql-reference/sql-statements/insert.html b/content/Docs/cn/sql-reference/sql-statements/insert.html
index e7f6890..aa4c7c0 100644
--- a/content/Docs/cn/sql-reference/sql-statements/insert.html
+++ b/content/Docs/cn/sql-reference/sql-statements/insert.html
@@ -97,7 +97,6 @@
 <li class="toctree-l3"><a class="reference internal" href="drop-function.html">DROP FUNCTION</a></li>
 <li class="toctree-l3 current"><a class="current reference internal" href="#">INSERT</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="#syntax">Syntax</a></li>
-<li class="toctree-l4"><a class="reference internal" href="#description">Description</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#note">Note</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#examples">Examples</a></li>
@@ -189,14 +188,6 @@
 </pre></div>
 </div>
 </div>
-<div class="section" id="description">
-<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
-<p>INSERT 向一张表里插入数据。用户可以通过 VALUES 语法插入一条或者多条数据,或者通过一个查询来插入0条或者多条数据。</p>
-<p>partition是目标分区,如果指定目标分区,则只会导入符合目标分区的数据。如果没有指定,则默认值为这张表的所有分区。</p>
-<p>column是目标列,可以以任意的顺序存在。如果没有指定目标列,那么默认值是这张表的所有列。</p>
-<p>如果表中的某个列没有存在目标列中,那么这个列需要有默认值,否则 INSERT 就会执行失败。</p>
-<p>如果表达式的类型与目标列的类型不一致,那么会调用隐式类型转化,如果不能够进行转化,那么 INSERT 语句会报语法解析错误。</p>
-</div>
 <div class="section" id="parameters">
 <h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
 <blockquote>
diff --git a/content/_sources/Docs/cn/administrator-guide/load-data/broker-load-manual.md.txt b/content/_sources/Docs/cn/administrator-guide/load-data/broker-load-manual.md.txt
index fd1143a..4c21c21 100644
--- a/content/_sources/Docs/cn/administrator-guide/load-data/broker-load-manual.md.txt
+++ b/content/_sources/Docs/cn/administrator-guide/load-data/broker-load-manual.md.txt
@@ -1,43 +1,451 @@
 # Broker Load
 
-## properties
+Broker load 是一个异步的导入方式,支持的数据源取决于 Broker 进程支持的数据源。
 
-### strict mode
-broker load导入可以开启strict mode模式。开启方式为 ```properties ("strict_mode" = "true")``` 。默认的 strict mode为开启。
+用户需要通过 MySQL 协议 创建 Broker load 导入,并通过查看导入命令检查导入结果。
 
-*注意:strict mode 功能仅在新版本的broker load中有效,如果导入明确指定 ```"version" = "v1"``` 则没有此功能。*
+## 适用场景
 
-strict mode模式的意思是:对于导入过程中的列类型转换进行严格过滤。严格过滤的策略如下:
+* 源数据在 Broker 可以访问的存储系统中,如 HDFS。
+* 数据量在 几十到百GB 级别。
 
-1. 对于列类型转换来说,如果 strict\_mode 为true,则错误的数据将被filter。这里的错误数据是指:原始数据并不为空值,在参与列类型转换后结果为空值的这一类数据。
+## 名词解释
 
-2. 对于导入的某列包含函数变换的,导入的值和函数的结果一致,strict 对其不产生影响。(其中 strftime 等 broker 系统支持的函数也属于这类)。
+1. Frontend(FE):Doris 系统的元数据和调度节点。在导入流程中主要负责导入 plan 生成和导入任务的调度工作。
+2. Backend(BE):Doris 系统的计算和存储节点。在导入流程中主要负责数据的 ETL 和存储。
+3. Broker:Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力。
+4. Plan:导入执行计划,BE 会执行导入执行计划将数据导入到 Doris 系统中。
+ 
+## 基本原理
+
+用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。
+
+BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。
+
+```
+                 +
+                 | 1. user create broker load
+                 v
+            +----+----+
+            |         |
+            |   FE    |
+            |         |
+            +----+----+
+                 |
+                 | 2. BE etl and load the data
+    +--------------------------+
+    |            |             |
++---v---+     +--v----+    +---v---+
+|       |     |       |    |       |
+|  BE   |     |  BE   |    |   BE  |
+|       |     |       |    |       |
++---+-^-+     +---+-^-+    +--+-^--+
+    | |           | |         | |
+    | |           | |         | | 3. pull data from broker
++---v-+-+     +---v-+-+    +--v-+--+
+|       |     |       |    |       |
+|Broker |     |Broker |    |Broker |
+|       |     |       |    |       |
++---+-^-+     +---+-^-+    +---+-^-+
+    | |           | |          | |
++---v-+-----------v-+----------v-+-+
+|       HDFS/BOS/AFS cluster       |
+|                                  |
++----------------------------------+
+
+```
+
+## 基本操作
+
+### 创建导入
+
+Broker load 创建导入语句
+
+语法:
+
+```
+LOAD LABEL db_name.label_name 
+(data_desc, ...)
+WITH BROKER broker_name broker_properties
+[PROPERTIES (key1=value1, ... )]
+
+* data_desc:
+
+    DATA INFILE ('file_path', ...)
+    [NEGATIVE]
+    INTO TABLE tbl_name
+    [PARTITION (p1, p2)]
+    [COLUMNS TERMINATED BY separator ]
+    [(col1, ...)]
+    [SET (k1=f1(xx), k2=f2(xx))]
+
+* broker_properties: 
+
+    (key1=value1, ...)
+```
+示例:
+
+```
+LOAD LABEL db1.label1
+(
+    DATA INFILE("hdfs://abc.com:8888/user/palo/test/ml/file1")
+    INTO TABLE tbl1
+    COLUMNS TERMINATED BY ","
+    (tmp_c1,tmp_c2)
+    SET
+    (
+        id=tmp_c2,
+        name=tmp_c1)
+    ),
+    DATA INFILE("hdfs://abc.com:8888/user/palo/test/ml/file2")
+    INTO TABLE tbl2
+    COLUMNS TERMINATED BY ","
+    (col1, col2)
+)
+WITH BROKER 'broker'
+(
+    "username"="user",
+    "password"="pass"
+)
+PROPERTIES
+(
+    "timeout" = "3600"
+);
+
+```
+
+创建导入的详细语法执行 ```HELP BROKER LOAD``` 查看语法帮助。这里主要介绍 Broker load 的创建导入语法中参数意义和注意事项。
+
+#### Label
+
+导入任务的标识。每个导入任务,都有一个在单 database 内部唯一的 Label。Label 是用户在导入命令中自定义的名称。通过这个 Label,用户可以查看对应导入任务的执行情况。
+    
+Label 的另一个作用,是防止用户重复导入相同的数据。**强烈推荐用户同一批次数据使用相同的label。这样同一批次数据的重复请求只会被接受一次,保证了 At-Most-Once 语义**
+    
+当 Label 对应的导入作业状态为 CANCELLED 时,可以再次使用该 Label 提交导入作业。
+
+#### 数据描述类参数
+
+数据描述类参数主要指的是 Broker load 创建导入语句中的属于 ```data_desc``` 部分的参数。每组 ```data_desc ``` 主要表述了本次导入涉及到的数据源地址,ETL 函数,目标表及分区等信息。
 
-3. 对于导入的某列类型包含范围限制的,如果原始数据能正常通过类型转换,但无法通过范围限制的,strict 对其也不产生影响。
-	+ 例如:如果类型是 decimal(1,0), 原始数据为10,则属于可以通过类型转换但不在列声明的范围内。这种数据 strict 对其不产生影响。
+下面主要对数据描述类的部分参数详细解释:
 
-### strict mode 与 source data 的导入关系
++ 多表导入
+
+    Broker load 支持一次导入任务涉及多张表,每个 Broker load 导入任务可在多个 ``` data_desc ``` 声明多张表来实现多表导入。每个单独的 ```data_desc``` 还可以指定属于该表的数据源地址。Broker load 保证了单次导入的多张表之间原子性成功或失败。
+
++ negative
+
+    ```data_desc```中还可以设置数据取反导入。这个功能主要用于,当数据表中聚合列的类型都为 SUM 类型时。如果希望撤销某一批导入的数据。则可以通过 `negative` 参数当如同一批数据。Doris 会自动为这一批数据在聚合列上数据取反,以达到消除同一批数据的功能。
+    
++ partition
+
+    在 ```data_desc``` 中可以指定待导入表的 partition 信息,如果待导入数据不属于指定的 partition 则不会被导入。同时,不在指定 Partition 的数据会被认为是错误数据。
+       
+#### 导入作业参数
+
+导入作业参数主要指的是 Broker load 创建导入语句中的属于 ```opt_properties```部分的参数。导入作业参数是作用于整个导入作业的。
+
+下面主要对导入作业参数的部分参数详细解释:
+
++ timeout
+    
+    导入作业的超时时间(以秒为单位),用户可以在 ```opt_properties``` 中自行设置每个导入的超时时间。导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。Broker load 的默认导入超时时间为4小时。
+    
+    通常情况下,用户不需要手动设置导入任务的超时时间。当在默认超时时间内无法完成导入时,可以手动设置任务的超时时间。
+    
+    > 推荐超时时间
+    >
+    > 总文件大小(MB) / 用户 Doris 集群最慢导入速度(MB/s)  > timeout > ((总文件大小(MB) * 待导入的表及相关 Roll up 表的个数) / (10 * 导入并发数) )
+    
+    > 导入并发数见文档最后的导入系统配置说明,公式中的 10 为目前的导入限速 10MB/s。
+    
+    > 例如一个 1G 的待导入数据,待导入表包含3个 Rollup 表,当前的导入并发数为 3。则 timeout 的 最小值为 ```(1 * 1024 * 3 ) / (10 * 3) = 102 秒```
+    
+    由于每个 Doris 集群的机器环境不同且集群并发的查询任务也不同,所以用户 Doris 集群的最慢导入速度需要用户自己根据历史的导入任务速度进行推测。
+        
++ max\_filter\_ratio
+
+    导入任务的最大容忍率,默认为0容忍,取值范围是0~1。当导入的错误率超过该值,则导入失败。
+    
+    如果用户希望忽略错误的行,可以通过设置这个参数大于 0,来保证导入可以成功。
+    
+    计算公式为:
+    
+    ``` (dpp.abnorm.ALL / (dpp.abnorm.ALL + dpp.norm.ALL ) ) > max_filter_ratio ```
+    
+    ```dpp.abnorm.ALL``` 表示数据质量不合格的行数。如类型不匹配,列数不匹配,长度不匹配等等。
+    
+    ```dpp.norm.ALL``` 指的是导入过程中正确数据的条数。可以通过 ```SHOW LOAD``` 命令查询导入任务的正确数据量。
+    
+    原始文件的行数 = `dpp.abnorm.ALL + dpp.norm.ALL`
+    
++ exec\_mem\_limit
+
+    导入任务的内存使用上限。当导入任务使用的内存超过设定上限时,导入任务会被 CANCEL。默认为 2G,单位为字节。
+    
+    当导入出现 `Memory exceed limit` 错误时,可以适当调整这个参数,如调整为 4G、8G 等。
+
++ strict\_mode
+
+    Broker load 导入可以开启 strict mode 模式。开启方式为 ```properties ("strict_mode" = "true")``` 。默认的 strict mode 为开启。
+
+    strict mode 模式的意思是:对于导入过程中的列类型转换进行严格过滤。严格过滤的策略如下:
+
+    1. 对于列类型转换来说,如果 strict mode 为true,则错误的数据将被 filter。这里的错误数据是指:原始数据并不为空值,在参与列类型转换后结果为空值的这一类数据。
+
+    2. 对于导入的某列由函数变换生成时,strict mode 对其不产生影响。
+    
+    3. 对于导入的某列类型包含范围限制的,如果原始数据能正常通过类型转换,但无法通过范围限制的,strict mode 对其也不产生影响。例如:如果类型是 decimal(1,0), 原始数据为 10,则属于可以通过类型转换但不在列声明的范围内。这种数据 strict 对其不产生影响。
+
+#### strict mode 与 source data 的导入关系
 
 这里以列类型为 TinyInt 来举例
 
-注:当表中的列允许导入空值时
+>注:当表中的列允许导入空值时
 
-source data | source data example | string to int   | strict_mode        | load_data
-------------|---------------------|-----------------|--------------------|---------
-空值        | \N                  | N/A             | true or false      | NULL
-not null    | aaa or 2000         | NULL            | true               | filtered
-not null    | aaa                 | NULL            | false              | NULL
-not null    | 1                   | 1               | true or false      | correct data
+|source data | source data example | string to int   | strict_mode        | result|
+|------------|---------------------|-----------------|--------------------|---------|
+|空值        | \N                  | N/A             | true or false      | NULL|
+|not null    | aaa or 2000         | NULL            | true               | invalid data(filtered)|
+|not null    | aaa                 | NULL            | false              | NULL|
+|not null    | 1                   | 1               | true or false      | correct data|
 
 这里以列类型为 Decimal(1,0) 举例
  
-注:当表中的列允许导入空值时
+>注:当表中的列允许导入空值时
+
+|source data | source data example | string to int   | strict_mode        | result|
+|------------|---------------------|-----------------|--------------------|--------|
+|空值        | \N                  | N/A             | true or false      | NULL|
+|not null    | aaa                 | NULL            | true               | invalid data(filtered)|
+|not null    | aaa                 | NULL            | false              | NULL|
+|not null    | 1 or 10             | 1               | true or false      | correct data|
+
+> 注意:10 虽然是一个超过范围的值,但是因为其类型符合 decimal的要求,所以 strict mode对其不产生影响。10 最后会在其他 ETL 处理流程中被过滤。但不会被 strict mode 过滤。
+
+### 查看导入
+
+Broker load 导入方式由于是异步的,所以用户必须将创建导入的 Label 记录,并且在**查看导入命令中使用 Label 来查看导入结果**。查看导入命令在所有导入方式中是通用的,具体语法可执行 ```HELP SHOW LOAD``` 查看。
+
+示例:
+
+```
+mysql> show load order by createtime desc limit 1\G
+*************************** 1. row ***************************
+         JobId: 76391
+         Label: label1
+         State: FINISHED
+      Progress: ETL:N/A; LOAD:100%
+          Type: BROKER
+       EtlInfo: dpp.abnorm.ALL=15; dpp.norm.ALL=28133376
+      TaskInfo: cluster:N/A; timeout(s):10800; max_filter_ratio:5.0E-5
+      ErrorMsg: N/A
+    CreateTime: 2019-07-27 11:46:42
+  EtlStartTime: 2019-07-27 11:46:44
+ EtlFinishTime: 2019-07-27 11:46:44
+ LoadStartTime: 2019-07-27 11:46:44
+LoadFinishTime: 2019-07-27 11:50:16
+           URL: http://192.168.1.1:8040/api/_load_error_log?file=__shard_4/error_log_insert_stmt_4bb00753932c491a-a6da6e2725415317_4bb00753932c491a_a6da6e2725415317
+```
+
+下面主要介绍了查看导入命令返回结果集中参数意义:
+
++ JobId
+
+    导入任务的唯一ID,每个导入任务的 JobId 都不同,有系统自动生成。与 Label 不同的是,JobId永远不会相同,而 Label 则可以在导入任务失败后被复用。
+    
++ Label
+
+    导入任务的标识。
+    
++ State
+
+    导入任务当前所处的阶段。在 Broker load 导入过程中主要会出现 PENDING 和 LOADING 这两个导入中的状态。如果 Broker load 处于 PENDING 状态,则说明当前导入任务正在等待被执行;LOADING 状态则表示正在执行中。
+    
+    导入任务的最终阶段有两个:CANCELLED 和 FINISHED,当 Load job 处于这两个阶段时,导入完成。其中 CANCELLED 为导入失败,FINISHED 为导入成功。
+    
++ Progress
+
+    导入任务的进度描述。分为两种进度:ETL 和 LOAD,对应了导入流程的两个阶段 ETL 和 LOADING。目前 Broker load 由于只有 LOADING 阶段,所以 ETL 则会永远显示为 `N/A` 
+    
+    LOAD 的进度范围为:0~100%。
+    
+    ```LOAD 进度 = 当前完成导入的表个数 / 本次导入任务设计的总表个数 * 100%``` 
+    
+    **如果所有导入表均完成导入,此时 LOAD 的进度为 99%** 导入进入到最后生效阶段,整个导入完成后,LOAD 的进度才会改为 100%。
+    
+    导入进度并不是线性的。所以如果一段时间内进度没有变化,并不代表导入没有在执行。
+    
++ Type
+
+    导入任务的类型。Broker load 的 type 取值只有 BROKER。    
++ EtlInfo
+
+    主要显示了导入的数据量指标 ```dpp.norm.ALL 和 dpp.abnorm.ALL```。用户可以根据这两个指标验证当前导入任务的错误率是否超过 max\_filter\_ratio。
+    
++ TaskInfo
+
+    主要显示了当前导入任务参数,也就是创建 Broker load 导入任务时用户指定的导入任务参数,包括:`cluster`,`timeout` 和`max_filter_ratio`。
+    
++ ErrorMsg
+
+    在导入任务状态为CANCELLED,会显示失败的原因,显示分两部分:type 和 msg,如果导入任务成功则显示 ```N/A```。
+    
+    type的取值意义:
+    
+    ```
+    USER_CANCEL: 用户取消的任务
+    ETL_RUN_FAIL:在ETL阶段失败的导入任务
+    ETL_QUALITY_UNSATISFIED:数据质量不合格,也就是错误数据率超过了 max_filter_ratio
+    LOAD_RUN_FAIL:在LOADING阶段失败的导入任务
+    TIMEOUT:导入任务没在超时时间内完成
+    UNKNOWN:未知的导入错误
+    ```
+
++ CreateTime/EtlStartTime/EtlFinishTime/LoadStartTime/LoadFinishTime
+
+    这几个值分别代表导入创建的时间,ETL阶段开始的时间,ETL阶段完成的时间,Loading阶段开始的时间和整个导入任务完成的时间。
+    
+    Broker load 导入由于没有 ETL 阶段,所以其 EtlStartTime, EtlFinishTime, LoadStartTime 被设置为同一个值。
+    
+    导入任务长时间停留在 CreateTime,而 LoadStartTime 为 N/A 则说明目前导入任务堆积严重。用户可减少导入提交的频率。
+    
+    ```
+    LoadFinishTime - CreateTime = 整个导入任务所消耗时间
+    LoadFinishTime - LoadStartTime = 整个 Broker load 导入任务执行时间 = 整个导入任务所消耗时间 - 导入任务等待的时间
+    ```
+    
++ URL
+
+    导入任务的错误数据样例,访问 URL 地址既可获取本次导入的错误数据样例。当本次导入不存在错误数据时,URL 字段则为 N/A。
+
+### 取消导入
+
+当 Broker load 作业状态不为 CANCELLED 或 FINISHED 时,可以被用户手动取消。取消时需要指定待取消导入任务的 Label 。取消导入命令语法可执行 ```HELP CANCEL LOAD```查看。
+
+## 相关系统配置
+
+### FE 配置
+
+下面几个配置属于 Broker load 的系统级别配置,也就是作用于所有 Broker load 导入任务的配置。主要通过修改 ``` fe.conf```来调整配置值。
+
++ min\_bytes\_per\_broker\_scanner/max\_bytes\_per\_broker\_scanner/max\_broker\_concurrency
+        
+    前两个配置限制了单个 BE 处理的数据量的最小和最大值。第三个配置限制了一个作业的最大的导入并发数。最小处理的数据量,最大并发数,源文件的大小和当前集群 BE 的个数 **共同决定了本次导入的并发数**。
+    
+    ```
+    本次导入并发数 = Math.min(源文件大小/最小处理量,最大并发数,当前BE节点个数)
+    本次导入单个BE的处理量 = 源文件大小/本次导入的并发数
+    ```
+    
+    通常一个导入作业支持的最大数据量为 `max_bytes_per_broker_scanner * BE 节点数`。如果需要导入更大数据量,则需要适当调整 `max_bytes_per_broker_scanner` 参数的大小。
+    
+    默认配置:
+    
+     ```
+     参数名:min_bytes_per_broker_scanner, 默认 64MB,单位bytes。
+     参数名:max_broker_concurrency, 默认 10。
+     参数名:max_bytes_per_broker_scanner,默认 3G,单位bytes。
+     ```
+    
+## 最佳实践
+
+### 应用场景
+
+使用 Broker load 最适合的场景就是原始数据在文件系统(HDFS,BOS,AFS)中的场景。其次,由于 Broker load 是单次导入中唯一的一种异步导入的方式,所以如果用户在导入大文件中,需要使用异步接入,也可以考虑使用 Broker load。
+
+### 数据量
+
+这里仅讨论单个 BE 的情况,如果用户集群有多个 BE 则下面标题中的数据量应该乘以 BE 个数来计算。比如:如果用户有3个 BE,则 3G 以下(包含)则应该乘以 3,也就是 9G 以下(包含)。
+
++ 3G 以下(包含)
+
+    用户可以直接提交 Broker load 创建导入请求。
+    
++ 3G 以上
+
+    由于单个导入 BE 最大的处理量为 3G,超过 3G 的待导入文件就需要通过调整 Broker load 的导入参数来实现大文件的导入。
+    
+    1. 根据当前 BE 的个数和原始文件的大小修改单个 BE 的最大扫描量和最大并发数。
+
+        ```
+        修改 fe.conf 中配置
+        
+        max_broker_concurrency = BE 个数
+        当前导入任务单个 BE 处理的数据量 = 原始文件大小 / max_broker_concurrency
+        max_bytes_per_broker_scanner >= 当前导入任务单个 BE 处理的数据量
+        
+        比如一个 100G 的文件,集群的 BE 个数为 10 个
+        max_broker_concurrency = 10
+        max_bytes_per_broker_scanner >= 10G = 100G / 10
+        
+        ```
+        
+        修改后,所有的 BE 会并发的处理导入任务,每个 BE 处理原始文件的一部分。
+        
+        *注意:上述两个 FE 中的配置均为系统配置,也就是说其修改是作用于所有的 Broker load的任务的。*
+        
+    2. 在创建导入的时候自定义当前导入任务的 timeout 时间
+
+        ```
+        当前导入任务单个 BE 处理的数据量 / 用户 Doris 集群最慢导入速度(MB/s) >= 当前导入任务的 timeout 时间 >= 当前导入任务单个 BE 处理的数据量 / 10M/s
+        
+        比如一个 100G 的文件,集群的 BE 个数为 10个
+        timeout >= 1000s = 10G / 10M/s
+        
+        ```
+        
+    3. 当用户发现第二步计算出的 timeout 时间超过系统默认的导入最大超时时间 4小时
+
+        这时候不推荐用户将导入最大超时时间直接改大来解决问题。单个导入时间如果超过默认的导入最大超时时间4小时,最好是通过切分待导入文件并且分多次导入来解决问题。主要原因是:单次导入超过4小时的话,导入失败后重试的时间成本很高。
+        
+        可以通过如下公式计算出 Doris 集群期望最大导入文件数据量:
+        
+        ```
+        期望最大导入文件数据量 = 14400s * 10M/s * BE 个数
+        比如:集群的 BE 个数为 10个
+        期望最大导入文件数据量 = 14400 * 10M/s * 10 = 1440000M ≈ 1440G
+        
+        注意:一般用户的环境可能达不到 10M/s 的速度,所以建议超过 500G 的文件都进行文件切分,再导入。
+        
+        ```
+        
+### 完整例子
+
+数据情况:用户数据在 HDFS 中,文件地址为 hdfs://abc.com:8888/store_sales, hdfs 的认证用户名为 root, 密码为 password, 数据量大小约为 30G,希望导入到数据库 bj_sales 的表 store_sales 中。
+
+集群情况:集群的 BE 个数约为 3 个,Broker 名称均为 broker。
+
++ step1: 经过上述方法的计算,本次导入的单个 BE 导入量为 10G,则需要先修改 FE 的配置,将单个 BE 导入最大量修改为:
+
+    ```
+    max_bytes_per_broker_scanner = 10737418240
+
+    ```
+
++ step2: 经计算,本次导入的时间大约为 1000s,并未超过默认超时时间,可不配置导入自定义超时时间。
+
++ step3:创建导入语句
+
+    ```
+    LOAD LABEL bj_sales.store_sales_broker_load_01
+    (
+        DATA INFILE("hdfs://abc.com:8888/store_sales")
+        INTO TABLE store_sales
+    )
+    WITH BROKER 'broker'
+    ("username"="root", "password"="password");
+    ```
+
+## 常见问题
+
+* 导入报错:`Scan bytes per broker scanner exceed limit:xxx`
+
+    请参照文档中最佳实践部分,修改 FE 配置项 `max_bytes_per_broker_scanner` 和 `max_broker_concurrency`
+
+* 导入报错:`failed to send batch` 或 `TabletWriter add batch with unknown id`
+
+    请参照 [导入手册](./load-manual.md) 中 **通用系统配置** 中 **BE 配置**,适当修改 `tablet_writer_rpc_timeout_sec` 和 `streaming_load_rpc_max_alive_time_sec`。
 
-source data | source data example | string to int   | strict_mode        | load_data
-------------|---------------------|-----------------|--------------------|---------
-空值        | \N                  | N/A             | true or false      | NULL
-not null    | aaa                 | NULL            | true               | filtered
-not null    | aaa                 | NULL            | false              | NULL
-not null    | 1 or 10             | 1               | true or false      | correct data
 
-*注意:10 虽然是一个超过范围的值,但是因为其类型符合decimal的要求,所以strict mode对其不产生影响。10 最后会在其他 ETL 处理流程中被过滤。但不会被strict mode过滤。*
diff --git a/content/_sources/Docs/cn/administrator-guide/load-data/index.rst.txt b/content/_sources/Docs/cn/administrator-guide/load-data/index.rst.txt
index fe90825..f4807d1 100644
--- a/content/_sources/Docs/cn/administrator-guide/load-data/index.rst.txt
+++ b/content/_sources/Docs/cn/administrator-guide/load-data/index.rst.txt
@@ -4,6 +4,9 @@
 
 .. toctree::
     :maxdepth: 2
-    :glob:
 
-    *
+    load-manual.md
+    broker-load-manual.md
+    stream-load-manual.md
+    routine-load-manual.md
+    insert-into-manual.md
diff --git a/content/_sources/Docs/cn/administrator-guide/load-data/insert-into-manual.md.txt b/content/_sources/Docs/cn/administrator-guide/load-data/insert-into-manual.md.txt
new file mode 100644
index 0000000..c80b4f8
--- /dev/null
+++ b/content/_sources/Docs/cn/administrator-guide/load-data/insert-into-manual.md.txt
@@ -0,0 +1,137 @@
+# Insert Into
+
+Insert Into 语句的使用方式和 MySQL 等数据库中 Insert Into 语句的使用方式类似。但在 Doris 中,所有的数据写入都是一个独立的导入作业。所以这里将 Insert Into 也作为一种导入方式介绍。
+
+主要的 Insert Into 命令包含以下两种;
+
+* INSERT INTO tbl SELECT ...
+* INSERT INTO tbl (col1, col2, ...) VALUES (1, 2, ...), (1,3, ...);
+
+其中第二种命令仅用于 Demo,不要使用在测试或生产环境中。
+
+## 基本操作
+
+### 创建导入
+
+Insert Into 命令需要通过 MySQL 协议提交,创建导入请求会同步返回导入结果。
+
+语法:
+
+```
+INSERT INTO table_name [partition_info] [col_list] [query_stmt] [VALUES];
+```
+
+示例:
+
+```
+INSERT INTO tbl2 SELECT * FROM tbl3;
+INSERT INTO tbl1 VALUES ("qweasdzxcqweasdzxc"), ("a");
+```
+
+下面主要介绍创建导入语句中使用到的参数:
+
++ partition\_info
+
+    导入表的目标分区,如果指定目标分区,则只会导入符合目标分区的数据。如果没有指定,则默认值为这张表的所有分区。
+    
++ col\_list
+
+    导入表的目标列,可以以任意的顺序存在。如果没有指定目标列,那么默认值是这张表的所有列。如果待表中的某个列没有存在目标列中,那么这个列需要有默认值,否则 Insert Into 就会执行失败。
+
+    如果查询语句的结果列类型与目标列的类型不一致,那么会调用隐式类型转化,如果不能够进行转化,那么 Insert Into 语句会报语法解析错误。
+
++ query\_stmt
+
+    通过一个查询语句,将查询语句的结果导入到 Doris 系统中的其他表。查询语句支持任意 Doris 支持的 SQL 查询语法。
+
++ VALUES
+    
+    用户可以通过 VALUES 语法插入一条或者多条数据。
+    
+    *注意:VALUES 方式仅适用于导入几条数据作为导入 DEMO 的情况,完全不适用于任何测试和生产环境。Doris 系统本身也不适合单条数据导入的场景。建议使用 INSERT INTO SELECT 的方式进行批量导入。*
+    
+### 导入结果
+
+Insert Into 本身就是一个 SQL 命令,所以返回的行为同 SQL 命令的返回行为。
+
+如果导入失败,则返回语句执行失败。如果导入成功,则返回语句执行成功,还会附加返回一个 Label 字段。
+
+Label 是该 Insert Into 导入作业的标识。每个导入作业,都有一个在单 database 内部唯一的 Label。Insert Into 的 Label 则是由系统生成的,用户可以拿着这个 Label 通过查询导入命令异步获取导入状态。
+    
+## 相关系统配置
+
+### FE 配置
+
++ timeout
+
+    导入任务的超时时间(以秒为单位),导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。
+    
+    目前 Insert Into 并不支持自定义导入的 timeout 时间,所有 Insert Into 导入的超时时间是统一的,默认的 timeout 时间为1小时。如果导入的源文件无法再规定时间内完成导入,则需要调整 FE 的参数```insert_load_default_timeout_second```。
+    
+    同时 Insert Into 语句收到 Session 变量 `query_timeout` 的限制。可以通过 `SET query_timeout = xxx;` 来增加超时时间,单位是秒。
+    
+### Session 变量
+
++ enable\_insert\_strict
+
+    Insert Into 导入本身不能控制导入可容忍的错误率。用户只能通过 `enable_insert_strict` 这个 Session 参数用来控制。当该参数设置为 false 时,表示至少有一条数据被正确导入,则返回成功。当该参数设置为 false 时,表示如果有一条数据错误,则导入失败。默认为 false。可通过 `SET enable_insert_strict = true;` 来设置。 
+        
++ query\_timeout
+
+    Insert Into 本身也是一个 SQL 命令,因此 Insert Into 语句也受到 Session 变量 `query_timeout` 的限制。可以通过 `SET query_timeout = xxx;` 来增加超时时间,单位是秒。
+    
+## 最佳实践
+
+### 应用场景
+1. 用户希望仅导入几条假数据,验证一下 Doris 系统的功能。此时适合使用 INSERT INTO VALUS 的语法。
+2. 用户希望将已经在 Doris 表中的数据进行 ETL 转换并导入到一个新的 Doris 表中,此时适合使用 INSERT INTO SELECT 语法。
+3. 用户可以创建一种外部表,如 MySQL 外部表映射一张 MySQL 系统中的表。或者创建 Broker 外部表来映射 HDFS 上的数据文件。然后通过 INSERT INTO SELECT 语法将外部表中的数据导入到 Doris 表中存储。
+
+### 数据量
+Insert Into 对数据量没有限制,大数据量导入也可以支持。但 Insert Into 有默认的超时时间,用户预估的导入数据量过大,就需要修改系统的 Insert Into 导入超时时间。
+
+```
+导入数据量 = 36G 约≤ 3600s * 10M/s 
+其中 10M/s 是最大导入限速,用户需要根据当前集群情况计算出平均的导入速度来替换公式中的 10M/s
+```
+
+### 完整例子
+
+用户有一张表 store\_sales 在数据库 sales 中,用户又创建了一张表叫 bj\_store\_sales 也在数据库 sales 中,用户希望将 store\_sales 中销售记录在 bj 的数据导入到这张新建的表 bj\_store\_sales 中。导入的数据量约为:10G。
+
+```
+store_sales schema:
+(id, total, user_id, sale_timestamp, region)
+
+bj_store_sales schema:
+(id, total, user_id, sale_timestamp)
+
+```
+
+集群情况:用户当前集群的平均导入速度约为 5M/s
+
++ Step1: 判断是否要修改 Insert Into 的默认超时时间
+
+    ```
+    计算导入的大概时间
+    10G / 5M/s = 2000s
+    
+    修改 FE 配置
+    insert_load_default_timeout_second = 2000
+    ```
+    
++ Step2:创建导入任务
+
+    由于用户是希望将一张表中的数据做 ETL 并导入到目标表中,所以应该使用 Insert into query\_stmt 方式导入。
+
+    ```
+    INSERT INTO bj_store_sales SELECT id, total, user_id, sale_timestamp FROM store_sales where region = "bj";
+    ```
+
+## 常见问题
+
+* 查看错误行
+
+    由于 Insert Into 无法控制错误率,只能通过 `enable_insert_strict` 设置为完全容忍错误数据或完全忽略错误数据。因此如果 `enable_insert_strict` 设为 true,则 Insert Into 可能会失败。而如果 `enable_insert_strict` 设为 false,则可能出现仅导入了部分合格数据的情况。但无论以上哪种情况,Doris 目前无法提供查看不合格数据行的功能。因此用户无法通过 Insert Into 语句来查看具体的导入错误。
+
+    错误的原因通常如:源数据列长度超过目的数据列长度、列类型不匹配、分区不匹配、列顺序不匹配等等。当依然无法检查出问题时。目前只能建议先运行 Insert Into 语句中的 SELECT 命令将数据导出到一个文件中,然后在通过 Stream load 的方式导入这个文件,来查看具体的错误。
diff --git a/content/_sources/Docs/cn/administrator-guide/load-data/load-manual.md.txt b/content/_sources/Docs/cn/administrator-guide/load-data/load-manual.md.txt
new file mode 100644
index 0000000..6d8bff4
--- /dev/null
+++ b/content/_sources/Docs/cn/administrator-guide/load-data/load-manual.md.txt
@@ -0,0 +1,171 @@
+# 导入总览
+
+导入(Load)功能就是将用户的原始数据导入到 Doris 中。导入成功后,用户即可通过 Mysql 客户端查询数据。
+
+Doris 支持多种导入方式。建议先完整阅读本文档,再根据所选择的导入方式,查看各自导入方式的详细文档。
+
+## 基本概念
+
+1. Frontend(FE):Doris 系统的元数据和调度节点。在导入流程中主要负责导入规划生成和导入任务的调度工作。 
+2. Backend(BE):Doris 系统的计算和存储节点。在导入流程中主要负责数据的 ETL 和存储。
+3. Broker:Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力。
+4. 导入作业(Load job):导入作业读取用户提交的源数据,转换或清洗后,将数据导入到 Doris 系统中。导入完成后,数据即可被用户查询到。
+5. Label:所有导入作业都有一个 Label。Label 在一个数据库内唯一,可由用户指定或系统自动生成,用于标识一个导入作业。相同的 Label 仅可用于一个成功的导入作业。
+6. MySQL 协议/HTTP 协议:Doris 提供两种访问协议接口。 MySQL 协议和 HTTP 协议。部分导入方式使用 MySQL 协议接口提交作业,部分导入方式使用 HTTP 协议接口提交作业。
+
+## 导入方式
+
+为适配不同的数据导入需求,Doris 系统提供了5种不同的导入方式。每种导入方式支持不同的数据源,存在不同的使用方式(异步,同步)。
+
+所有导入方式都支持 csv 数据格式。其中 Broker load 还支持 parquet 数据格式。
+
+每个导入方式的说明请参阅单个导入方式的操作手册。
+
+* Broker load
+
+    通过 Broker 进程访问并读取外部数据源(如 HDFS)导入到 Doris。用户通过 Mysql 协议提交导入作业后,异步执行。通过 `SHOW LOAD` 命令查看导入结果。
+
+* Stream load
+
+    用户通过 HTTP 协议提交请求并携带原始数据创建导入。主要用于快速将本地文件或数据流中的数据导入到 Doris。导入命令同步返回导入结果。
+
+* Insert
+
+    类似 MySQL 中的 Insert 语句,Doris 提供 `INSERT INTO tbl SELECT ...;` 的方式从 Doris 的表中读取数据并导入到另一张表。或者通过 `INSERT INTO tbl VALUES(...);` 插入单条数据。
+
+* Multi load
+
+    用户通过 HTTP 协议提交多个导入作业。Multi Load 可以保证多个导入作业的原子生效。
+
+* Routine load
+
+    用户通过 MySQL 协议提交例行导入作业,生成一个常驻线程,不间断的从数据源(如 Kafka)中读取数据并导入到 Doris 中。
+
+## 基本原理
+
+### 导入执行流程
+
+```
++---------+      +---------+      +----------+      +-----------+
+|         |      |         |      |          |      |           |
+| PENDING +----->+   ETL   +----->+ LOADING  +----->+ FINISHED  |
+|         |      |         |      |          |      |           |
++---------+      +---+-----+      +----+-----+      +-----------+
+     |               |                 |
+     |               |                 |
+     |               |                 |
+     |               |                 |            +-----------+
+     |               |                 |            |           |
+     +---------------+-----------------+------------> CANCELLED |
+                                                    |           |
+                                                    +-----------+
+
+```
+
+如上图,一个导入作业主要经过上面4个阶段。
+
++ PENDING(非必须): 该阶段只有 Broker Load 才有。Broker Load 被用户提交后会短暂停留在这个阶段,直到被 FE 中的 Scheduler 调度。 其中 Scheduler 的调度间隔为5秒。 
+
++ ETL(非必须): 该阶段在版本 0.10.0(包含) 之前存在,主要是用于将原始数据按照用户声明的方式进行变换,并且过滤不满足条件的原始数据。在 0.10.0 后的版本,ETL 阶段不再存在,其中数据 transform 的工作被合并到 LOADING 阶段。
+
++ LOADING: 该阶段在版本 0.10.0(包含)之前主要用于将变换后的数据推到对应的 BE 存储中。在 0.10.0 后的版本,该阶段先对数据进行清洗和变换,然后将数据发送到 BE 存储中。当所有导入数据均完成导入后,进入等待生效过程,此时 Load job 依旧是 LOADING。
+
++ FINISHED: 在 Load job 涉及的所有数据均生效后,Load job 的状态变成 FINISHED。FINISHED 后导入的数据均可查询。
+
++ CANCELLED: 在作业 FINISH 的之前,作业都可能被取消并进入 CANCELLED 状态。如用户手动取消,或导入出现错误等。CANCELLED 也是 Load Job 的最终状态,不可被再次执行。
+
+上述阶段,除了 PENDING 到 LOADING 阶段是 Scheduler 轮训调度的,其他阶段之前的转移都是回调机制实现。
+
+### Label 和 原子性
+
+Doris 对所有导入方式提供原子性保证。既保证同一个导入作业内的数据,原子生效。不会出现仅导入部分数据的情况。
+
+同时,每一个导入作业都有一个由用户指定或者系统自动生成的 Label。Label 在一个 Database 内唯一。当一个 Label 对应的导入作业成功够,不可在重复使用该 Label 提交导入作业。如果 Label 对应的导入作业失败,则可以重复使用。
+
+用户可以通过 Label 机制,来保证 Label 对应的数据最多被导入一次,级 At-Most-Once 语义。
+
+
+## 同步和异步
+
+Doris 目前的导入方式分为两类,同步和异步。如果是外部程序接入 Doris 的导入功能,需要判断使用导入方式是哪类再确定接入逻辑。
+
+### 同步
+
+同步导入方式既用户创建导入任务,Doris 同步执行导入,执行完成后返回用户导入结果。用户可直接根据创建导入任务命令返回的结果同步判断导入是否成功。
+
+同步类型的导入方式有: **Stream load**,**Insert**。
+
+操作步骤:
+
+1. 用户(外部系统)创建导入任务。
+2. Doris 返回导入结果。
+3. 用户(外部系统)判断导入结果,如果失败可以再次提交导入任务。
+
+*注意:如果用户使用的导入方式是同步返回的,且导入的数据量过大,则创建导入请求可能会花很长时间才能返回结果。*
+
+### 异步
+异步导入方式既用户创建导入任务后,Doris 直接返回创建成功。**创建成功不代表数据已经导入**。导入任务会被异步执行,用户在创建成功后,需要通过轮询的方式发送查看命令查看导入作业的状态。如果创建失败,则可以根据失败信息,判断是否需要再次创建。
+
+异步类型的导入方式有:**Broker load**,**Multi load**。
+
+操作步骤:
+
+1. 用户(外部系统)创建导入任务。
+2. Doris 返回导入创建结果。
+3. 用户(外部系统)判断导入创建结果,成功则进入4,失败回到重试创建导入,回到1。
+4. 用户(外部系统)轮询查看导入任务,直到状态变为 FINISHED 或 CANCELLED。
+
+### 注意事项
+无论是异步还是同步的导入类型,都不应该在 Doris 返回导入失败或导入创建失败后,无休止的重试。**外部系统在有限次数重试并失败后,保留失败信息,大部分多次重试均失败问题都是使用方法问题或数据本身问题。**
+
+## 最佳实践
+
+用户在接入 Doris 导入时,一般会采用程序接入的方式,这样可以保证数据被定期的导入到 Doris 中。下面主要说明了程序接入 Doris 的最佳实践。
+
+1. 选择合适的导入方式:根据数据源所在位置选择导入方式。例如:如果原始数据存放在 HDFS 上,则使用 Broker load 导入。
+2. 确定导入方式的协议:如果选择了 Broker load 导入方式,则外部系统需要能使用 MySQL 协议定期提交和查看导入作业。
+3. 确定导入方式的类型:导入方式为同步或异步。比如 Broker load 为异步导入方式,则外部系统在提交创建导入后,必须调用查看导入命令,根据查看导入命令的结果来判断导入是否成功。
+4. 制定 Label 生成策略:Label 生成策略需满足,每一批次数据唯一且固定的原则。这样 Doris 就可以保证 At-Most-Once。
+5. 程序自身保证 At-Least-Once:外部系统需要保证自身的 At-Least-Once,这样就可以保证导入流程的 Exactly-Once。
+
+## 通用系统配置
+
+下面主要解释了几个所有导入方式均通用的系统级别的配置。
+
+### FE 配置
+
+以下配置属于 FE 的系统配置,可以通过修改 FE 的配置文件 ```fe.conf``` 来修改配置。
+
++ max\_load\_timeout\_second 和 min\_load\_timeout\_second
+    
+    这两个配置含义为:最大的导入超时时间,最小的导入超时时间,以秒为单位。默认的最大超时时间为3天, 默认的最小超时时间为1秒。用户自定义的导入超时时间不可超过这个范围。该参数通用于所有的导入方式。
+
++ desired\_max\_waiting\_jobs
+
+    在等待队列中的导入任务个数最大值,默认为100。当在 FE 中处于 PENDING 状态(也就是等待执行的)导入个数超过该值,新的导入请求则会被拒绝。
+    
+    此配置仅对异步执行的导入有效,当异步执行的导入等待个数超过默认值,则后续的创建导入请求会被拒绝。
+        
++ max\_running\_txn\_num\_per\_db
+
+    这个配置的含义是说,每个 Database 中正在运行的导入最大个数(不区分导入类型,统一计数)。当当前 Database 正在运行的导入个数超过最大值时,后续的导入不会被执行。如果是同步导入作业,则导入会被拒绝。如果是异步导入作业。则作业会在队列中等待。
+    
+### BE 配置
+
+以下配置属于 BE 的系统配置,可以通过修改 BE 的配置文件 ```be.conf``` 来修改配置。
+
++ push\_write\_mbytes\_per\_sec
+
+    BE 上单个 Tablet 的写入速度限制。默认是 10,即 10MB/s。通常 BE 对单个 Tablet 的最大写入速度,根据 Schema 以及系统的不同,大约在 10-30MB/s 之间。可以适当调整这个参数来控制导入速度。
+    
++ write\_buffer\_size
+
+    导入数据在 BE 上会先写入一个 memtable,memtable 达到阈值后才会写回磁盘。默认大小是 100MB。过小的阈值可能导致 BE 上存在大量的小文件。可以适当提高这个阈值减少文件数量。但过大的阈值可能导致 RPC 超时,见下面的配置说明。
+    
++ tablet\_writer\_rpc\_timeout\_sec
+
+    导入过程中,发送一个 Batch(1024行)的 RPC 超时时间。默认 600 秒。因为该 RPC 可能涉及多个 memtable 的写盘操作,所以可能会因为写盘导致 RPC 超时,可以适当调整这个超时时间来减少超时错误(如 `send batch fail` 错误)。同时,如果调大 `write_buffer_size` 配置,也需要适当调大这个参数。
+
++ streaming\_load\_rpc\_max\_alive\_time\_sec
+
+    在导入过程中,Doris 会为每一个 Tablet 开启一个 Writer,用于接收数据并写入。这个参数指定了 Writer 的等待超时时间。如果在这个时间内,Writer 没有收到任何数据,则 Writer 会被自动销毁。当系统处理速度较慢时,Writer 可能长时间接收不到下一批数据,导致导入报错:`TabletWriter add batch with unknown id`。此时可适当增大这个配置。默认为 600 秒。
diff --git a/content/_sources/Docs/cn/administrator-guide/load-data/routine-load-manual.md.txt b/content/_sources/Docs/cn/administrator-guide/load-data/routine-load-manual.md.txt
index 2642285..f25b247 100644
--- a/content/_sources/Docs/cn/administrator-guide/load-data/routine-load-manual.md.txt
+++ b/content/_sources/Docs/cn/administrator-guide/load-data/routine-load-manual.md.txt
@@ -1,4 +1,4 @@
-# 例行导入
+# Routine Load
 
 例行导入(Routine Load)功能为用户提供了一种自动从指定数据源进行数据导入的功能。
 
diff --git a/content/_sources/Docs/cn/administrator-guide/load-data/stream-load-manual.md.txt b/content/_sources/Docs/cn/administrator-guide/load-data/stream-load-manual.md.txt
new file mode 100644
index 0000000..444fdac
--- /dev/null
+++ b/content/_sources/Docs/cn/administrator-guide/load-data/stream-load-manual.md.txt
@@ -0,0 +1,262 @@
+# Stream load
+
+Stream load 是一个同步的导入方式,用户通过发送 HTTP 协议发送请求将本地文件或数据流导入到 Doris 中。Stream load 同步执行导入并返回导入结果。用户可直接通过请求的返回体判断本次导入是否成功。
+
+Stream load 主要适用于导入本地文件,或通过程序导入数据流中的数据。
+
+## 基本原理
+
+下图展示了 Stream load 的主要流程,省略了一些导入细节。
+
+```
+                         ^      +
+                         |      |
+                         |      | 1A. User submit load to FE
+                         |      |
+                         |   +--v-----------+
+                         |   | FE           |
+5. Return result to user |   +--+-----------+
+                         |      |
+                         |      | 2. Redirect to BE
+                         |      |
+                         |   +--v-----------+
+                         +---+Coordinator BE| 1B. User submit load to BE
+                             +-+-----+----+-+
+                               |     |    |
+                         +-----+     |    +-----+
+                         |           |          | 3. Distrbute data
+                         |           |          |
+                       +-v-+       +-v-+      +-v-+
+                       |BE |       |BE |      |BE |
+                       +---+       +---+      +---+
+```
+
+Stream load 中,Doris 会选定一个节点作为 Coordinator 节点。该节点负责接数据并分发数据到其他数据节点。
+
+用户通过 HTTP 协议提交导入命令。如果提交到 FE,则 FE 会通过 HTTP redirect 指令将请求转发给某一个 BE。用户也可以直接提交导入命令给某一指定 BE。
+
+导入的最终结果由 Coordinator BE 返回给用户。
+
+## 基本操作
+### 创建导入
+
+Stream load 通过 HTTP 协议提交和传输数据。这里通过 `curl` 命令展示如何提交导入。
+
+用户也可以通过其他 HTTP client 进行操作。
+
+```
+curl --location-trusted -u user:passwd [-H ""...] -T data.file -XPUT http://fe_host:http_port/api/{db}/{table}/_stream_load
+
+Header 中支持如下属性:
+label, column_separator, columns, where, max_filter_ratio, partitions
+格式为: -H "key1:value1"
+```
+
+示例:
+
+```
+curl --location-trusted -u root -T date -H "label:123" http://abc.com:8030/api/test/date/_stream_load
+```
+创建导入的详细语法帮助执行 ```HELP STREAM LOAD``` 查看, 下面主要介绍创建 Stream load 的部分参数意义。
+
+#### 签名参数
+
++ user/passwd
+
+    Stream load 由于创建导入的协议使用的是 HTTP 协议,通过 Basic access authentication 进行签名。Doris 系统会根据签名验证用户身份和导入权限。
+    
+#### 导入任务参数
+
+Stream load 由于使用的是 HTTP 协议,所以所有导入任务有关的参数均设置在 Header 中。下面主要介绍了 Stream load 导入任务参数的部分参数意义。
+
++ label
+
+    导入任务的标识。每个导入任务,都有一个在单 database 内部唯一的 label。label 是用户在导入命令中自定义的名称。通过这个 label,用户可以查看对应导入任务的执行情况。
+    
+    label 的另一个作用,是防止用户重复导入相同的数据。**强烈推荐用户同一批次数据使用相同的 label。这样同一批次数据的重复请求只会被接受一次,保证了 At-Most-Once**
+    
+    当 label 对应的导入作业状态为 CANCELLED 时,该 label 可以再次被使用。
+    
++ max\_filter\_ratio
+
+    导入任务的最大容忍率,默认为0容忍,取值范围是0~1。当导入的错误率超过该值,则导入失败。
+    
+    如果用户希望忽略错误的行,可以通过设置这个参数大于 0,来保证导入可以成功。
+    
+    计算公式为:
+    
+    ``` (dpp.abnorm.ALL / (dpp.abnorm.ALL + dpp.norm.ALL ) ) > max_filter_ratio ```
+    
+    ```dpp.abnorm.ALL``` 表示数据质量不合格的行数。如类型不匹配,列数不匹配,长度不匹配等等。
+    
+    ```dpp.norm.ALL``` 指的是导入过程中正确数据的条数。可以通过 ```SHOW LOAD``` 命令查询导入任务的正确数据量。
+    
+    原始文件的行数 = `dpp.abnorm.ALL + dpp.norm.ALL`
+    
++ where 
+
+    导入任务指定的过滤条件。Stream load 支持对原始数据指定 where 语句进行过滤。被过滤的数据将不会被导入,也不会参与 filter ratio 的计算,但会被计入```num_rows_unselected```。 
+    
++ partition
+
+    待导入表的 Partition 信息,如果待导入数据不属于指定的 Partition 则不会被导入。这些数据将计入 ```dpp.abnorm.ALL ```
+    
++ columns
+
+    待导入数据的函数变换配置,目前 Stream load 支持的函数变换方法包含列的顺序变化以及表达式变换,其中表达式变换的方法与查询语句的一致。
+    
+    ```
+    列顺序变换例子:原始数据有两列,目前表也有两列(c1,c2)但是原始文件的第一列对应的是目标表的c2列, 而原始文件的第二列对应的是目标表的c1列,则写法如下:
+    columns: c2,c1
+    
+    表达式变换例子:原始文件有两列,目标表也有两列(c1,c2)但是原始文件的两列均需要经过函数变换才能对应目标表的两列,则写法如下:
+    columns: tmp_c1, tmp_c2, c1 = year(tmp_c1), c2 = mouth(tmp_c2)
+    其中 tmp_*是一个占位符,代表的是原始文件中的两个原始列。
+    ```
+    
+### 返回结果
+
+由于 Stream load 是一种同步的导入方式,所以导入的结果会通过创建导入的返回值直接返回给用户。
+
+示例:
+
+```
+{
+    "TxnId": 1003,
+    "Label": "b6f3bc78-0d2c-45d9-9e4c-faa0a0149bee",
+    "Status": "Success",
+    "Message": "OK",
+    "NumberTotalRows": 1000000,
+    "NumberLoadedRows": 1000000,
+    "NumberFilteredRows": 1,
+    "NumberUnselectedRows": 0,
+    "LoadBytes": 40888898,
+    "LoadTimeMs": 2144,
+    "ErrorURL": "http://192.168.1.1:8042/api/_load_error_log?file=__shard_0/error_log_insert_stmt_db18266d4d9b4ee5-abb00ddd64bdf005_db18266d4d9b4ee5_abb00ddd64bdf005"
+}
+```
+
+下面主要解释了 Stream load 导入结果参数:
+
++ TxnId:导入的事务ID。用户可不感知。
+
++ Label:导入 Label。由用户指定或系统自动生成。
+    
++ Status:导入完成状态。
+    
+    "Success":表示导入成功。
+    
+    "Publish Timeout":该状态也表示导入已经完成,只是数据可能会延迟可见,无需重试。
+    
+    "Label Already Exists":Label 重复,需更换 Label。
+    
+    "Fail":导入失败。
+
++ Message:导入错误信息。
+
++ NumberTotalRows:导入总处理的行数。
+
++ NumberLoadedRows:成功导入的行数。
+
++ NumberFilteredRows:数据质量不合格的行数。
+
++ NumberUnselectedRows:被 where 条件过滤的行数。
+
++ LoadBytes:导入的字节数。
+
++ LoadTimeMs:导入完成时间。单位毫秒。
+
++ ErrorURL:如果有数据质量问题,通过访问这个 URL 查看具体错误行。
+
+> 注意:由于 Stream load 是同步的导入方式,所以并不会在 Doris 系统中记录导入信息,用户无法异步的通过查看导入命令看到 Stream load。使用时需监听创建导入请求的返回值获取导入结果。
+
+### 取消导入
+
+用户无法手动取消 Stream load,Stream load 在超时或者导入错误后会被系统自动取消。
+
+## 相关系统配置
+
+### FE 配置
+
++ stream\_load\_default\_timeout\_second
+
+    导入任务的超时时间(以秒为单位),导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。
+    
+    目前 Stream load 并不支持自定义导入的 timeout 时间,所有 Stream load 导入的超时时间是统一的,默认的 timeout 时间为300秒。如果导入的源文件无法再规定时间内完成导入,则需要调整 FE 的参数```stream_load_default_timeout_second```。
+
+### BE 配置
+
++ streaming\_load\_max\_mb
+
+    Stream load 的最大导入大小,默认为 10G,单位是 MB。如果用户的原始文件超过这个值,则需要调整 BE 的参数 ```streaming_load_max_mb```。
+    
+## 最佳实践
+
+### 应用场景
+
+使用 Stream load 的最合适场景就是原始文件在内存中,或者在磁盘中。其次,由于 Stream load 是一种同步的导入方式,所以用户如果希望用同步方式获取导入结果,也可以使用这种导入。
+
+### 数据量
+
+由于 Stream load 的原理是由 BE 发起的导入并分发数据,建议的导入数据量在 1G 到 10G 之间。由于默认的最大 Stream load 导入数据量为 10G,所以如果要导入超过 10G 的文件需要修改 BE 的配置 ```streaming_load_max_mb```
+
+```
+比如:待导入文件大小为15G
+修改 BE 配置 streaming_load_max_mb 为 16000 即可。
+```
+
+Stream load 的默认超时为 300秒,按照 Doris 目前最大的导入限速来看,约超过 3G 的文件就需要修改导入任务默认超时时间了。
+    
+```
+导入任务超时时间 = 导入数据量 / 10M/s (具体的平均导入速度需要用户根据自己的集群情况计算)
+例如:导入一个 10G 的文件
+timeout = 1000s 等于 10G / 10M/s
+```
+    
+### 完整例子
+数据情况: 数据在发送导入请求端的本地磁盘路径 /home/store_sales 中,导入的数据量约为 15G,希望导入到数据库 bj_sales 的表 store_sales 中。
+
+集群情况:Stream load 的并发数不受集群大小影响。
+
++ step1: 导入文件大小是否超过默认的最大导入大小10G
+
+    ```
+    修改 BE conf
+    streaming_load_max_mb = 16000
+    ```
++ step2: 计算大概的导入时间是否超过默认 timeout 值
+
+    ```
+    导入时间 ≈ 15000 / 10 = 1500s
+    超过了默认的 timeout 时间,需要修改 FE 的配置
+    stream_load_default_timeout_second = 1500
+    ```
+    
++ step3:创建导入任务
+
+    ```
+    curl --location-trusted -u user:password -T /home/store_sales -H "label:abc" http://abc.com:8000/api/bj_sales/store_sales/_stream_load
+    ```
+
+## 常见问题
+
+* Label Already Exists
+
+    Stream load 的 Label 重复排查步骤如下:
+
+    1. 是否和其他导入方式已经存在的导入 Label 冲突:
+
+       由于 Doris 系统中导入的 Label 不区分导入方式,所以存在其他导入方式使用了相同 Label 的问题。
+    
+       通过 ```SHOW LOAD WHERE LABEL = “xxx”```,其中 xxx 为重复的 Label 字符串,查看是否已经存在一个 FINISHED 导入的 Label 和用户申请创建的 Label 相同。
+    
+    2. 是否 Stream load 同一个作业被重复提交了
+
+       由于 Stream load 是 HTTP 协议提交创建导入任务,一般各个语言的 HTTP Client 均会自带请求重试逻辑。Doris 系统在接受到第一个请求后,已经开始操作 Stream load,但是由于没有及时返回给 Client 端结果, Client 端会发生再次重试创建请求的情况。这时候 Doris 系统由于已经在操作第一个请求,所以第二个请求已经就会被报 Label Already Exists 的情况。
+    
+       排查上述可能的方法:使用 Label 搜索 FE Master 的日志,看是否存在同一个 Label 出现了两次 ```redirect load action to destination= ``` 的情况。如果有就说明,请求被 Client 端重复提交了。
+    
+       建议用户根据当前请求的数据量,计算出大致导入的时间,并根据导入超时时间改大 Client 端的请求超时时间,避免请求被 Client 端多次提交。
+
+
+
diff --git a/content/_sources/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.md.txt b/content/_sources/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.md.txt
index 020a74f..0051d8a 100644
--- a/content/_sources/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.md.txt
+++ b/content/_sources/Docs/cn/administrator-guide/operation/tablet-repair-and-balance.md.txt
@@ -134,6 +134,8 @@ TabletChecker 作为常驻的后台进程,会定期检查所有分片的状态
 
     删除一个非 Colocation Group 中指定的副本分布 BE 节点上的副本。
 
+Doris 在选择副本节点时,不会将同一个 Tablet 的副本部署在同一个 host 的不同 BE 上。保证了即使同一个 host 上的所有 BE 都挂掉,也不会造成全部副本丢失。
+
 ### 调度优先级
 
 TabletScheduler 里等待被调度的分片会根据状态不同,赋予不同的优先级。优先级高的分片将会被优先调度。目前有以下几种优先级。
@@ -189,6 +191,8 @@ TabletScheduler 里等待被调度的分片会根据状态不同,赋予不同
 
 Doris 会自动进行集群内的副本均衡。均衡的主要思想,是对某些分片,先在低负载的节点上创建一个副本,然后再删除这些分片在高负载节点上的副本。同时,因为不同存储介质的存在,在同一个集群内的不同 BE 节点上,可能存在或不存在一种或两种存储介质。我们要求存储介质为 A 的分片在均衡后,尽量依然存储在存储介质 A 中。所以我们根据存储介质,对集群的 BE 节点进行划分。然后针对不同的存储介质的 BE 节点集合,进行负载均衡调度。
 
+同样,副本均衡会保证不会将同一个 Tablet 的副本部署在同一个 host 的 BE 上。
+
 ### BE 节点负载
 
 我们用 ClusterLoadStatistics(CLS)表示一个 cluster 中各个 Backend 的负载均衡情况。TabletScheduler 根据这个统计值,来触发集群均衡。我们当前通过 **磁盘使用率** 和 **副本数量** 两个指标,为每个BE计算一个 loadScore,作为 BE 的负载分数。分数越高,表示该 BE 的负载越重。
@@ -635,4 +639,9 @@ TabletScheduler 在每轮调度时,都会通过 LoadBalancer 来选择一定
 
 * 在某些情况下,默认的副本修复和均衡策略可能会导致网络被打满(多发生在千兆网卡,且每台 BE 的磁盘数量较多的情况下)。此时需要调整一些参数来减少同时进行的均衡和修复任务数。
 
+* 目前针对 Colocate Table 的副本的均衡策略无法保证同一个 Tablet 的副本不会分布在同一个 host 的 BE 上。但 Colocate Table 的副本的修复策略会检测到这种分布错误并校正。但可能会出现,校正后,均衡策略再次认为副本不均衡而重新均衡。从而导致在两种状态间不停交替,无法使 Colocate Group 达成稳定。针对这种情况,我们建议在使用 Colocate 属性时,尽量保证集群是同构的,以减小副本分布在同一个 host 上的概率。
+
+
+
+
 
diff --git a/content/_sources/Docs/cn/administrator-guide/privilege.md.txt b/content/_sources/Docs/cn/administrator-guide/privilege.md.txt
index a59c675..33eaeba 100644
--- a/content/_sources/Docs/cn/administrator-guide/privilege.md.txt
+++ b/content/_sources/Docs/cn/administrator-guide/privilege.md.txt
@@ -37,9 +37,9 @@ Doris 新的权限管理系统参照了 Mysql 的权限管理机制,做到了
 9. 查看已创建的角色:SHOW ROELS
 10. 查看用户属性:SHOW PROPERTY
 
-关于以上命令的详细帮助,可以通过 mysql 客户端连接 Doris 后,使用 help + command 获取帮助。如 `help create user`。
+关于以上命令的详细帮助,可以通过 mysql 客户端连接 Doris 后,使用 help + command 获取帮助。如 `HELP CREATE USER`。
 
-## 权限说明
+## 权限类型
 
 Doris 目前支持以下几种权限
 
@@ -61,15 +61,53 @@ Doris 目前支持以下几种权限
 
 5. Alter_priv
 
-   对数据库、表的更改权限。包括重命名 库/表、添加/删除/变更 列等操作。
+    对数据库、表的更改权限。包括重命名 库/表、添加/删除/变更 列、添加/删除 分区等操作。
 
 6. Create_priv
 
-   创建数据库、表的权限。
+    创建数据库、表、视图的权限。
 
 7. Drop_priv
 
-    删除数据库、表的权限。
+    删除数据库、表、视图的权限。
+
+## 权限层级
+
+同时,根据权限适用范围的不同,我们将权限分为以下三个层级:
+
+1. GLOBAL LEVEL:全局权限。即通过 GRANT 语句授予的 `*.*` 上的权限。被授予的权限适用于任意数据库中的任意表。
+2. DATABASE LEVEL:数据库级权限。即通过 GRANT 语句授予的 `db.*` 上的权限。被授予的权限适用于指定数据库中的任意表。
+3. TABLE LEVEL:表级权限。即通过 GRANT 语句授予的 `db.tbl` 上的权限。被授予的权限适用于指定数据库中的指定表。
+
+    
+## ADMIN/GRANT 权限说明
+
+ADMIN\_PRIV 和 GRANT\_PRIV 权限同时拥有**“授予权限”**的权限,较为特殊。这里对和这两个权限相关的操作逐一说明。
+
+1. CREATE USER
+
+    * 拥有 ADMIN 权限,或任意层级的 GRANT 权限的用户可以创建新用户。
+
+2. DROP USER
+
+    * 只有 ADMIN 权限可以删除用户。
+
+3. CREATE/DROP ROLE
+
+    * 只有 ADMIN 权限可以创建角色。
+
+4. GRANT/REVOKE
+
+    * 拥有 ADMIN 权限,或者 GLOBAL 层级 GRANT 权限的用户,可以授予或撤销任意用户的权限。
+    * 拥有 DATABASE 层级 GRANT 权限的用户,可以授予或撤销任意用户对指定数据库的权限。
+    * 拥有 TABLE 层级 GRANT 权限的用户,可以授予或撤销任意用户对指定数据库中指定表的权限。
+    
+5. SET PASSWORD
+
+    * 拥有 ADMIN 权限,或者 GLOBAL 层级 GRANT 权限的用户,可以设置任意用户的密码。
+    * 普通用户可以设置自己对应的 UserIdentity 的密码。自己对应的 UserIdentity 可以通过 `SELECT CURRENT_USER();` 命令查看。
+    * 拥有非 GLOBAL 层级 GRANT 权限的用户,不可以设置已存在用户的密码,仅能在创建用户时指定密码。
+
 
 ## 一些说明
 
@@ -116,8 +154,6 @@ Doris 目前支持以下几种权限
         CREATE USER cmy@'192.%' IDENTIFIED BY "abcde";
         
         在优先级上,'192.%' 优先于 '%',因此,当用户 cmy 从 192.168.1.1 这台机器尝试使用密码 '12345' 登陆 Doris 会被拒绝。
-        
-    3. 权限冲突
 
 5. 忘记密码
 
@@ -129,6 +165,24 @@ Doris 目前支持以下几种权限
 
 6. 任何用户都不能重置 root 用户的密码,除了 root 用户自己。
 
-7. 拥有 GRANT 权限的用户可以设置密码。如果没有 GRANT 用户,则用户仅可以设置自己对应的 UserIdentity 的密码。自己对应的 UserIdentity 可以通过 `SELECT CURRENT_USER();` 命令查看。
+7. ADMIN\_PRIV 权限只能在 GLOBAL 层级授予或撤销。
+
+8. 拥有 GLOBAL 层级 GRANT_PRIV 其实等同于拥有 ADMIN\_PRIV,因为该层级的 GRANT\_PRIV 有授予任意权限的权限,请谨慎使用。
+
+## 最佳实践
+
+这里举例一些 Doris 权限系统的使用场景。
+
+1. 场景一
 
-8. ADMIN\_PRIV 和 GRANT\_PRIV 权限只能 `GRANT ON *.*` 或 `REVOKE FROM *.*`。因为对于指定的库和表,这两个权限没有意义。同时,拥有 GRANT_PRIV 其实等同于拥有 ADMIN\_PRIV,因为 GRANT\_PRIV 有授予任意权限的权限,请谨慎使用。
+    Doris 集群的使用者分为管理员(Admin)、开发工程师(RD)和用户(Client)。其中管理员拥有整个集群的所有权限,主要负责集群的搭建、节点管理等。开发工程师负责业务建模,包括建库建表、数据的导入和修改等。用户访问不同的数据库和表来获取数据。
+    
+    在这种场景下,可以为管理员赋予 ADMIN 权限或 GRANT 权限。对 RD 赋予对任意或指定数据库表的 CREATE、DROP、ALTER、LOAD、SELECT 权限。对 Client 赋予对任意或指定数据库表 SELECT 权限。同时,也可以通过创建不同的角色,来简化对多个用户的授权操作。
+    
+2. 场景二
+
+    一个集群内有多个业务,每个业务可能使用一个或多个数据。每个业务需要管理自己的用户。在这种场景下。管理员用户可以为每个数据库创建一个拥有 DATABASE 层级 GRANT 权限的用户。该用户仅可以对用户进行指定的数据库的授权。
+
+
+
+    
diff --git a/content/_sources/Docs/cn/getting-started/hit-the-rollup.md.txt b/content/_sources/Docs/cn/getting-started/hit-the-rollup.md.txt
index bf4739a..6ef2519 100644
--- a/content/_sources/Docs/cn/getting-started/hit-the-rollup.md.txt
+++ b/content/_sources/Docs/cn/getting-started/hit-the-rollup.md.txt
@@ -127,7 +127,7 @@ SELECT * FROM test WHERE k1 = 1 AND k2 > 3;
 
 再看以下查询:
 
-`SELECT * FROM test WHERE k9 IN ("xxx", "yyyy") AND k1 = 10;`
+`SELECT * FROM test WHERE k4 =1 AND k5 > 3;`
 	
 有 k4 以及 k5 的条件,检查 rollup_index3、rollup_index4 的第一列含有 k4,但是 rollup_index3 的第二列含有k5,所以匹配的前缀索引最长。
 
@@ -135,7 +135,7 @@ SELECT * FROM test WHERE k1 = 1 AND k2 > 3;
 |   0:OlapScanNode                                                                                                                                                                                                                                                                                                                                                                                                
 |      TABLE: test                                                                                                                                                                                                                                                                                                                                                                                                  
 |      PREAGGREGATION: OFF. Reason: No AggregateInfo                                                                                                                                                                                                                                                                                                                                                                
-|      PREDICATES: `k4` >= 1, `k5` > 3                                                                                                                                                                                                                                                                                                                                                                              
+|      PREDICATES: `k4` = 1, `k5` > 3                                                                                                                                                                                                                                                                                                                                                                              
 |      partitions=1/1                                                                                                                                                                                                                                                                                                                                                                                               
 |      rollup: rollup_index3                                                                                                                                                                                                                                                                                                                                                                                        
 |      buckets=10/10                                                                                                                                                                                                                                                                                                                                                                                                
diff --git a/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.md.txt b/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.md.txt
index c4e9d9a..085d1c8 100644
--- a/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.md.txt
+++ b/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/datediff.md.txt
@@ -2,7 +2,7 @@
 
 ## Syntax
 
-`DATETIME DATEDIFF(expr1,expr2)`
+`DATETIME DATEDIFF(DATETIME expr1,DATETIME expr2)`
 
 ## Description
 
@@ -28,4 +28,4 @@ mysql> select datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31
 +-----------------------------------------------------------------------------------+
 |                                                                               -31 |
 +-----------------------------------------------------------------------------------+
-```
\ No newline at end of file
+```
diff --git a/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.md.txt b/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.md.txt
new file mode 100644
index 0000000..d45e6b4
--- /dev/null
+++ b/content/_sources/Docs/cn/sql-reference/sql-functions/date-time-functions/timediff.md.txt
@@ -0,0 +1,45 @@
+# timediff
+
+## Syntax
+
+`TIME TIMEDIFF(DATETIME expr1, DATETIME expr2)`
+
+## Description
+
+TIMEDIFF返回两个DATETIME之间的差值
+
+TIMEDIFF函数返回表示为时间值的expr1 - expr2的结果,返回值为TIME类型
+
+其结果被限制在从-838:59:59到838:59:59之间的TIME值范围内
+
+## Examples
+
+```
+mysql> SELECT TIMEDIFF(now(),utc_timestamp());
++----------------------------------+
+| timediff(now(), utc_timestamp()) |
++----------------------------------+
+| 08:00:00                         |
++----------------------------------+
+
+mysql> SELECT TIMEDIFF('2019-07-11 16:59:30','2019-07-11 16:59:21');
++--------------------------------------------------------+
+| timediff('2019-07-11 16:59:30', '2019-07-11 16:59:21') |
++--------------------------------------------------------+
+| 00:00:09                                               |
++--------------------------------------------------------+
+
+mysql> SELECT TIMEDIFF('2019-01-01 00:00:00', '2009-01-01 00:00:00');
++--------------------------------------------------------+
+| timediff('2019-01-01 00:00:00', '2009-01-01 00:00:00') |
++--------------------------------------------------------+
+| 838:59:59                                              |
++--------------------------------------------------------+
+
+mysql> SELECT TIMEDIFF('2019-01-01 00:00:00', NULL);
++---------------------------------------+
+| timediff('2019-01-01 00:00:00', NULL) |
++---------------------------------------+
+| NULL                                  |
++---------------------------------------+
+```
diff --git a/content/_sources/Docs/cn/sql-reference/sql-functions/string-functions/split_part.md.txt b/content/_sources/Docs/cn/sql-reference/sql-functions/string-functions/split_part.md.txt
index 2564a57..142a567 100644
--- a/content/_sources/Docs/cn/sql-reference/sql-functions/string-functions/split_part.md.txt
+++ b/content/_sources/Docs/cn/sql-reference/sql-functions/string-functions/split_part.md.txt
@@ -11,19 +11,19 @@
 ## Examples
 
 ```
-mysql> select split_part("hello word", " ", 1);
+mysql> select split_part("hello world", " ", 1);
 +----------------------------------+
-| split_part('hello word', ' ', 1) |
+| split_part('hello world', ' ', 1) |
 +----------------------------------+
 | hello                            |
 +----------------------------------+
 
 
-mysql> select split_part("hello word", " ", 2);
+mysql> select split_part("hello world", " ", 2);
 +----------------------------------+
-| split_part('hello word', ' ', 2) |
+| split_part('hello world', ' ', 2) |
 +----------------------------------+
-| word                             |
+| world                             |
 +----------------------------------+
 
 mysql> select split_part("2019年7月8号", "月", 1);
diff --git a/content/_sources/Docs/cn/sql-reference/sql-statements/insert.md.txt b/content/_sources/Docs/cn/sql-reference/sql-statements/insert.md.txt
index b610e47..6f4cf4b 100644
--- a/content/_sources/Docs/cn/sql-reference/sql-statements/insert.md.txt
+++ b/content/_sources/Docs/cn/sql-reference/sql-statements/insert.md.txt
@@ -10,18 +10,6 @@ INSERT INTO table_name
     { VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
 ```
 
-## Description
-
-INSERT 向一张表里插入数据。用户可以通过 VALUES 语法插入一条或者多条数据,或者通过一个查询来插入0条或者多条数据。
-
-partition是目标分区,如果指定目标分区,则只会导入符合目标分区的数据。如果没有指定,则默认值为这张表的所有分区。
-
-column是目标列,可以以任意的顺序存在。如果没有指定目标列,那么默认值是这张表的所有列。
-
-如果表中的某个列没有存在目标列中,那么这个列需要有默认值,否则 INSERT 就会执行失败。
-
-如果表达式的类型与目标列的类型不一致,那么会调用隐式类型转化,如果不能够进行转化,那么 INSERT 语句会报语法解析错误。
-
 ## Parameters
 
 > tablet_name: 导入数据的目的表。可以是 `db_name.table_name` 形式
diff --git a/content/objects.inv b/content/objects.inv
index af2b6d0..051ed72 100644
Binary files a/content/objects.inv and b/content/objects.inv differ
diff --git a/content/searchindex.js b/content/searchindex.js
index a3b4342..102e3eb 100644
--- a/content/searchindex.js
+++ b/content/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["Docs/cn/administrator-guide/backup-restore","Docs/cn/administrator-guide/colocation-join","Docs/cn/administrator-guide/export_manual","Docs/cn/administrator-guide/http-actions/fe-get-log-file","Docs/cn/administrator-guide/http-actions/index","Docs/cn/administrator-guide/index","Docs/cn/administrator-guide/load-data/broker-load-manual","Docs/cn/administrator-guide/load-data/index","Docs/cn/administrator-guide/load-data/routine-load-manual","Docs/cn/administrato [...]
\ No newline at end of file
+Search.setIndex({docnames:["Docs/cn/administrator-guide/backup-restore","Docs/cn/administrator-guide/colocation-join","Docs/cn/administrator-guide/export_manual","Docs/cn/administrator-guide/http-actions/fe-get-log-file","Docs/cn/administrator-guide/http-actions/index","Docs/cn/administrator-guide/index","Docs/cn/administrator-guide/load-data/broker-load-manual","Docs/cn/administrator-guide/load-data/index","Docs/cn/administrator-guide/load-data/insert-into-manual","Docs/cn/administrator [...]
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org