PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจกเฉ‡เจข เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจ…เจธเฉ€เจ‚ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ explain.tensor.ru - เจœเจจเจคเจ• เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจธเฉ‡เจตเจพ PostgreSQL เจจเฉ‚เฉฐ.

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจชเจฟเจ›เจฒเฉ‡ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‰เจธ เจฌเจพเจฐเฉ‡ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ PGConf.Russia 2020 'เจคเฉ‡ เจฐเจฟเจชเฉ‹เจฐเจŸ, เจ‡เฉฑเจ• เจธเฉฐเจ–เฉ‡เจช เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ SQL เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจฒเฉ‡เจ– เจ‡เจธ เจฆเฉเจ†เจฐเจพ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจฟเจซเจผเจพเจฐเจธเจผเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡... เจชเจฐ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ, เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจกเฉ€ เจซเฉ€เจกเจฌเฉˆเจ• เจ‡เจ•เฉฑเจ เฉ€ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจ…เจธเจฒ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ†เฅค

เจ…เจคเฉ‡ เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจจเจตเฉ‡เจ‚ เจฎเฉŒเจ•เจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเจพเจ‚ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจตเฉฑเจ–-เจตเฉฑเจ– เจฏเฉ‹เจœเจจเจพ เจซเจพเจฐเจฎเฉˆเจŸเจพเจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจจ

เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจจเจพเจฒ, เจฒเฉŒเจ— เจคเฉ‹เจ‚ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพเจ“

เจ•เฉฐเจธเฉ‹เจฒ เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเจพ, เจจเจพเจฒ เจฒเจพเจˆเจจ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจชเฉ‚เจฐเฉ‡ เจฌเจฒเจพเจ• เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเฉ‹ เจธเจตเจพเจฒ เจฆเจพ เจชเจพเจ , เจธเจพเจฐเฉ€เจ†เจ‚ เจชเฉเจฐเจฎเฉเฉฑเจ– เจฅเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ:

        Query Text: INSERT INTO  dicquery_20200604  VALUES ($1.*) ON CONFLICT (query)
                           DO NOTHING;
        Insert on dicquery_20200604  (cost=0.00..0.05 rows=1 width=52) (actual time=40.376..40.376 rows=0 loops=1)
          Conflict Resolution: NOTHING
          Conflict Arbiter Indexes: dicquery_20200604_pkey
          Tuples Inserted: 1
          Conflicting Tuples: 0
          Buffers: shared hit=9 read=1 dirtied=1
          ->  Result  (cost=0.00..0.05 rows=1 width=52) (actual time=0.001..0.001 rows=1 loops=1)

... เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจจเจ•เจฒ เจ•เฉ€เจคเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจฏเฉ‹เจœเจจเจพ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจชเจพเจ“:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจ…เฉฐเจค เจตเจฟเฉฑเจš เจธเจพเจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เฉ€เจคเฉ€ เจฏเฉ‹เจœเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจฌเฉ‹เจจเจธ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ "เจชเฉเจฐเจธเฉฐเจ—" เจŸเฉˆเจฌ, เจœเจฟเฉฑเจฅเฉ‡ เจธเจพเจกเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ‡เจธเจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเจผเจพเจจ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

JSON เจ…เจคเฉ‡ YAML

EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)
SELECT * FROM pg_class;

"[
  {
    "Plan": {
      "Node Type": "Seq Scan",
      "Parallel Aware": false,
      "Relation Name": "pg_class",
      "Alias": "pg_class",
      "Startup Cost": 0.00,
      "Total Cost": 1336.20,
      "Plan Rows": 13804,
      "Plan Width": 539,
      "Actual Startup Time": 0.006,
      "Actual Total Time": 1.838,
      "Actual Rows": 10266,
      "Actual Loops": 1,
      "Shared Hit Blocks": 646,
      "Shared Read Blocks": 0,
      "Shared Dirtied Blocks": 0,
      "Shared Written Blocks": 0,
      "Local Hit Blocks": 0,
      "Local Read Blocks": 0,
      "Local Dirtied Blocks": 0,
      "Local Written Blocks": 0,
      "Temp Read Blocks": 0,
      "Temp Written Blocks": 0
    },
    "Planning Time": 5.135,
    "Triggers": [
    ],
    "Execution Time": 2.389
  }
]"

เจœเจพเจ‚ เจคเจพเจ‚ เจฌเจพเจนเจฐเฉ€ เจ•เฉ‹เจŸเจธ เจฆเฉ‡ เจจเจพเจฒ, pgAdmin เจ•เจพเจชเฉ€เจ†เจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจœเจพเจ‚ เจฌเจฟเจจเจพเจ‚ - เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจธเฉ‡ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจธเฉเฉฑเจŸ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจธเฉเฉฐเจฆเจฐเจคเจพ เจนเฉˆ:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจเจกเจตเจพเจ‚เจธเจก เจตเจฟเจœเจผเฉ‚เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ

เจชเจฒเฉˆเจจเจฟเฉฐเจ— เจŸเจพเจˆเจฎ/เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจŸเจพเจˆเจฎ

เจนเฉเจฃ เจคเฉเจธเฉ€เจ‚ เจฌเจฟเจนเจคเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจตเจพเจงเฉ‚ เจธเจฎเจพเจ‚ เจ•เจฟเฉฑเจฅเฉ‡ เจ–เจฐเจšเจฟเจ† เจ—เจฟเจ† เจธเฉ€:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

I/O เจŸเจพเจˆเจฎเจฟเฉฐเจ—

เจ•เจˆ เจตเจพเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡, เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจชเฉœเฉเจนเจฟเจ† เจ…เจคเฉ‡ เจฒเจฟเจ–เจฟเจ† เจจเจนเฉ€เจ‚ เจ—เจฟเจ† เจธเฉ€, เจชเจฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจ…เจธเฉฐเจ—เจค เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเฉฐเจฌเจพ เจœเจพเจชเจฆเจพ เจนเฉˆ.

เจ‡เฉฑเจฅเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เจนเจฟเจฃเจพ เจนเฉˆ: "เจ“เจน, เจธเจผเจพเจ‡เจฆ เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจกเจฟเจธเจ• เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฒเฉ‹เจก เจนเฉ‹ เจ—เจˆ เจธเฉ€, เจ‡เจธ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจตเจฟเฉฑเจš เจ‡เฉฐเจจเจพ เจธเจฎเจพเจ‚ เจฒเฉฑเจ—เจฟเจ†!"เจชเจฐ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ‡เจน เจฌเจนเฉเจค เจธเจนเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ ...

เจชเจฐ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจขเฉฐเจ— เจจเจพเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ. เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ เจชเฉ€เจœเฉ€ เจธเจฐเจตเจฐ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ track_io_timing:

I/O เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจตเจฟเจ•เจฒเจช เจชเฉ‚เจฐเจต-เจจเจฟเจฐเจงเจพเจฐเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจธเจฎเจฐเฉฑเจฅ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจฒเจ—เจพเจคเจพเจฐ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เฉเจ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎเจพเจ‚ 'เจคเฉ‡ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจนเฉŒเจฒเฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉเจนเจพเจกเฉ‡ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ 'เจคเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจฒเจพเจ—เจค เจฆเจพ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ pg_test_timing เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค I/O เจ…เฉฐเจ•เฉœเฉ‡ pg_stat_database เจตเจฟเจŠ เจฐเจพเจนเฉ€เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, EXPLAIN เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจตเจฟเฉฑเจš (เจœเจฆเฉ‹เจ‚ BUFFERS เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ) เจ…เจคเฉ‡ pg_stat_statements เจฆเฉเจฐเจฟเจธเจผ เจฆเฉเจ†เจฐเจพเฅค

เจ‡เจน เจตเจฟเจ•เจฒเจช เจธเจฅเจพเจจเจ• เจธเฉˆเจธเจผเจจ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจตเฉ€ เจธเจฎเจฐเฉฑเจฅ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

SET track_io_timing = TRUE;

เจ–เฉˆเจฐ, เจนเฉเจฃ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจŸเฉเจฐเฉ€ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ เจ‡เจธ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจฎเจเจฃเจพ เจ…เจคเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจเจพ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เฉเฉฑเจฒ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ 0.790ms เจตเจฟเฉฑเจšเฉ‹เจ‚, 0.718ms เจจเฉ‡ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพ เจชเฉฐเจจเจพ เจชเฉœเฉเจนเจฟเจ†, 0.044ms เจจเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจตเจฟเฉฑเจš เจฒเจฟเจ†, เจ…เจคเฉ‡ เจฌเจพเจ•เฉ€ เจธเจพเจฐเฉ€เจ†เจ‚ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจ—เจคเฉ€เจตเจฟเจงเฉ€เจ†เจ‚ 'เจคเฉ‡ เจธเจฟเจฐเจซเจผ 0.028ms เจ–เจฐเจš เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจ!

PostgreSQL 13 เจฆเฉ‡ เจจเจพเจฒ เจญเจตเจฟเฉฑเจ–

เจคเฉเจธเฉ€เจ‚ เจจเจตเฉ€เจจเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจ• เจตเจฟเจธเจคเฉเจฐเจฟเจค เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค

เจฏเฉ‹เจœเจจเจพเจฌเฉฐเจฆเฉ€ เจฌเจซเจฐ

เจธเจผเจกเจฟเจŠเจฒเจฐ เจจเฉ‚เฉฐ เจ…เจฒเจพเจŸ เจ•เฉ€เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเจพ เจฒเฉ‡เจ–เจพ-เจœเฉ‹เจ–เจพ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจชเฉˆเจš เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจฌเจฟเฉฐเจฌเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ pg_stat_statements เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆเฅค BUFFERS เจตเจฟเจ•เจฒเจช เจฆเฉ‡ เจจเจพเจฒ เจตเจฟเจ†เจ–เจฟเจ† เจ•เจฐเฉ‹ เจฏเฉ‹เจœเจจเจพ เจชเฉœเจพเจ… เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจตเจฐเจคเฉ‡ เจ—เจ เจฌเจซเจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เจฐเฉ‡เจ—เจพ:

 Seq Scan on pg_class (actual rows=386 loops=1)
   Buffers: shared hit=9 read=4
 Planning Time: 0.782 ms
   Buffers: shared hit=103 read=11
 Execution Time: 0.219 ms

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจตเจงเจฆเฉ€ เจ›เจพเจ‚เจŸเฉ€

เจ‰เจนเจจเจพเจ‚ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเจฟเฉฑเจฅเฉ‡ เจ•เจˆ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ (k1, k2, k3...) 'เจคเฉ‡ เจ›เจพเจ‚เจŸเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจฏเฉ‹เจœเจจเจพเจ•เจพเจฐ เจนเฉเจฃ เจ‡เจธ เจ—เจฟเจ†เจจ เจฆเจพ เจซเจพเจ‡เจฆเจพ เจ‰เจ เจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจกเฉ‡เจŸเจพ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจˆ เจชเจนเจฟเจฒเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, k1 เจ…เจคเฉ‡ k2) 'เจคเฉ‡ เจ›เจพเจ‚เจŸเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจธเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจ‡เจธเจจเฉ‚เฉฐ k1 เจ…เจคเฉ‡ k2 เจฆเฉ‡ เจธเจฎเจพเจจ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฒเจ—เจพเจคเจพเจฐ เจธเจฎเฉ‚เจนเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจก เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ k3 เจ•เฉเฉฐเจœเฉ€ เจฆเฉเจ†เจฐเจพ "เจฎเฉเฉœ-เจ•เฉเจฐเจฎเจฌเฉฑเจง" เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจธเจฎเฉเฉฑเจšเฉ€ เจ›เจพเจ‚เจŸเฉ€ เจจเฉ‚เฉฐ เจ›เฉ‹เจŸเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ€เจ†เจ‚ เจ•เจˆ เจฒเฉœเฉ€เจตเจพเจฐ เจ•เจฟเจธเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจน เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจชเฉ‚เจฐเฉ€ เจ›เจพเจ‚เจŸเฉ€ เจชเฉ‚เจฐเฉ€ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจชเจนเจฟเจฒเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

 Incremental Sort (actual rows=2949857 loops=1)
   Sort Key: ticket_no, passenger_id
   Presorted Key: ticket_no
   Full-sort Groups: 92184 Sort Method: quicksort Memory: avg=31kB peak=31kB
   ->  Index Scan using tickets_pkey on tickets (actual rows=2949857 loops=1)
 Planning Time: 2.137 ms
 Execution Time: 2230.019 ms

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

UI/UX เจธเฉเจงเจพเจฐ

เจธเจ•เฉเจฐเฉ€เจจเจธเจผเจพเจŸ, เจ‰เจน เจนเจฐ เจœเจ—เฉเจนเจพ เจนเจจ!

เจนเฉเจฃ เจนเจฐ เจ‡เฉฑเจ• เจŸเฉˆเจฌ 'เจคเฉ‡ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ•เจฐเจจ เจฆเจพ เจฎเฉŒเจ•เจพ เจนเฉˆ เจŸเฉˆเจฌ เจฆเจพ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเฉ€เจจเจธเจผเฉŒเจŸ เจ•เจฒเจฟเฉฑเจชเจฌเฉ‹เจฐเจก เจตเจฟเฉฑเจš เจฒเจ“ เจŸเฉˆเจฌ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจšเฉŒเฉœเจพเจˆ เจ…เจคเฉ‡ เจกเฉ‚เฉฐเจ˜เจพเจˆ - เจธเฉฑเจœเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ "เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€":

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจ‡เจธ เจชเฉเจฐเจ•เจพเจธเจผเจจ เจฒเจˆ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ.

เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผเจพเจ‚

เจจเจพ เจธเจฟเจฐเจซ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฌเจฃ เจ—เจ เจนเจจ, เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจนเจฐเฉ‡เจ• เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจชเฉœเฉเจนเฉ‹เจฒเจฟเฉฐเจ• เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจ•เฉ‡:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจ†เจฐเจ•เจพเจˆเจต เจคเฉ‹เจ‚ เจฎเจฟเจŸเจพเจ‡เจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจ•เฉเจ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‡ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจตเจฟเจ•เจฒเจช เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฒเจˆ เจ•เจฟเจนเจพ "เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚" เจฎเจฟเจŸเจพเจ“ เจ‰เจน เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจตเฉ€ เจœเฉ‹ เจชเฉเจฐเจพเจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจ - เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจธเจฟเจฐเจซเจผ เจ‰เจšเจฟเจค เจ†เจˆเจ•เจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเฉฐเจ— เจจเจพเจฒ เจธเจฎเจเจฃเจพ

เจ–เฉˆเจฐ, เจ‡เจน เจจเจพ เจญเฉเฉฑเจฒเฉ‹ เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเฉˆ เจธเจนเจพเจ‡เจคเจพ เจธเจฎเฉ‚เจน, เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจธเฉเจเจพเจ… เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹