Files
doc-exports/docs/dws/dev/dws_04_0075.html
luhuayi 177cd61a57 DWS DEVG 910.211 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: luhuayi <luhuayi@huawei.com>
Co-committed-by: luhuayi <luhuayi@huawei.com>
2025-05-05 07:44:03 +00:00

297 lines
35 KiB
HTML

<a name="EN-US_TOPIC_0000002136265433"></a><a name="EN-US_TOPIC_0000002136265433"></a>
<h1 class="topictitle1">Overview</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_section1935811562458"><h4 class="sectiontitle">Objective</h4><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p126365916454">This document outlines the rules for design and development that need to be followed when developing the GaussDB(DWS) database. The objective is to enhance development efficiency and ensure the continuity and stability of the service.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_section9584151715466"><h4 class="sectiontitle">Application Scope</h4><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p561611217467">These specifications apply to all GaussDB(DWS) self-development scenarios, including designing and developing applications and database services.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_section46981432144619"><h4 class="sectiontitle">Terms</h4><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p152222572441"><strong id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_b114283404816">Rule</strong>: a mandatory requirement that must be followed during database design and development.</p>
<p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p722225734413"><strong id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_b15780104917813">Suggestion</strong>: an option that you need to consider for the design and development process.</p>
<p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p16222857184419"><strong id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_b107125446816">Description</strong>: a detailed explanation of a rule or suggestion.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_section1349771813116"><h4 class="sectiontitle">Overall Development and Design Specifications</h4><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p139911520018">The table below provides a list of development and design specifications that must be followed during GaussDB(DWS) development. You can click the links to access the corresponding rules for more details.</p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_table121011481320" frame="border" border="1" rules="all"><caption><b>Table 1 </b>GaussDB(DWS) development and design specifications</caption><thead align="left"><tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1910212484311"><th align="left" class="cellrowborder" valign="top" id="mcps1.3.4.3.2.5.1.1"><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p934762141613"><strong id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_b0210946822">No.</strong></p>
</th>
<th align="left" class="cellrowborder" colspan="2" valign="top" id="mcps1.3.4.3.2.5.1.2"><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p910217487313"><strong id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_b178621499217">Category</strong></p>
</th>
<th align="left" class="cellrowborder" valign="top" id="mcps1.3.4.3.2.5.1.3"><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1810214817313"><strong id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_b55511408314">Rule/Suggestion</strong></p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row61021048839"><td class="cellrowborder" valign="top" width="5.96%" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1347142115160">1</p>
</td>
<td class="cellrowborder" rowspan="6" valign="top" width="9.56%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p670335218136">Connection management regulations</p>
</td>
<td class="cellrowborder" rowspan="6" valign="top" width="15.409999999999998%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p33053553139">-</p>
</td>
<td class="cellrowborder" valign="top" width="69.07%" headers="mcps1.3.4.3.2.5.1.3 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p85802419101"><a href="dws_04_0103.html#EN-US_TOPIC_0000002100586254__en-us_topic_0000002134166293_section1066113812212">Rule 1.1: Configuring Load Balancing for GaussDB(DWS) Clusters</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1610212481638"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1134712181613">2</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1010274816317"><a href="dws_04_0103.html#EN-US_TOPIC_0000002100586254__en-us_topic_0000002134166293_section13247184232218">Rule 1.2: Ending the Database Connection After Necessary Operations (Except in Connection Pool Scenarios)</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row151029481536"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1234782131610">3</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p510214481535"><a href="dws_04_0103.html#EN-US_TOPIC_0000002100586254__en-us_topic_0000002134166293_section1568113152617">Rule 1.3: Ensuring a Started Transaction Is Committed or Rolled Back</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row410216481317"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p18347152110168">4</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p31021848336"><a href="dws_04_0103.html#EN-US_TOPIC_0000002100586254__en-us_topic_0000002134166293_section201871334162616">Rule 1.4: Ensuring the Idle Timeout Duration Is Shorter Than SESSION_TIMEOUT Value When Connection Pool Is Used for Applications</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1110218481733"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1534718216163">5</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p23211429151115"><a href="dws_04_0103.html#EN-US_TOPIC_0000002100586254__en-us_topic_0000002134166293_section161471750112613">Rule 1.5: Restoring Parameters to Default Values in Connections Before Returning Them to the Pool</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row110217483312"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1434792112164">6</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p131021048038"><a href="dws_04_0103.html#EN-US_TOPIC_0000002100586254__en-us_topic_0000002134166293_section8501127112718">Rule 1.6: Manually Clearing Temporary Tables Created with a Connection Before Returning it to the Pool</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row11029488319"><td class="cellrowborder" valign="top" width="5.96%" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p83472216165">7</p>
</td>
<td class="cellrowborder" rowspan="16" valign="top" width="9.56%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1769955710173">Object design specifications</p>
</td>
<td class="cellrowborder" rowspan="4" valign="top" width="15.409999999999998%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p16486218161318">DATABASE object design</p>
</td>
<td class="cellrowborder" valign="top" width="69.07%" headers="mcps1.3.4.3.2.5.1.3 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1102448233"><a href="dws_04_0108.html#EN-US_TOPIC_0000002100746046__en-us_topic_0000002135726589_section9462145153713">Rule 2.1: Avoiding Direct Usage of Built-in Databases Such As postgres and gaussdb</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1911944951115"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p53471321141613">8</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p06200517123"><a href="dws_04_0108.html#EN-US_TOPIC_0000002100746046__en-us_topic_0000002135726589_section812010258370">Rule 2.2: Selecting the Suitable Database Code During Database Creation</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row11335174931112"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p734772171615">9</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p16567114161311"><a href="dws_04_0108.html#EN-US_TOPIC_0000002100746046__en-us_topic_0000002135726589_section12587184219378">Rule 2.3: Choosing the Right Database Type for Compatibility with the Database to Be Created</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row453064919119"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1334710210162">10</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p18531114991118"><a href="dws_04_0108.html#EN-US_TOPIC_0000002100746046__en-us_topic_0000002135726589_section7642125613377">Suggestion 2.4: Creating the Objects with Associated Calculations in the Same Database</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row2077804911115"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p934732114166">11</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1235414615154">USER object design</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p15778174951116"><a href="dws_04_0109.html#EN-US_TOPIC_0000002136265437__en-us_topic_0000002100207550_section348916349406">Rule 2.5: Following the Least Privilege Principle and Avoiding Running Services Using Users with Special Permissions</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row14945154916117"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p93470219169">12</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p088819211154"><a href="dws_04_0109.html#EN-US_TOPIC_0000002136265437__en-us_topic_0000002100207550_section20111104754013">Rule 2.6: Avoiding the Use of a Single Database Account for All Services</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row310855031116"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p33471212161">13</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p310845016112">SCHEMA object design</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p210895081115"><a href="dws_04_0110.html#EN-US_TOPIC_0000002100586262__en-us_topic_0000002135806925_section82725914114">Suggestion 2.7: Avoiding the Creation of Objects Under Other Users' Private Schemas</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row192591150101119"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1334722115162">14</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1725918502118">TABLESPACE object design</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1625915011116"><a href="dws_04_0111.html#EN-US_TOPIC_0000002136185105__en-us_topic_0000002100047734_section17496104317416">Rule 2.8 Avoiding Tablespace Customization</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row441545071118"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p7347122181618">15</p>
</td>
<td class="cellrowborder" rowspan="5" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p14148122391712">TABLE object design (prioritized)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1241518509117"><a href="dws_04_0112.html#EN-US_TOPIC_0000002100746050__en-us_topic_0000002135726597_section015412016423">Rule 2.9: Selecting the Optimal Distribution Method and Columns During Table Creation</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row12581135081119"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p14347182114164">16</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p17581195011115"><a href="dws_04_0112.html#EN-US_TOPIC_0000002100746050__en-us_topic_0000002135726597_section16391112254212">Rule 2.10 Selecting an Optimal Storage Type During Table Creation</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1730150161110"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p734782111614">17</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p5731550131117"><a href="dws_04_0112.html#EN-US_TOPIC_0000002100746050__en-us_topic_0000002135726597_section392619458421">Rule 2.11 Selecting an Optimal Partitioning Policy During Table Creation</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row132831640121519"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p4347121141614">18</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p10283740111517"><a href="dws_04_0112.html#EN-US_TOPIC_0000002100746050__en-us_topic_0000002135726597_section140547134319">Suggestion 2.12: Designing Table Columns for Fast and Accurate Queries</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row12673141121513"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p8348621151612">19</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p2673041161512"><a href="dws_04_0112.html#EN-US_TOPIC_0000002100746050__en-us_topic_0000002135726597_section20860162415439">Suggestion 2.13: Avoiding the Usage of Auto-increment Columns or Data Types</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row9711641161520"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p3348921141612">20</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p16834173012171">INDEX object design (prioritized)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1871214112158"><a href="dws_04_0113.html#EN-US_TOPIC_0000002136265441__en-us_topic_0000002100207558_section13748110124413">Rule 2.14: Creating Necessary Indexes and Selecting Optimal Columns and Sequences for Them</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row2752134119152"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1348112111165">21</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p197531841101520"><a href="dws_04_0113.html#EN-US_TOPIC_0000002136265441__en-us_topic_0000002100207558_section114813162441">Suggestion 2.15: Optimizing Performance by Choosing the Right Index Type and Avoiding Indexes for Column-Store Tables</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row480624161510"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p03481214168">22</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p18063413159">VIEW object design</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p3806441111514"><a href="dws_04_0114.html#EN-US_TOPIC_0000002100586266__en-us_topic_0000002135806933_section0606333194410">Suggestion 2.16: Limiting View Nesting to Three Layers</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row12845941111515"><td class="cellrowborder" valign="top" width="5.96%" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p203481021131617">23</p>
</td>
<td class="cellrowborder" rowspan="18" valign="top" width="9.56%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p202316441556">SQL development specifications</p>
<p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1117504517401"></p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" width="15.409999999999998%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p2048414210189">DDL operation specifications</p>
</td>
<td class="cellrowborder" valign="top" width="69.07%" headers="mcps1.3.4.3.2.5.1.3 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p19846741181518"><a href="dws_04_0115.html#EN-US_TOPIC_0000002100746054__en-us_topic_0000002100047742_section238722717463">Suggestion 3.1: Avoiding Performing DDL Operations (Except CREATE) During Peak Hours or in Long Transactions</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row12888841171516"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p134882110160">24</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p178883414156"><a href="dws_04_0115.html#EN-US_TOPIC_0000002100746054__en-us_topic_0000002100047742_section13238718155015">Rule 3.2: Specifying the Scope of Objects to Be Deleted When Using DROP</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row159272410151"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p93481821201615">25</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p11568151091914">INSERT operation specifications</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p292864121513"><a href="dws_04_0116.html#EN-US_TOPIC_0000002136265445__en-us_topic_0000002135726605_section1588193713503">Rule 3.3: Replacing INSERT with COPY for Efficient Multi-Value Batch Insertion</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row109702417159"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p173489218165">26</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1971184114159"><a href="dws_04_0116.html#EN-US_TOPIC_0000002136265445__en-us_topic_0000002135726605_section2595105519505">Suggestion 3.4: Avoiding Performing Real-time INSERT Operations on Common Column-store Tables</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row626421158"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p43481521171613">27</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p762916377190">UPDATE/DELETE operation specifications</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1921442101511"><a href="dws_04_0125.html#EN-US_TOPIC_0000002100586270__en-us_topic_0000002100207566_section63531734104519">Suggestion 3.5: Preventing Simultaneous Updates or Deletions of the Same Row in a Row-store Table</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1188942151512"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p434892112169">28</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p018916426155"><a href="dws_04_0125.html#EN-US_TOPIC_0000002100586270__en-us_topic_0000002100207566_section6619155554517">Suggestion 3.6: Avoiding Frequent or Simultaneous UPDATE and DELETE Operations on Column-store Tables</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row9873195081111"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p2348721191615">29</p>
</td>
<td class="cellrowborder" rowspan="12" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1737185817202">Specifications for the SELECT operation (including the query part in all syntaxes)</p>
<p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p4175134554013"></p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p17874115011117"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section1749794416463">Rule 3.7: Avoiding Executing SQL Statements That Do Not Support Pushdown</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row223887162011"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p182381275207">30</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p192386732018"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section17685947134614">Rule 3.8: Specifying Association Conditions when Multiple Tables Are Associated</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row4873083200"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p58731787206">31</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p208737813207"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section1777795264615">Rule 3.9: Ensuring Consistency of Data Types in Associated Fields across Multiple Tables</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row5931889203"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p69328872010">32</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p19321785209"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section18864134354719">Suggestion 3.10: Avoiding Function Calculation on Association and Filter Condition Fields</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row189741182209"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1597516802018">33</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p11975118112011"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section152761264813">Suggestion 3.11: Performing Pressure Tests and Concurrency Control for Resource-intensive SQL Statements</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row172219982015"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p72216992010">34</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p15221097209"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section113151534184817">Rule 3.12: Avoiding Excessive COUNT Operations on Large Row-store Tables</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row166709142014"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p146716915205">35</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p196769172013"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section16145155217486">Suggestion 3.13: Avoid Getting Large Result Sets (Except for Data Exports)</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row210839112011"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1110811917204">36</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1710879122012"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section18347121492">Suggestion 3.14: Avoiding the Usage of SELECT * for Queries</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row64212917201"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p8421694203">37</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p34213972010"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section186162944912">Suggestion 3.15: Using WITH RECURSIVE with Defined Termination Condition for Recursion</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1359319916206"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p15931994201">38</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p7593699201"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section19367195264917">Suggestion 3.16: Setting Schema Prefix for Table and Function Access</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row13366349169"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p136133481614">39</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p9361934111617"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section72646917506">Suggestion 3.17: Identifying an SQL Statement with a Unique SQL Comment</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row12175045114017"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p417534584019">40</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p18175645184012"><a href="dws_04_0126.html#EN-US_TOPIC_0000002136185113__en-us_topic_0000002135806941_section10314162412165">Recommendation 3.18: Restricting SQL Statements to 64 KB in Length</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row206982331711"><td class="cellrowborder" valign="top" width="5.96%" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1769023151711">41</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" width="9.56%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p96915238172">Foreign table function development specifications</p>
</td>
<td class="cellrowborder" valign="top" width="15.409999999999998%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1691823181710">GDS foreign table</p>
</td>
<td class="cellrowborder" valign="top" width="69.07%" headers="mcps1.3.4.3.2.5.1.3 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1969122316173"><a href="dws_04_0031.html#EN-US_TOPIC_0000002125650482__en-us_topic_0000002160959045_section7984144034412">Rule 4.1 Deploying GDS on an Independent Server Outside the GaussDB(DWS) Cluster</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row269192311718"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p6691923181719">42</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p26912312175">Foreign table for collaborative analysis</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p5693233179"><a href="dws_04_0031.html#EN-US_TOPIC_0000002125650482__en-us_topic_0000002160959045_section171861828194514">Rule 4.2 Avoiding Concurrent Access to Multiple Collaborative Analysis Foreign Tables Across Clusters</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row521093411610"><td class="cellrowborder" valign="top" width="5.96%" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p121183415164">43</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" width="9.56%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p18211113412169">Stored procedure development specifications</p>
</td>
<td class="cellrowborder" rowspan="2" valign="top" width="15.409999999999998%" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p72111934121617">-</p>
<p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p838814347166"></p>
</td>
<td class="cellrowborder" valign="top" width="69.07%" headers="mcps1.3.4.3.2.5.1.3 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p4211183415162"><a href="dws_04_0106.html#EN-US_TOPIC_0000002100746058__en-us_topic_0000002098487000_section15429113495012">Suggestion 5.1: Simplifying Stored Procedures and Avoiding Nesting</a></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_row1238819348161"><td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.1 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p10388534111613">44</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.3.2.5.1.2 "><p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p73888344169"><a href="dws_04_0106.html#EN-US_TOPIC_0000002100746058__en-us_topic_0000002098487000_section188550284514">Rule 5.2: Avoiding Non-CREATE DDL Operations in Stored Procedures</a></p>
</td>
</tr>
</tbody>
</table>
</div>
<p id="EN-US_TOPIC_0000002136265433__en-us_topic_0000001188482086_p1855618191812"></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0074.html">GaussDB(DWS) Development Design Proposal</a></div>
</div>
</div>