时间:2021-07-01 10:21:17 帮助过:101人阅读
创建对应表结构并导入数据
- edbstore<span style="color: #808080">=</span># <span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span> test (id serial <span style="color: #0000ff">PRIMARY</span> <span style="color: #0000ff">KEY</span>, random_text <span style="color: #0000ff">text</span><span style="color: #000000"> );
- </span><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span><span style="color: #000000">
- edbstore</span><span style="color: #808080">=</span><span style="color: #000000"># \d test
- </span><span style="color: #0000ff">Table</span> "<span style="color: #0000ff">public</span><span style="color: #000000">.test"
- </span><span style="color: #0000ff">Column</span> <span style="color: #808080">|</span> Type <span style="color: #808080">|</span><span style="color: #000000"> Modifiers
- </span><span style="color: #008080">--</span><span style="color: #008080">-----------+---------+---------------------------------------------------</span>
- id <span style="color: #808080">|</span> <span style="color: #0000ff">integer</span> <span style="color: #808080">|</span> <span style="color: #808080">not</span> <span style="color: #0000ff">null</span> <span style="color: #0000ff">default</span> nextval(<span style="color: #ff0000">‘</span><span style="color: #ff0000">test_id_seq</span><span style="color: #ff0000">‘</span><span style="color: #000000">::regclass)
- random_text </span><span style="color: #808080">|</span> <span style="color: #0000ff">text</span> <span style="color: #808080">|</span><span style="color: #000000">
- Indexes:
- "test_pkey" </span><span style="color: #0000ff">PRIMARY</span> <span style="color: #0000ff">KEY</span><span style="color: #000000">, btree (id)
- edbstore</span><span style="color: #808080">=</span><span style="color: #000000"># \d
- List </span><span style="color: #0000ff">of</span><span style="color: #000000"> relations
- </span><span style="color: #0000ff">Schema</span> <span style="color: #808080">|</span> Name <span style="color: #808080">|</span> Type <span style="color: #808080">|</span><span style="color: #000000"> Owner
- </span><span style="color: #008080">--</span><span style="color: #008080">------+-------------+----------+----------</span>
- <span style="color: #0000ff">public</span> <span style="color: #808080">|</span> tb1 <span style="color: #808080">|</span> <span style="color: #0000ff">table</span> <span style="color: #808080">|</span><span style="color: #000000"> postgres
- </span><span style="color: #0000ff">public</span> <span style="color: #808080">|</span> test <span style="color: #808080">|</span> <span style="color: #0000ff">table</span> <span style="color: #808080">|</span><span style="color: #000000"> postgres
- </span><span style="color: #0000ff">public</span> <span style="color: #808080">|</span> test_id_seq <span style="color: #808080">|</span> sequence <span style="color: #808080">|</span><span style="color: #000000"> postgres
- (</span><span style="color: #800000; font-weight: bold">3</span><span style="color: #000000"> rows)
- edbstore</span><span style="color: #808080">=</span># copy test (random_text) <span style="color: #0000ff">FROM</span> <span style="color: #ff0000">‘</span><span style="color: #ff0000">/tmp/random_strings</span><span style="color: #ff0000">‘</span><span style="color: #000000">;
- COPY </span><span style="color: #800000; font-weight: bold">1000000</span><span style="color: #000000">
- edbstore</span><span style="color: #808080">=</span># <span style="color: #0000ff">select</span> <span style="color: #808080">*</span> <span style="color: #0000ff">from</span> test limit <span style="color: #800000; font-weight: bold">10</span><span style="color: #000000">;
- id </span><span style="color: #808080">|</span><span style="color: #000000"> random_text
- </span><span style="color: #008080">--</span><span style="color: #008080">--+-------------------------------------------------</span>
- <span style="color: #800000; font-weight: bold">1</span> <span style="color: #808080">|</span><span style="color: #000000"> CKQyHTYH5VjeHRUC6YYLF8H5S
- </span><span style="color: #800000; font-weight: bold">2</span> <span style="color: #808080">|</span><span style="color: #000000"> G22uBhFmrlA17wTUzf
- </span><span style="color: #800000; font-weight: bold">3</span> <span style="color: #808080">|</span><span style="color: #000000"> ey6kX7I6etknzhEFCL
- </span><span style="color: #800000; font-weight: bold">4</span> <span style="color: #808080">|</span><span style="color: #000000"> 8LB6navSS8VyoIeqbJBx9RqB3O4AI8GIFExnM7s
- </span><span style="color: #800000; font-weight: bold">5</span> <span style="color: #808080">|</span><span style="color: #000000"> bvYt4dKGSiAun6yA5Q7owlKWJGEgD0nlxoBRZm8B
- </span><span style="color: #800000; font-weight: bold">6</span> <span style="color: #808080">|</span><span style="color: #000000"> qk1RfhXHwo2PNpbI4
- </span><span style="color: #800000; font-weight: bold">7</span> <span style="color: #808080">|</span><span style="color: #000000"> rnPterTw1a3Z3DoL8rhzlltUKb5
- </span><span style="color: #800000; font-weight: bold">8</span> <span style="color: #808080">|</span><span style="color: #000000"> l2TrrbDsBkAa5V5ZBKFE59k4T7sDKA58yrS0mJNssl7CJnF
- </span><span style="color: #800000; font-weight: bold">9</span> <span style="color: #808080">|</span><span style="color: #000000"> xM9HPgq6QMRsx1aOTqM0LPRQRYkQy50uV
- </span><span style="color: #800000; font-weight: bold">10</span> <span style="color: #808080">|</span><span style="color: #000000"> viSJ4p1i3O0dY8tKei3x
- (</span><span style="color: #800000; font-weight: bold">10</span> rows)
通过每次获取不通的数据量来观察每次explain的执行方式
- edbstore<span style="color: #808080">=</span><span style="color: #000000"># show work_mem;
- work_mem
- </span><span style="color: #008080">--</span><span style="color: #008080">--------</span>
- <span style="color: #000000"> 1MB
- (</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000"> row)
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">10</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">----------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">8.73</span>..<span style="color: #800000; font-weight: bold">8.75</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">9</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.188</span>..<span style="color: #800000; font-weight: bold">0.202</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">10</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: quicksort Memory: 25kB
- </span><span style="color: #808080">-></span> <span style="color: #0000ff">Index</span> Scan using test_pkey <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.42</span>..<span style="color: #800000; font-weight: bold">8.58</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">9</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.018</span>..<span style="color: #800000; font-weight: bold">0.037</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">10</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- </span><span style="color: #0000ff">Index</span> Cond: (id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">10</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">1.435</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">0.294</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span><span style="color: #000000"> rows)
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">100</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">--------------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">13.50</span>..<span style="color: #800000; font-weight: bold">13.75</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.870</span>..<span style="color: #800000; font-weight: bold">1.027</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: quicksort Memory: 34kB
- </span><span style="color: #808080">-></span> <span style="color: #0000ff">Index</span> Scan using test_pkey <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.42</span>..<span style="color: #800000; font-weight: bold">10.18</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.022</span>..<span style="color: #800000; font-weight: bold">0.218</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- </span><span style="color: #0000ff">Index</span> Cond: (id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">100</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">0.286</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">1.248</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span><span style="color: #000000"> rows)
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">1000</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">----------------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">92.57</span>..<span style="color: #800000; font-weight: bold">95.10</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1011</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">8.846</span>..<span style="color: #800000; font-weight: bold">10.251</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: quicksort Memory: 112kB
- </span><span style="color: #808080">-></span> <span style="color: #0000ff">Index</span> Scan using test_pkey <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.42</span>..<span style="color: #800000; font-weight: bold">42.12</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1011</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.027</span>..<span style="color: #800000; font-weight: bold">2.474</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- </span><span style="color: #0000ff">Index</span> Cond: (id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">1000</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">0.286</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">11.584</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span><span style="color: #000000"> rows)
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">10000</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">--------------------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1049.39</span>..<span style="color: #800000; font-weight: bold">1074.68</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">10116</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">144.963</span>..<span style="color: #800000; font-weight: bold">160.943</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">10000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: external merge </span><span style="color: #0000ff">Disk</span><span style="color: #000000">: 448kB
- </span><span style="color: #808080">-></span> <span style="color: #0000ff">Index</span> Scan using test_pkey <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.42</span>..<span style="color: #800000; font-weight: bold">376.45</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">10116</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.063</span>..<span style="color: #800000; font-weight: bold">22.225</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">10000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- </span><span style="color: #0000ff">Index</span> Cond: (id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">10000</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">0.149</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">173.841</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span><span style="color: #000000"> rows)
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">100000</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">------------------------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">17477.39</span>..<span style="color: #800000; font-weight: bold">17727.70</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100122</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1325.789</span>..<span style="color: #800000; font-weight: bold">1706.516</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: external merge </span><span style="color: #0000ff">Disk</span><span style="color: #000000">: 4440kB
- </span><span style="color: #808080">-></span> <span style="color: #0000ff">Index</span> Scan using test_pkey <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.42</span>..<span style="color: #800000; font-weight: bold">3680.56</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100122</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.088</span>..<span style="color: #800000; font-weight: bold">214.490</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">100000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- </span><span style="color: #0000ff">Index</span> Cond: (id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">100000</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">0.147</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">1822.008</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span><span style="color: #000000"> rows)
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">1000000</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">----------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">202426.34</span>..<span style="color: #800000; font-weight: bold">204926.34</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">8703.143</span>..<span style="color: #800000; font-weight: bold">10160.421</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: external merge </span><span style="color: #0000ff">Disk</span><span style="color: #000000">: 44504kB
- </span><span style="color: #808080">-></span> Seq Scan <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.00</span>..<span style="color: #800000; font-weight: bold">20732.00</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.024</span>..<span style="color: #800000; font-weight: bold">1021.491</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Filter: (id </span><span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">1000000</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">0.316</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">10577.464</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span> rows)
row | Sort Method | Execution time |
10 | quicksort Memory: 25kB | 0.294 ms |
100 | Sort Method: quicksort Memory: 34kB | 1.248 ms |
1000 | Sort Method: quicksort Memory: 112kB | 11.584 ms |
10000 | Sort Method: external merge Disk: 448kB | 173.841 ms |
100000 | Sort Method: external merge Disk: 4440kB | 1822.008 ms |
1000000 | Sort Method: external merge Disk: 44504kB | 10577.464 ms |
通过上图我们可以看到,当sort的数据大于一万条时,explain显示排序方法从 quicksort in memory, 到external merge disk method,说明此时的work_mem的大小不能满足我们在内存的sort和hash表的需求。此时我们将work_mem参数的值调大
- edbstore<span style="color: #808080">=</span># <span style="color: #0000ff">set</span> work_mem<span style="color: #808080">=</span><span style="color: #000000">"500MB";
- </span><span style="color: #0000ff">SET</span><span style="color: #000000">
- edbstore</span><span style="color: #808080">=</span># EXPLAIN analyze <span style="color: #0000ff">SELECT</span> <span style="color: #808080">*</span> <span style="color: #0000ff">FROM</span> test <span style="color: #0000ff">WHERE</span> id <span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">1000000</span> <span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span> random_text <span style="color: #0000ff">ASC</span><span style="color: #000000">;
- QUERY </span><span style="color: #0000ff">PLAN</span>
- <span style="color: #008080">--</span><span style="color: #008080">---------------------------------------------------------------------------------------------------------------------</span>
- Sort (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">120389.84</span>..<span style="color: #800000; font-weight: bold">122889.84</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">6232.270</span>..<span style="color: #800000; font-weight: bold">6884.121</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Sort </span><span style="color: #0000ff">Key</span><span style="color: #000000">: random_text
- Sort Method: quicksort Memory: 112847kB
- </span><span style="color: #808080">-></span> Seq Scan <span style="color: #0000ff">on</span> test (cost<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.00</span>..<span style="color: #800000; font-weight: bold">20732.00</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> width<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">35</span>) (actual time<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">0.015</span>..<span style="color: #800000; font-weight: bold">659.035</span> rows<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1000000</span> loops<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)
- Filter: (id </span><span style="color: #808080"><=</span> <span style="color: #800000; font-weight: bold">1000000</span><span style="color: #000000">)
- Planning time: </span><span style="color: #800000; font-weight: bold">0.125</span><span style="color: #000000"> ms
- Execution time: </span><span style="color: #800000; font-weight: bold">7302.621</span><span style="color: #000000"> ms
- (</span><span style="color: #800000; font-weight: bold">7</span> rows)
row | Sort Method | Execution time |
1000000 | quicksort Memory: 112847kB | 6887.851 ms |
可以发现sort method从merg disk变成quicksort in memory。
https://www.depesz.com/2011/07/03/understanding-postgresql-conf-work_mem/
PostgreSQL work_mem理解
标签:方式 tar 表操作 tin ase integer div spec nbsp