doc-exports/docs/dws/dev/dws_06_0040.html
Lu, Huayi e6fa411af0 DWS DEV 830.201 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-05-16 07:24:04 +00:00

180 lines
23 KiB
HTML

<a name="EN-US_TOPIC_0000001188270558"></a><a name="EN-US_TOPIC_0000001188270558"></a>
<h1 class="topictitle1">UUID Functions</h1>
<div id="body1560407392208"><p id="EN-US_TOPIC_0000001188270558__p8060118">UUID functions are used to generate UUID data (see <a href="dws_06_0019.html">UUID Type</a>).</p>
<div class="section" id="EN-US_TOPIC_0000001188270558__section6947171719259"><h4 class="sectiontitle">uuid_generate_v1()</h4><p id="EN-US_TOPIC_0000001188270558__p1845292411254">Description: Generates a UUID sequence number.</p>
<p id="EN-US_TOPIC_0000001188270558__p20452112411252">Return type: UUID</p>
<p id="EN-US_TOPIC_0000001188270558__p1845272412513">Example:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188270558__screen8452172462512"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uuid_generate_v1</span><span class="p">();</span>
<span class="w"> </span><span class="n">uuid_generate_v1</span><span class="w"> </span>
<span class="c1">--------------------------------------</span>
<span class="w"> </span><span class="n">c71ceaca</span><span class="o">-</span><span class="n">a175</span><span class="o">-</span><span class="mi">11</span><span class="n">e9</span><span class="o">-</span><span class="n">a920</span><span class="o">-</span><span class="mi">797</span><span class="n">ff7000001</span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
<div class="note" id="EN-US_TOPIC_0000001188270558__note18452224182517"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001188270558__p15452202412513">The <strong id="EN-US_TOPIC_0000001188270558__b51688211802">uuid_generate_v1</strong> function generates a UUID based on the time information, cluster node ID, and ID of the thread that generates the sequence. The UUID is globally unique in a single cluster, however, there is a possibility that the time information, cluster node IDs, thread IDs, and clock sequences of multiple clusters are the same at the same time. Therefore, there is a low probability that UUIDs generated among multiple clusters are duplicate.</p>
</div></div>
</div>
<div class="section" id="EN-US_TOPIC_0000001188270558__section859514211264"><h4 class="sectiontitle">sys_guid()</h4><p id="EN-US_TOPIC_0000001188270558__p56601211172612">Description: Generates an Oracle GUID, which is similar to the UUID. This function is compatible with Oracle.</p>
<p id="EN-US_TOPIC_0000001188270558__p1366014114266">Return type: text</p>
<p id="EN-US_TOPIC_0000001188270558__p5661161113265">Example:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188270558__screen36612011122615"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">sys_guid</span><span class="p">();</span>
<span class="w"> </span><span class="n">sys_guid</span><span class="w"> </span>
<span class="c1">----------------------------------</span>
<span class="w"> </span><span class="mi">4</span><span class="n">EBD3C74A17A11E9A1BF797FF7000001</span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
<div class="note" id="EN-US_TOPIC_0000001188270558__note1866117119269"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001188270558__p9661131162610">The data generation principle of the sys_guid function is the same as that of the uuid_generate_v1 function.</p>
</div></div>
</div>
<div class="section" id="EN-US_TOPIC_0000001188270558__section585324113368"><h4 class="sectiontitle">UUID Function Application Example</h4><p id="EN-US_TOPIC_0000001188270558__p4352175655812">A UUID is globally unique. It can be used as a primary key or a distribution column in a data table. When <strong id="EN-US_TOPIC_0000001188270558__b108251541648">uuid_generate_v1()</strong> is used as the default value of the distribution column in a data table, data can be evenly distributed to each DN through hash distribution to prevent data skew.</p>
<div class="note" id="EN-US_TOPIC_0000001188270558__note56414215910"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001188270558__p51173105813">The obvious advantage of UUID is that it is globally unique and does not require a central node. UUIDs are generated independently on a single node. However, UUIDs occupy more storage space than INTs, the index efficiency is low, and the generated IDs are random, making them difficult to identify. Therefore, you need to select UUID or Sequence as the primary key of the data table based on the site requirements.</p>
</div></div>
<p id="EN-US_TOPIC_0000001188270558__p176255223620">An example is as follows:</p>
<ol id="EN-US_TOPIC_0000001188270558__ol20454152116534"><li id="EN-US_TOPIC_0000001188270558__li14541421125315">The INT type is used as the distribution column.<div class="p" id="EN-US_TOPIC_0000001188270558__p390110298511"><a name="EN-US_TOPIC_0000001188270558__li14541421125315"></a><a name="li14541421125315"></a>An example hash table <strong id="EN-US_TOPIC_0000001188270558__b17462153511714">mytable01</strong> is created, and the ints are used as the distribution column. After data is inserted, data skew occurs.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188270558__screen5226312507"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">mytable01</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">INT</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable01</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable01</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable01</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable01</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable01</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">mytable01</span><span class="p">;</span>
<span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">b</span>
<span class="c1">---+----</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="p">(</span><span class="mi">5</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">table_skewness</span><span class="p">(</span><span class="s1">'mytable01'</span><span class="p">);</span>
<span class="w"> </span><span class="n">table_skewness</span>
<span class="c1">-------------------------------------</span>
<span class="w"> </span><span class="p">(</span><span class="ss">&quot;dn_6003_6004 &quot;</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">100</span><span class="p">.</span><span class="mi">000</span><span class="o">%</span><span class="p">)</span>
<span class="w"> </span><span class="p">(</span><span class="ss">&quot;dn_6001_6002 &quot;</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">.</span><span class="mi">000</span><span class="o">%</span><span class="p">)</span>
<span class="w"> </span><span class="p">(</span><span class="ss">&quot;dn_6005_6006 &quot;</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">.</span><span class="mi">000</span><span class="o">%</span><span class="p">)</span>
<span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
</div>
</li><li id="EN-US_TOPIC_0000001188270558__li46282036195316">The UUIDs are used as the distribution column.<p id="EN-US_TOPIC_0000001188270558__p581441795516"><a name="EN-US_TOPIC_0000001188270558__li46282036195316"></a><a name="li46282036195316"></a>Create an example hash table <strong id="EN-US_TOPIC_0000001188270558__b10118181111718">mytable02</strong> and use the UUIDs as the distribution column. After data is inserted, data distribution is normal.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188270558__screen3996516165410"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">mytable02</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="n">UUID</span><span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="n">uuid_generate_v1</span><span class="p">(),</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">INT</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable02</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable02</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable02</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable02</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">mytable02</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">mytable02</span><span class="p">;</span>
<span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">b</span>
<span class="c1">--------------------------------------+---+----</span>
<span class="w"> </span><span class="mi">63</span><span class="n">e45c14</span><span class="o">-</span><span class="n">cc74</span><span class="o">-</span><span class="mi">0</span><span class="n">e00</span><span class="o">-</span><span class="n">e9aa</span><span class="o">-</span><span class="mi">0</span><span class="n">a2c3fa0fffe</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">63</span><span class="n">e45c1f</span><span class="o">-</span><span class="mi">4</span><span class="n">d18</span><span class="o">-</span><span class="mi">0700</span><span class="o">-</span><span class="n">e9ab</span><span class="o">-</span><span class="mi">0</span><span class="n">a2c3fa0fffe</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">63</span><span class="n">e45c26</span><span class="o">-</span><span class="n">f859</span><span class="o">-</span><span class="mi">0</span><span class="n">b00</span><span class="o">-</span><span class="n">e9ad</span><span class="o">-</span><span class="mi">0</span><span class="n">a2c3fa0fffe</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">63</span><span class="n">e45c23</span><span class="o">-</span><span class="mi">9</span><span class="n">e5d</span><span class="o">-</span><span class="mi">0300</span><span class="o">-</span><span class="n">e9ac</span><span class="o">-</span><span class="mi">0</span><span class="n">a2c3fa0fffe</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="mi">63</span><span class="n">e45c2a</span><span class="o">-</span><span class="mi">5825</span><span class="o">-</span><span class="mi">0600</span><span class="o">-</span><span class="n">e9ae</span><span class="o">-</span><span class="mi">0</span><span class="n">a2c3fa0fffe</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">10</span>
<span class="p">(</span><span class="mi">5</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">table_skewness</span><span class="p">(</span><span class="s1">'mytable02'</span><span class="p">);</span>
<span class="w"> </span><span class="n">table_skewness</span>
<span class="c1">------------------------------------</span>
<span class="w"> </span><span class="p">(</span><span class="ss">&quot;dn_6001_6002 &quot;</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">60</span><span class="p">.</span><span class="mi">000</span><span class="o">%</span><span class="p">)</span>
<span class="w"> </span><span class="p">(</span><span class="ss">&quot;dn_6003_6004 &quot;</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">40</span><span class="p">.</span><span class="mi">000</span><span class="o">%</span><span class="p">)</span>
<span class="w"> </span><span class="p">(</span><span class="ss">&quot;dn_6005_6006 &quot;</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">.</span><span class="mi">000</span><span class="o">%</span><span class="p">)</span>
<span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
</li></ol>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0027.html">Functions and Operators</a></div>
</div>
</div>