{"kind": "tool", "major": "18", "item": {"slug": "pg-test-timing", "name": "pg_test_timing", "name_zh": "", "category": "\u670d\u52a1\u7aef\u7a0b\u5e8f", "summary": "pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500", "aliases": ["pg_test_timing"], "content_hash": "418232bd8222598ed2627210d6167e103702eced4ba07b466d2147009457c1d5", "versions": {"10": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "10.23"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/10/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/10/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/10/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/10/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/10/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/10/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/10/postgresql-10-A4.pdf", "bytes": 12631706, "pages": 2591, "sha256": "34497ab9efb45c5bdf1bd11b9016b5451354feb462fa029cf74557a5fa5fbbc1", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/10/postgresql-10-US.pdf", "bytes": 12531684, "pages": 2724, "sha256": "429cc7133ddf4f97c560aa466dc9caea4b718721a8321e293357037cf0af4733", "built_at": "2026-09-26"}}, "tree": "10", "index": "index.html", "major": "10", "pages": 1085, "release": "10.23", "source_url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "svg_assets": 0, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "revision": "f9301feba91e2e2566038a36b8cee0e4402db68989538f88670fddd20b1f78ea", "evidence_kind": "English manual and source declarations", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sources": [{"url": "https://pg.center/docs/10/pgtesttiming.html", "file": "pgtesttiming.html", "label": "10.23 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "0bdb475e62d4df7fe49b4793db515a22662c10d4c0d9b1ac3c05a17baeee801c", "language": "en", "original_url": "/docs/10/pgtesttiming.html"}, {"url": "https://pg.center/docs/10/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "2a6043b88501763a31348758a370a42cd7f9a179c7fdf3ef0e353c82e95b33e9", "language": "en", "original_url": "/docs/10/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.10.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span> \u63a5\u53d7\u4ee5\u4e0b\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre></div>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2>\n<span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/10/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span></div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/10/pgtesttiming.html", "method": "same-major semantic node", "sha256": "12ff6b850b309908f1d031cbc03ff6e01bca7c96d2cc363f56338da8fe11c9e6", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/10/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/10/facts/0/label": "Documented executable", "/versions/10/facts/1/label": "Executable version", "/versions/10/facts/2/label": "Reference inventory", "/versions/10/facts/2/value": "Server applications", "/versions/10/facts/3/label": "Option definition groups", "/versions/10/tables/0/title": "Documented options", "/versions/10/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/10/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/10/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/10/tables/0/columns/0/label": "Option and arguments", "/versions/10/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "9fdc18003ec6a7bd2201d49a231b7b5d4970463f43ca0591abe8698462e4aa95"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "11": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "11.22"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/11/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/11/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/11/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/11/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/11/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/11/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/11/postgresql-11-A4.pdf", "bytes": 13057499, "pages": 2732, "sha256": "41d75855e610d0d9b8802b87dc5b080bef8d7e91c7cf69401fbf8d3cf801b4b5", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/11/postgresql-11-US.pdf", "bytes": 12961189, "pages": 2883, "sha256": "6a8899ef36935a5b7ed2b436207564a567a4ef1eb1c2200195876b8de4d4fa30", "built_at": "2026-09-26"}}, "tree": "11", "index": "index.html", "major": "11", "pages": 1125, "release": "11.22", "source_url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "svg_assets": 0, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "revision": "53315ddaf3b3f9e6669fd1edc096bbb2cd4a65ea3e836c89e542b43af9ba3a7f", "evidence_kind": "English manual and source declarations", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sources": [{"url": "https://pg.center/docs/11/pgtesttiming.html", "file": "pgtesttiming.html", "label": "11.22 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "8a6e9c0d08732289559266b03ae7474dfcf9ea0591bcae5f1ba7653102ab0716", "language": "en", "original_url": "/docs/11/pgtesttiming.html"}, {"url": "https://pg.center/docs/11/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "e940a8505b6742c717a1683d19bf8f759aad245633a59db9e83a345ae7c5709a", "language": "en", "original_url": "/docs/11/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.10.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.10.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.10.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/11/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/11/pgtesttiming.html", "method": "same-major semantic node", "sha256": "34973d8096a03a1d4f1a8eef39ecc8be4ea01a6d77de6f40bcac45a3df522e40", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/11/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/11/facts/0/label": "Documented executable", "/versions/11/facts/1/label": "Executable version", "/versions/11/facts/2/label": "Reference inventory", "/versions/11/facts/2/value": "Server applications", "/versions/11/facts/3/label": "Option definition groups", "/versions/11/tables/0/title": "Documented options", "/versions/11/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/11/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/11/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/11/tables/0/columns/0/label": "Option and arguments", "/versions/11/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "a573239faa594b00d3f18f6bba28f707df90016bfe6f1fcacabfffa87cc97595"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "12": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "12.22"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/12/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/12/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/12/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/12/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/12/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/12/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/12/postgresql-12-A4.pdf", "bytes": 13424351, "pages": 2803, "sha256": "7422cf53fd1939e7a3d2925231a88b0330e468afa5393627cac0ff86158a0621", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/12/postgresql-12-US.pdf", "bytes": 13322565, "pages": 2958, "sha256": "51f3b04e72907fc38512685946223452ea65f84419c60c66241dfa3396035e77", "built_at": "2026-09-26"}}, "tree": "12", "index": "index.html", "major": "12", "pages": 1131, "release": "12.22", "source_url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "svg_assets": 2, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "revision": "7a827e97cbfacd7febff75f34443e2043e40723de5b6d8c9d81a9430b65a37e4", "evidence_kind": "English manual and source declarations", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sources": [{"url": "https://pg.center/docs/12/pgtesttiming.html", "file": "pgtesttiming.html", "label": "12.22 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "2c710bb79864e47c2a5ed343e2881495934b38398ac8bc7280803ce8c2b863c9", "language": "en", "original_url": "/docs/12/pgtesttiming.html"}, {"url": "https://pg.center/docs/12/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "7f6ae1fadc1b0bffa606551460e62aacdc2508a3fb66566ddae861928ca6080b", "language": "en", "original_url": "/docs/12/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.11.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/12/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/12/pgtesttiming.html", "method": "same-major semantic node", "sha256": "3c3cbb42060576a4ed268a7919b73c58da0a514ad1b87920bb687e0564a7f221", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/12/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/12/facts/0/label": "Documented executable", "/versions/12/facts/1/label": "Executable version", "/versions/12/facts/2/label": "Reference inventory", "/versions/12/facts/2/value": "Server applications", "/versions/12/facts/3/label": "Option definition groups", "/versions/12/tables/0/title": "Documented options", "/versions/12/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/12/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/12/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/12/tables/0/columns/0/label": "Option and arguments", "/versions/12/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "e49657a2a0b704cc2a1577e7494dc2bbdeb9048cad1da9d90146263847aac11f"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "13": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "13.23"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/13/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/13/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/13/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/13/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/13/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/13/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/13/postgresql-13-A4.pdf", "bytes": 13843239, "pages": 2826, "sha256": "171cc09f90936dbc1cbd503a98ff07ae72ea58ab9771ff051313f1217737799c", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/13/postgresql-13-US.pdf", "bytes": 13739572, "pages": 2984, "sha256": "48d09c6e197d9db4220f41afe83efe848a8661b1b168d3b89419751ecaf6c24d", "built_at": "2026-09-26"}}, "tree": "13", "index": "index.html", "major": "13", "pages": 1139, "release": "13.23", "source_url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "revision": "614ee3133270254e476c118cdf6f72af78d4e4b8bbd9b28ed9ab1e14e4e9c0f6", "evidence_kind": "English manual and source declarations", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sources": [{"url": "https://pg.center/docs/13/pgtesttiming.html", "file": "pgtesttiming.html", "label": "13.23 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "b207d5aa4db462ca33bfe7d1dd13bbb86b654fccb220fe58293c4e842c1bf1b9", "language": "en", "original_url": "/docs/13/pgtesttiming.html"}, {"url": "https://pg.center/docs/13/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "074ef8577fd368272a2360309e1226e2d0b1e570a3e1da62dfcca63ac9ee5539", "language": "en", "original_url": "/docs/13/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.11.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/13/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/13/pgtesttiming.html", "method": "same-major semantic node", "sha256": "89915047186b503c8add57e97f3de06a1928af337c4f0299faeaf2cd0db21212", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/13/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/13/facts/0/label": "Documented executable", "/versions/13/facts/1/label": "Executable version", "/versions/13/facts/2/label": "Reference inventory", "/versions/13/facts/2/value": "Server applications", "/versions/13/facts/3/label": "Option definition groups", "/versions/13/tables/0/title": "Documented options", "/versions/13/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/13/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/13/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/13/tables/0/columns/0/label": "Option and arguments", "/versions/13/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "35286ebff05396fee041306003ccbf3628f3b7b840a866a419888f27b9357f25"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "14": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "14.24"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/14/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/14/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/14/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/14/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/14/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/14/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/14/postgresql-14-A4.pdf", "bytes": 14354704, "pages": 2944, "sha256": "8bc6b9dd7b246888bb77f0a5e8c39a2eae52e9926569832669c7d1600becb27c", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/14/postgresql-14-US.pdf", "bytes": 14242178, "pages": 3102, "sha256": "b7ecb5a5f62d8b9f73a69e25a7d26ba285373bc53168a553bff7b77955506db4", "built_at": "2026-09-26"}}, "tree": "14", "index": "index.html", "major": "14", "pages": 1158, "release": "14.24", "source_url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "revision": "588700d46356d8837c77c7c0a4e71e645fe6535983b8f1830aa8f2e4e41c40ae", "evidence_kind": "English manual and source declarations", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sources": [{"url": "https://pg.center/docs/14/pgtesttiming.html", "file": "pgtesttiming.html", "label": "14.24 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "774f0ff3c73a42d06b79d09f42f68482decbad88c1c68c4ace0adcfdda679555", "language": "en", "original_url": "/docs/14/pgtesttiming.html"}, {"url": "https://pg.center/docs/14/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "db0cdccaa8d3c65ad3b2a07d4956eb5a783a18505bfa0f9d9626eef4ab94fe44", "language": "en", "original_url": "/docs/14/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.11.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/14/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/14/pgtesttiming.html", "method": "same-major semantic node", "sha256": "f687dbde9d773d7feab5364059e34a2a3d2455c635cd7edb93defda696444550", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/14/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/14/facts/0/label": "Documented executable", "/versions/14/facts/1/label": "Executable version", "/versions/14/facts/2/label": "Reference inventory", "/versions/14/facts/2/value": "Server applications", "/versions/14/facts/3/label": "Option definition groups", "/versions/14/tables/0/title": "Documented options", "/versions/14/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/14/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/14/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/14/tables/0/columns/0/label": "Option and arguments", "/versions/14/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "414de07c11a3b8f3e50c03be4d3c9ce05f54cadb0695cdc72d21f454b3f9010d"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "15": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "15.19"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/15/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/15/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/15/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/15/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/15/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/15/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/15/postgresql-15-A4.pdf", "bytes": 14609140, "pages": 2987, "sha256": "66228564a4d16efb47d6a914085716ecfe22ca1566db56bc7c3d82f790646d72", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/15/postgresql-15-US.pdf", "bytes": 14495690, "pages": 3153, "sha256": "645a498c2390d47a6223ec74770631185807a19c484edb0fc5a295d9f460bc02", "built_at": "2026-09-26"}}, "tree": "15", "index": "index.html", "major": "15", "pages": 1168, "release": "15.19", "source_url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "revision": "6af958c6520151fc7697d56e0616b03fb00522c4568158674d452ae0644ba545", "evidence_kind": "English manual and source declarations", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sources": [{"url": "https://pg.center/docs/15/pgtesttiming.html", "file": "pgtesttiming.html", "label": "15.19 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "a5aca463b9f3017537591afc4f8d6987025ca0afc94776a2cf99fc5a526790fa", "language": "en", "original_url": "/docs/15/pgtesttiming.html"}, {"url": "https://pg.center/docs/15/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "1240cfbb13ebfd22aac8d5ae40c62a9015b246f7774bcf0bce97355ce06350a0", "language": "en", "original_url": "/docs/15/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.11.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/15/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/15/pgtesttiming.html", "method": "same-major semantic node", "sha256": "87012d07a168355e47b158aa1f0e8ec7329a25ff11afaee8501d8dc66de2032d", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/15/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/15/facts/0/label": "Documented executable", "/versions/15/facts/1/label": "Executable version", "/versions/15/facts/2/label": "Reference inventory", "/versions/15/facts/2/value": "Server applications", "/versions/15/facts/3/label": "Option definition groups", "/versions/15/tables/0/title": "Documented options", "/versions/15/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/15/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/15/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/15/tables/0/columns/0/label": "Option and arguments", "/versions/15/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "919cd78d1bf529a321295eb0b8e35bc6b117f88f1d3094c0c700afe8d7e74e98"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "16": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "16.15"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/16/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/16/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/16/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/16/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/16/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/16/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/16/postgresql-16-A4.pdf", "bytes": 15282337, "pages": 3055, "sha256": "4bb6c1f63deedac98736d8c4c7bc0fad0ac24e85b07e21ee10411872f06afd06", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/16/postgresql-16-US.pdf", "bytes": 15164148, "pages": 3220, "sha256": "5b6b6166c89991199e144bb0ae34c17a5f29826251dbf19db1abc0df3a3e771b", "built_at": "2026-09-26"}}, "tree": "16", "index": "index.html", "major": "16", "pages": 1169, "release": "16.15", "source_url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "revision": "3c21e58b35318021716440e67bb8bafd392b6a2b965a244d90e9e33c99e0bdef", "evidence_kind": "English manual and source declarations", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sources": [{"url": "https://pg.center/docs/16/pgtesttiming.html", "file": "pgtesttiming.html", "label": "16.15 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "2fb73387c5fb23f8b867c4f8b81d0f1247f8f0255d99591153b74e6adeeeff3f", "language": "en", "original_url": "/docs/16/pgtesttiming.html"}, {"url": "https://pg.center/docs/16/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "8aaa4422eece8f26d84715f855d9d0f7f87b200f8b82898c73c865ee42c2c70f", "language": "en", "original_url": "/docs/16/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.11.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.11.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.11.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/16/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/16/pgtesttiming.html", "method": "same-major semantic node", "sha256": "4f673b01c53ae830b4addf0f8ea01c501aa393b8071b171f20ec799990869be0", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/16/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/16/facts/0/label": "Documented executable", "/versions/16/facts/1/label": "Executable version", "/versions/16/facts/2/label": "Reference inventory", "/versions/16/facts/2/value": "Server applications", "/versions/16/facts/3/label": "Option definition groups", "/versions/16/tables/0/title": "Documented options", "/versions/16/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/16/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/16/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/16/tables/0/columns/0/label": "Option and arguments", "/versions/16/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f6783021ed270c17b926e94ae6a0c0abd81a9b4dd700c4ba572add012e79d052"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "17": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "17.11"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/17/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/17/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/17/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/17/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/17/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/17/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/17/postgresql-17-A4.pdf", "bytes": 15521293, "pages": 3099, "sha256": "1991354df0dc89e70ec39328c28988ef8b19c6a93671dab3893650b63e9f4e36", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/17/postgresql-17-US.pdf", "bytes": 15398150, "pages": 3270, "sha256": "07696c8f38abf31babf22d2db337093936e7c472d2af36d050b000c49bbcf52c", "built_at": "2026-09-26"}}, "tree": "17", "index": "index.html", "major": "17", "pages": 1143, "release": "17.11", "source_url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "revision": "58419c9b0dd42cb34c8d53695bb025a7e582edf55ccd4c5bcb1c2c7c71a37487", "evidence_kind": "English manual and source declarations", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sources": [{"url": "https://pg.center/docs/17/pgtesttiming.html", "file": "pgtesttiming.html", "label": "17.11 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "964f3ce1ef6b944f1a40bb3134c4d679e86d96538b729985f58f9b743ba9d6e8", "language": "en", "original_url": "/docs/17/pgtesttiming.html"}, {"url": "https://pg.center/docs/17/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "01f07993ff020684f4c290d17cdafa26fb17ea5c1d476bc3a5efc68bf8ddd9b9", "language": "en", "original_url": "/docs/17/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.12.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/17/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/17/pgtesttiming.html", "method": "same-major semantic node", "sha256": "027e05a112807f63daa4ca68f2e89be04f2cbd625f2864214628694a5585f574", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/17/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/17/facts/0/label": "Documented executable", "/versions/17/facts/1/label": "Executable version", "/versions/17/facts/2/label": "Reference inventory", "/versions/17/facts/2/value": "Server applications", "/versions/17/facts/3/label": "Option definition groups", "/versions/17/tables/0/title": "Documented options", "/versions/17/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/17/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/17/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/17/tables/0/columns/0/label": "Option and arguments", "/versions/17/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "496d18c66f6741a996d03b0a3ca22306664d96506a7e78505624c0463cc4857f"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "18": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "18.6"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/18/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/18/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/18/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/18/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/18/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/18/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/18/postgresql-18-A4.pdf", "bytes": 15865106, "pages": 3154, "sha256": "19512c405da53f9f7fcf0abba359223aa65f021be025bf3411381918f92e3190", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/18/postgresql-18-US.pdf", "bytes": 15748059, "pages": 3328, "sha256": "facbe6c229e598b872d3d98bef53308f46e06746006fa4590de9a7de9dd46319", "built_at": "2026-09-26"}}, "tree": "18", "index": "index.html", "major": "18", "pages": 1148, "release": "18.6", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "revision": "ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8", "evidence_kind": "English manual and source declarations", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/pgtesttiming.html", "file": "pgtesttiming.html", "label": "18.6 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "8766dacb1c3fc7b8afd518c8cf1165ac81c82eef9375dc6d3e1a7ae2e99962f5", "language": "en", "original_url": "/docs/18/pgtesttiming.html"}, {"url": "https://pg.center/docs/18/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "e9f8bbcc8e3641fadd1d20991e8aad6b532155b786ba5a1b7b364ec4f1a5bef3", "language": "en", "original_url": "/docs/18/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.12.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/18/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/pgtesttiming.html", "method": "same-major semantic node", "sha256": "395d75686c4926f39f5c746b6bc97f207181a2dcc11adf97ffe58002e7913157", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/18/facts/0/label": "Documented executable", "/versions/18/facts/1/label": "Executable version", "/versions/18/facts/2/label": "Reference inventory", "/versions/18/facts/2/value": "Server applications", "/versions/18/facts/3/label": "Option definition groups", "/versions/18/tables/0/title": "Documented options", "/versions/18/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/18/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/18/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/18/tables/0/columns/0/label": "Option and arguments", "/versions/18/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "e6885a3c2f0811b8e857163f7195ee17dc712002ba75034378ac4f384e321b6e"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "19": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "19beta4"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "4"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u7cbe\u786e\u89c2\u6d4b\u8ba1\u65f6\u65f6\u957f\u5217\u8868\u7684\u622a\u6b62\u767e\u5206\u6bd4\uff08\u8ba1\u65f6\u65f6\u957f\u662f\u76f8\u90bb\u4e24\u6b21\u8bfb\u53d6\u7cfb\u7edf\u65f6\u949f\u503c\u7684\u5dee\uff09\u3002\u5f53\u7d2f\u8ba1\u767e\u5206\u6bd4\u8fbe\u5230\u6216\u8d85\u8fc7\u6b64\u503c\u65f6\uff0c\u5217\u8868\u7ed3\u675f\uff0c\u4f46\u89c2\u6d4b\u5230\u7684\u6700\u5927\u65f6\u957f\u59cb\u7ec8\u4f1a\u6253\u5370\u3002\u9ed8\u8ba4\u622a\u6b62\u503c\u4e3a 99.99\u3002", "signature": {"url": "/docs/19/pgtesttiming.html", "text": "-c cutoff --cutoff= cutoff"}}, {"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/19/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/19/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/19/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-c cutoff", "--cutoff= cutoff"], "summary": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99.", "signature": "-c cutoff --cutoff= cutoff", "source_url": "/docs/19/pgtesttiming.html", "description": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99."}, {"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/19/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/19/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/19/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/19/postgresql-19-A4.pdf", "bytes": 16064841, "pages": 3052, "sha256": "4dd099e4125c591128fc5f3ebd02178dc24781f9e5ae629f96d67c4c8547427b", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/19/postgresql-19-US.pdf", "bytes": 15974616, "pages": 3225, "sha256": "61971fa857f0956d47341a0388fa6af9ae10acf691d4b2fc009007d384b0342b", "built_at": "2026-09-26"}}, "tree": "19", "index": "index.html", "major": "19", "pages": 1155, "release": "19beta4", "source_url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "svg_assets": 5, "source_mode": "en SGML built with pinned official archive", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "revision": "1bbbbf4133d426f0e4304010688d2984c30fb67df0cc3a61b3e37eb3f6f37833", "evidence_kind": "English manual and source declarations", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "sources": [{"url": "https://pg.center/docs/19/pgtesttiming.html", "file": "pgtesttiming.html", "label": "19beta4 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "2dd2a25756595fb9663d5ff42fc5294b3fa6d8f1d4a407dba16e1f973f9333f1", "language": "en", "original_url": "/docs/19/pgtesttiming.html"}, {"url": "https://pg.center/docs/19/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "425b070323b448b5516d2cb4e9e4ac77efb5d19dd4e8005d0ae1c61db9ec78e6", "language": "en", "original_url": "/docs/19/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.12.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span> \u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u4e0a\u7684\u8ba1\u65f6\u5f00\u9500\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u7684\u5de5\u5177\u3002\u5b83\u4f1a\u5728\u6307\u5b9a\u65f6\u957f\u5185\u4ee5\u5c3d\u53ef\u80fd\u5feb\u7684\u901f\u5ea6\u53cd\u590d\u8bfb\u53d6\u53d7\u652f\u6301\u7684\u65f6\u949f\u6e90\uff0c\u7136\u540e\u6253\u5370\u76f8\u90bb\u65f6\u949f\u8bfb\u6570\u4e4b\u95f4\u89c2\u6d4b\u5230\u7684\u5dee\u5f02\u7edf\u8ba1\uff0c\u4ee5\u53ca\u5c06\u4f7f\u7528\u54ea\u4e2a\u65f6\u949f\u6e90\u3002</p>\n<p lang=\"zh\">\u66f4\u5c0f\uff08\u4f46\u4e0d\u4e3a\u96f6\uff09\u7684\u5dee\u5f02\u66f4\u597d\uff0c\u56e0\u4e3a\u8fd9\u610f\u5473\u7740\u65f6\u949f\u786c\u4ef6\u66f4\u7cbe\u786e\uff0c\u6536\u96c6\u4e00\u6b21\u65f6\u949f\u8bfb\u6570\u7684\u5f00\u9500\u4e5f\u66f4\u5c0f\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n<p lang=\"zh\">\u8be5\u5de5\u5177\u8fd8\u6709\u52a9\u4e8e\u5224\u65ad <code class=\"varname\">track_io_timing</code> \u914d\u7f6e\u53c2\u6570\u662f\u5426\u53ef\u80fd\u4ea7\u751f\u6709\u7528\u7ed3\u679c\uff0c\u4ee5\u53ca <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\uff08\u53c2\u89c1<a class=\"xref\" href=\"/docs/19/runtime-config-resource.html#GUC-TIMING-CLOCK-SOURCE\">timing_clock_source</a>\uff09\u662f\u5426\u53ef\u7528\u5e76\u4f1a\u9ed8\u8ba4\u4f7f\u7528\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-c <em class=\"replaceable\"><code>cutoff</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--cutoff=<em class=\"replaceable\"><code>cutoff</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\u6307\u5b9a\u7cbe\u786e\u89c2\u6d4b\u8ba1\u65f6\u65f6\u957f\u5217\u8868\u7684\u622a\u6b62\u767e\u5206\u6bd4\uff08\u8ba1\u65f6\u65f6\u957f\u662f\u76f8\u90bb\u4e24\u6b21\u8bfb\u53d6\u7cfb\u7edf\u65f6\u949f\u503c\u7684\u5dee\uff09\u3002\u5f53\u7d2f\u8ba1\u767e\u5206\u6bd4\u8fbe\u5230\u6216\u8d85\u8fc7\u6b64\u503c\u65f6\uff0c\u5217\u8868\u7ed3\u675f\uff0c\u4f46\u89c2\u6d4b\u5230\u7684\u6700\u5927\u65f6\u957f\u59cb\u7ec8\u4f1a\u6253\u5370\u3002\u9ed8\u8ba4\u622a\u6b62\u503c\u4e3a 99.99\u3002</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u7b2c\u4e00\u5757\u8f93\u51fa\u5305\u542b\u56db\u5217\uff0c\u5404\u884c\u5c55\u793a\u8ba1\u65f6\u65f6\u957f\uff08\u5373\u8fde\u7eed\u4e24\u6b21\u65f6\u949f\u8bfb\u53d6\u503c\u4e4b\u5dee\uff09\u6309 log2(ns) \u5206\u6876\u5e76\u5c06\u6876\u7f16\u53f7\u504f\u79fb\u4e00\u4f4d\u7684\u76f4\u65b9\u56fe\u3002\u8fd9\u5e76\u975e\u7ecf\u5178\u7684 log2(n+1) \u76f4\u65b9\u56fe\uff0c\u56e0\u4e3a\u5b83\u5355\u72ec\u7edf\u8ba1\u96f6\u503c\uff0c\u7136\u540e\u4ece\u503c 1 \u5f00\u59cb\u6539\u7528 log2(ns)\u3002</p>\n<p lang=\"zh\">\u5404\u5217\u542b\u4e49\u5982\u4e0b\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\u5927\u4e8e\u7b49\u4e8e\u8be5\u6876\u6301\u7eed\u65f6\u95f4\u7684\u7eb3\u79d2\u503c</li>\n<li class=\"listitem\" lang=\"zh\">\u8be5\u6876\u5185\u6301\u7eed\u65f6\u95f4\u6240\u5360\u767e\u5206\u6bd4</li>\n<li class=\"listitem\" lang=\"zh\">\u8be5\u6876\u53ca\u4e4b\u524d\u5404\u6876\u6301\u7eed\u65f6\u95f4\u7684\u7d2f\u8ba1\u767e\u5206\u6bd4</li>\n<li class=\"listitem\" lang=\"zh\">\u8be5\u6876\u5185\u6301\u7eed\u65f6\u95f4\u7684\u8ba1\u6570</li>\n</ul>\n</div>\n<p lang=\"zh\">\u7b2c\u4e8c\u5757\u8f93\u51fa\u4f1a\u7ed9\u51fa\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\uff0c\u663e\u793a\u89c2\u6d4b\u5230\u7684\u7cbe\u786e\u8ba1\u65f6\u5dee\u5f02\u3002\u4e3a\u7b80\u6d01\u8d77\u89c1\uff0c\u5f53\u7d2f\u8ba1\u767e\u5206\u6bd4\u8d85\u8fc7\u7528\u6237\u53ef\u9009\u7684\u622a\u65ad\u503c\u65f6\uff0c\u8fd9\u4e2a\u5217\u8868\u5c31\u4f1a\u622a\u65ad\u3002\u4e0d\u8fc7\uff0c\u59cb\u7ec8\u4f1a\u663e\u793a\u89c2\u6d4b\u5230\u7684\u6700\u5927\u5dee\u5f02\u3002</p>\n<p lang=\"zh\">\u5728\u652f\u6301 <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u7684\u5e73\u53f0\u4e0a\uff0c\u8fd8\u4f1a\u663e\u793a\u989d\u5916\u7684\u8f93\u51fa\u90e8\u5206\uff0c\u5206\u522b\u5bf9\u5e94 <code class=\"command\">RDTSCP</code> \u6307\u4ee4\uff08\u7528\u4e8e\u4e00\u822c\u8ba1\u65f6\u9700\u6c42\uff0c\u4f8b\u5982 <code class=\"varname\">track_io_timing</code>\uff09\u548c <code class=\"command\">RDTSC</code> \u6307\u4ee4\uff08\u7528\u4e8e <code class=\"command\">EXPLAIN ANALYZE</code>\uff09\u3002\u5728\u8f93\u51fa\u672b\u5c3e\uff0c\u8fd8\u4f1a\u663e\u793a <acronym class=\"acronym\">TSC</acronym> \u9891\u7387\uff0c\u5b83\u53ef\u80fd\u76f4\u63a5\u6765\u81ea CPU \u4fe1\u606f\uff0c\u4e5f\u53ef\u80fd\u6765\u81ea\u66ff\u4ee3\u6821\u51c6\u673a\u5236\uff0c\u4ee5\u53ca <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u662f\u5426\u4f1a\u9ed8\u8ba4\u4f7f\u7528\u3002</p>\n<p lang=\"zh\">\u4e0b\u9762\u7684\u793a\u4f8b\u7ed3\u679c\u663e\u793a\uff0c\u7cfb\u7edf\u65f6\u949f\u8ba1\u65f6\u4e2d\u6709 99.99% \u7684\u5faa\u73af\u8017\u65f6\u4ecb\u4e8e 16 \u5230 63 \u7eb3\u79d2\u4e4b\u95f4\u3002\u5728\u7b2c\u4e8c\u5757\u4e2d\uff0c\u53ef\u4ee5\u770b\u5230\u5178\u578b\u5faa\u73af\u65f6\u95f4\u4e3a 40 \u7eb3\u79d2\uff0c\u8bfb\u6570\u770b\u8d77\u6765\u5177\u6709\u5b8c\u6574\u7684\u7eb3\u79d2\u7cbe\u5ea6\u3002\u5728\u7cfb\u7edf\u65f6\u949f\u7ed3\u679c\u4e4b\u540e\uff0c\u4ee5\u540c\u6837\u65b9\u5f0f\u663e\u793a\u4e86 <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u7ed3\u679c\u3002<code class=\"command\">RDTSCP</code> \u6307\u4ee4\u663e\u793a\u5927\u591a\u6570\u5faa\u73af\u5728 20-30 \u7eb3\u79d2\u5185\u5b8c\u6210\uff0c\u800c <code class=\"command\">RDTSC</code> \u6307\u4ee4\u6700\u5feb\uff0c\u5e73\u5747\u5faa\u73af\u65f6\u95f4\u4e3a 20 \u7eb3\u79d2\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c<acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u4f1a\u9ed8\u8ba4\u4f7f\u7528\uff0c\u4f46\u53ef\u4ee5\u901a\u8fc7\u5c06 <code class=\"varname\">timing_clock_source</code> \u8bbe\u4e3a <code class=\"literal\">system</code> \u6765\u7981\u7528\u3002</p>\n<pre class=\"screen\">System clock source: clock_gettime (CLOCK_MONOTONIC)\nTesting timing overhead for 3 seconds.\nAverage loop time including overhead: 44.67 ns\nHistogram of timing durations:\n   &lt;= ns   % of total  running %      count\n       0       0.0000     0.0000          0\n       1       0.0000     0.0000          0\n       3       0.0000     0.0000          0\n       7       0.0000     0.0000          0\n      15       0.0000     0.0000          0\n      31      24.0606    24.0606    5385707\n      63      75.8342    99.8948   16974658\n     127       0.0900    99.9848      20143\n     255       0.0069    99.9917       1542\n     511       0.0014    99.9932        322\n    1023       0.0003    99.9935         68\n    2047       0.0001    99.9936         23\n    4095       0.0036    99.9972        813\n    8191       0.0018    99.9990        402\n   16383       0.0005    99.9995        120\n   32767       0.0001    99.9997         32\n   65535       0.0001    99.9998         24\n\nObserved timing durations up to 99.9900%:\n      ns   % of total  running %      count\n      29       3.6921     3.6921     826442\n      30      16.6755    20.3676    3732628\n      31       3.6930    24.0606     826637\n      40      75.7761    99.8368   16961658\n      41       0.0019    99.8387        431\n...\n     190       0.0003    99.9901         65\n...\n29657159       0.0000   100.0000          1\n\nClock source: RDTSCP\nAverage loop time including overhead: 37.32 ns\nHistogram of timing durations:\n   &lt;= ns   % of total  running %      count\n       0       0.0000     0.0000          0\n       1       0.0000     0.0000          0\n       3       0.0000     0.0000          0\n       7       0.0000     0.0000          0\n      15       0.0000     0.0000          0\n      31      99.9499    99.9499   26782299\n      63       0.0381    99.9880      10220\n     127       0.0008    99.9889        224\n     255       0.0052    99.9941       1403\n     511       0.0013    99.9954        340\n    1023       0.0001    99.9954         17\n    2047       0.0000    99.9955          7\n    4095       0.0021    99.9976        569\n    8191       0.0013    99.9989        357\n   16383       0.0005    99.9994        128\n   32767       0.0003    99.9996         70\n   65535       0.0001    99.9997         19\n\nObserved timing durations up to 99.9900%:\n      ns   % of total  running %      count\n      20      16.9064    16.9064    4530201\n      29      41.5214    58.4279   11125972\n      30      41.5220    99.9499   11126126\n      40       0.0089    99.9587       2374\n...\n     130       0.0007    99.9902        181\n...\n18501572       0.0000   100.0000          1\n\nFast clock source: RDTSC\nAverage loop time including overhead: 27.12 ns\nHistogram of timing durations:\n   &lt;= ns   % of total  running %      count\n       0       0.0000     0.0000          0\n       1       0.0000     0.0000          0\n       3       0.0000     0.0000          0\n       7       0.0000     0.0000          0\n      15       1.2247     1.2247     456231\n      31      98.7566    99.9813   36789785\n      63       0.0109    99.9921       4049\n     127       0.0029    99.9951       1087\n     255       0.0008    99.9959        305\n     511       0.0007    99.9966        279\n    1023       0.0000    99.9966          7\n    2047       0.0001    99.9967         22\n    4095       0.0018    99.9985        673\n    8191       0.0010    99.9995        383\n   16383       0.0003    99.9998         94\n   32767       0.0001    99.9999         38\n   65535       0.0000    99.9999          9\n\nObserved timing durations up to 99.9900%:\n      ns   % of total  running %      count\n       9       0.6316     0.6316     235290\n      10       0.5931     1.2247     220941\n      20      91.4328    92.6574   34061442\n      29       3.6427    96.3001    1357007\n      30       3.6811    99.9813    1371336\n      40       0.0089    99.9902       3325\n...\n61594291       0.0000   100.0000          1\n\nTSC frequency source: x86, cpuid 0x15\nTSC frequency in use: 2449228 kHz\nTSC frequency from calibration: 2448603 kHz\n\nTSC clock source will be used by default, unless timing_clock_source is set to 'system'.\n</pre>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/19/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a>, <a class=\"xref\" href=\"https://pg.center/docs/19/runtime-config-resource.html#GUC-TIMING-CLOCK-SOURCE\">timing_clock_source</a>, <a class=\"ulink\" href=\"https://wiki.postgresql.org/wiki/Pg_test_timing\">Wiki discussion about timing</a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/19/pgtesttiming.html", "method": "same-major semantic node", "sha256": "25e1e00f32db51885f0aba6ae184fba1f9f0d0fd42c8e9df49f96e3ae87ed88b", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[4]/p[2]", "#PGTESTTIMING/div[4]/p[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[7]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[0]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[1]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[2]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[3]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[1]/p[2]", "#PGTESTTIMING/div[6]/div[1]/p[4]", "#PGTESTTIMING/div[6]/div[1]/p[5]", "#PGTESTTIMING/div[6]/div[1]/p[6]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/19/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/19/facts/0/label": "Documented executable", "/versions/19/facts/1/label": "Executable version", "/versions/19/facts/2/label": "Reference inventory", "/versions/19/facts/2/value": "Server applications", "/versions/19/facts/3/label": "Option definition groups", "/versions/19/tables/0/title": "Documented options", "/versions/19/tables/0/rows/0/summary": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99.", "/versions/19/tables/0/rows/1/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/19/tables/0/rows/2/summary": "Print the pg_test_timing version and exit.", "/versions/19/tables/0/rows/3/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/19/tables/0/columns/0/label": "Option and arguments", "/versions/19/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "df35a08bbf61f096b5c67e66f6d9b2f3a98094c874a7c6afbc0b2f29c2ff6452"}, "comparison_data": {"options": [{"names": ["-c cutoff", "--cutoff= cutoff"], "signature": "-c cutoff --cutoff= cutoff", "description": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99."}, {"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "be611164318cc707ee6f510dff66f3aacece41205f98114e61d95b161b44fd10", "manual_language": "zh"}, "20": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "20devel"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "4"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u7cbe\u786e\u89c2\u6d4b\u8ba1\u65f6\u65f6\u957f\u5217\u8868\u7684\u622a\u6b62\u767e\u5206\u6bd4\uff08\u8ba1\u65f6\u65f6\u957f\u662f\u76f8\u90bb\u4e24\u6b21\u8bfb\u53d6\u7cfb\u7edf\u65f6\u949f\u503c\u7684\u5dee\uff09\u3002\u5f53\u7d2f\u8ba1\u767e\u5206\u6bd4\u8fbe\u5230\u6216\u8d85\u8fc7\u6b64\u503c\u65f6\uff0c\u5217\u8868\u7ed3\u675f\uff0c\u4f46\u89c2\u6d4b\u5230\u7684\u6700\u5927\u65f6\u957f\u59cb\u7ec8\u4f1a\u6253\u5370\u3002\u9ed8\u8ba4\u622a\u6b62\u503c\u4e3a 99.99\u3002", "signature": {"url": "/docs/devel/pgtesttiming.html", "text": "-c cutoff --cutoff= cutoff"}}, {"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/devel/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/devel/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/devel/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-c cutoff", "--cutoff= cutoff"], "summary": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99.", "signature": "-c cutoff --cutoff= cutoff", "source_url": "/docs/devel/pgtesttiming.html", "description": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99."}, {"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/devel/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/devel/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/devel/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/20/postgresql-20-A4.pdf", "bytes": 16030631, "pages": 3052, "sha256": "bd5d82c0ce38fc18f92a0447818a91a193a261776bca1c37564bf9a683e177d0", "built_at": "2026-09-28"}, "US": {"url": "/files/documentation/pdf/20/postgresql-20-US.pdf", "bytes": 15936613, "pages": 3223, "sha256": "d97d9e0db479a02f4234b175f50fcad70c3661619afc8d6df9b9437882e3c299", "built_at": "2026-09-28"}}, "tree": "0", "index": "index.html", "major": "20", "pages": 1156, "release": "20devel", "source_url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "svg_assets": 6, "source_mode": "en SGML built with pinned official archive", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "source_snapshot_utc": "26-Sep-2026 20:22"}, "revision": "2eba5e0fd4c3bffb2803247b6cd537878e9d6ee5a6dfbe3c50ece8b421b80918", "evidence_kind": "English manual and source declarations", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, "sources": [{"url": "https://pg.center/docs/devel/pgtesttiming.html", "file": "pgtesttiming.html", "label": "20devel English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "e7897e7aa40e1ca8db62e75e33493c2f3a8c168bf377dd63f1702baaa9af4977", "language": "en", "original_url": "/docs/devel/pgtesttiming.html"}, {"url": "https://pg.center/docs/devel/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "5532c1ebfb8c6f310301be63a28daf0ae212e2a78025bea61a1bdca99e02c43d", "language": "en", "original_url": "/docs/devel/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.12.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span> \u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u4e0a\u7684\u8ba1\u65f6\u5f00\u9500\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u7684\u5de5\u5177\u3002\u5b83\u4f1a\u5728\u6307\u5b9a\u65f6\u957f\u5185\u4ee5\u5c3d\u53ef\u80fd\u5feb\u7684\u901f\u5ea6\u53cd\u590d\u8bfb\u53d6\u53d7\u652f\u6301\u7684\u65f6\u949f\u6e90\uff0c\u7136\u540e\u6253\u5370\u76f8\u90bb\u65f6\u949f\u8bfb\u6570\u4e4b\u95f4\u89c2\u6d4b\u5230\u7684\u5dee\u5f02\u7edf\u8ba1\uff0c\u4ee5\u53ca\u5c06\u4f7f\u7528\u54ea\u4e2a\u65f6\u949f\u6e90\u3002</p>\n<p lang=\"zh\">\u66f4\u5c0f\uff08\u4f46\u4e0d\u4e3a\u96f6\uff09\u7684\u5dee\u5f02\u66f4\u597d\uff0c\u56e0\u4e3a\u8fd9\u610f\u5473\u7740\u65f6\u949f\u786c\u4ef6\u66f4\u7cbe\u786e\uff0c\u6536\u96c6\u4e00\u6b21\u65f6\u949f\u8bfb\u6570\u7684\u5f00\u9500\u4e5f\u66f4\u5c0f\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n<p lang=\"zh\">\u8be5\u5de5\u5177\u8fd8\u6709\u52a9\u4e8e\u5224\u65ad <code class=\"varname\">track_io_timing</code> \u914d\u7f6e\u53c2\u6570\u662f\u5426\u53ef\u80fd\u4ea7\u751f\u6709\u7528\u7ed3\u679c\uff0c\u4ee5\u53ca <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\uff08\u53c2\u89c1<a class=\"xref\" href=\"/docs/devel/runtime-config-resource.html#GUC-TIMING-CLOCK-SOURCE\">timing_clock_source</a>\uff09\u662f\u5426\u53ef\u7528\u5e76\u4f1a\u9ed8\u8ba4\u4f7f\u7528\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-c <em class=\"replaceable\"><code>cutoff</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--cutoff=<em class=\"replaceable\"><code>cutoff</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\u6307\u5b9a\u7cbe\u786e\u89c2\u6d4b\u8ba1\u65f6\u65f6\u957f\u5217\u8868\u7684\u622a\u6b62\u767e\u5206\u6bd4\uff08\u8ba1\u65f6\u65f6\u957f\u662f\u76f8\u90bb\u4e24\u6b21\u8bfb\u53d6\u7cfb\u7edf\u65f6\u949f\u503c\u7684\u5dee\uff09\u3002\u5f53\u7d2f\u8ba1\u767e\u5206\u6bd4\u8fbe\u5230\u6216\u8d85\u8fc7\u6b64\u503c\u65f6\uff0c\u5217\u8868\u7ed3\u675f\uff0c\u4f46\u89c2\u6d4b\u5230\u7684\u6700\u5927\u65f6\u957f\u59cb\u7ec8\u4f1a\u6253\u5370\u3002\u9ed8\u8ba4\u622a\u6b62\u503c\u4e3a 99.99\u3002</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u7b2c\u4e00\u5757\u8f93\u51fa\u5305\u542b\u56db\u5217\uff0c\u5404\u884c\u5c55\u793a\u8ba1\u65f6\u65f6\u957f\uff08\u5373\u8fde\u7eed\u4e24\u6b21\u65f6\u949f\u8bfb\u53d6\u503c\u4e4b\u5dee\uff09\u6309 log2(ns) \u5206\u6876\u5e76\u5c06\u6876\u7f16\u53f7\u504f\u79fb\u4e00\u4f4d\u7684\u76f4\u65b9\u56fe\u3002\u8fd9\u5e76\u975e\u7ecf\u5178\u7684 log2(n+1) \u76f4\u65b9\u56fe\uff0c\u56e0\u4e3a\u5b83\u5355\u72ec\u7edf\u8ba1\u96f6\u503c\uff0c\u7136\u540e\u4ece\u503c 1 \u5f00\u59cb\u6539\u7528 log2(ns)\u3002</p>\n<p lang=\"zh\">\u5404\u5217\u542b\u4e49\u5982\u4e0b\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\u5927\u4e8e\u7b49\u4e8e\u8be5\u6876\u6301\u7eed\u65f6\u95f4\u7684\u7eb3\u79d2\u503c</li>\n<li class=\"listitem\" lang=\"zh\">\u8be5\u6876\u5185\u6301\u7eed\u65f6\u95f4\u6240\u5360\u767e\u5206\u6bd4</li>\n<li class=\"listitem\" lang=\"zh\">\u8be5\u6876\u53ca\u4e4b\u524d\u5404\u6876\u6301\u7eed\u65f6\u95f4\u7684\u7d2f\u8ba1\u767e\u5206\u6bd4</li>\n<li class=\"listitem\" lang=\"zh\">\u8be5\u6876\u5185\u6301\u7eed\u65f6\u95f4\u7684\u8ba1\u6570</li>\n</ul>\n</div>\n<p lang=\"zh\">\u7b2c\u4e8c\u5757\u8f93\u51fa\u4f1a\u7ed9\u51fa\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\uff0c\u663e\u793a\u89c2\u6d4b\u5230\u7684\u7cbe\u786e\u8ba1\u65f6\u5dee\u5f02\u3002\u4e3a\u7b80\u6d01\u8d77\u89c1\uff0c\u5f53\u7d2f\u8ba1\u767e\u5206\u6bd4\u8d85\u8fc7\u7528\u6237\u53ef\u9009\u7684\u622a\u65ad\u503c\u65f6\uff0c\u8fd9\u4e2a\u5217\u8868\u5c31\u4f1a\u622a\u65ad\u3002\u4e0d\u8fc7\uff0c\u59cb\u7ec8\u4f1a\u663e\u793a\u89c2\u6d4b\u5230\u7684\u6700\u5927\u5dee\u5f02\u3002</p>\n<p lang=\"zh\">\u5728\u652f\u6301 <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u7684\u5e73\u53f0\u4e0a\uff0c\u8fd8\u4f1a\u663e\u793a\u989d\u5916\u7684\u8f93\u51fa\u90e8\u5206\uff0c\u5206\u522b\u5bf9\u5e94 <code class=\"command\">RDTSCP</code> \u6307\u4ee4\uff08\u7528\u4e8e\u4e00\u822c\u8ba1\u65f6\u9700\u6c42\uff0c\u4f8b\u5982 <code class=\"varname\">track_io_timing</code>\uff09\u548c <code class=\"command\">RDTSC</code> \u6307\u4ee4\uff08\u7528\u4e8e <code class=\"command\">EXPLAIN ANALYZE</code>\uff09\u3002\u5728\u8f93\u51fa\u672b\u5c3e\uff0c\u8fd8\u4f1a\u663e\u793a <acronym class=\"acronym\">TSC</acronym> \u9891\u7387\uff0c\u5b83\u53ef\u80fd\u76f4\u63a5\u6765\u81ea CPU \u4fe1\u606f\uff0c\u4e5f\u53ef\u80fd\u6765\u81ea\u66ff\u4ee3\u6821\u51c6\u673a\u5236\uff0c\u4ee5\u53ca <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u662f\u5426\u4f1a\u9ed8\u8ba4\u4f7f\u7528\u3002</p>\n<p lang=\"zh\">\u4e0b\u9762\u7684\u793a\u4f8b\u7ed3\u679c\u663e\u793a\uff0c\u7cfb\u7edf\u65f6\u949f\u8ba1\u65f6\u4e2d\u6709 99.99% \u7684\u5faa\u73af\u8017\u65f6\u4ecb\u4e8e 16 \u5230 63 \u7eb3\u79d2\u4e4b\u95f4\u3002\u5728\u7b2c\u4e8c\u5757\u4e2d\uff0c\u53ef\u4ee5\u770b\u5230\u5178\u578b\u5faa\u73af\u65f6\u95f4\u4e3a 40 \u7eb3\u79d2\uff0c\u8bfb\u6570\u770b\u8d77\u6765\u5177\u6709\u5b8c\u6574\u7684\u7eb3\u79d2\u7cbe\u5ea6\u3002\u5728\u7cfb\u7edf\u65f6\u949f\u7ed3\u679c\u4e4b\u540e\uff0c\u4ee5\u540c\u6837\u65b9\u5f0f\u663e\u793a\u4e86 <acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u7ed3\u679c\u3002<code class=\"command\">RDTSCP</code> \u6307\u4ee4\u663e\u793a\u5927\u591a\u6570\u5faa\u73af\u5728 20\u201330 \u7eb3\u79d2\u5185\u5b8c\u6210\uff0c\u800c <code class=\"command\">RDTSC</code> \u6307\u4ee4\u6700\u5feb\uff0c\u5e73\u5747\u5faa\u73af\u65f6\u95f4\u4e3a 20 \u7eb3\u79d2\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c<acronym class=\"acronym\">TSC</acronym> \u65f6\u949f\u6e90\u4f1a\u9ed8\u8ba4\u4f7f\u7528\uff0c\u4f46\u53ef\u4ee5\u901a\u8fc7\u5c06 <code class=\"varname\">timing_clock_source</code> \u8bbe\u4e3a <code class=\"literal\">system</code> \u6765\u7981\u7528\u3002</p>\n<pre class=\"screen\">System clock source: clock_gettime (CLOCK_MONOTONIC)\nTesting timing overhead for 3 seconds.\nAverage loop time including overhead: 44.67 ns\nHistogram of timing durations:\n   &lt;= ns   % of total  running %      count\n       0       0.0000     0.0000          0\n       1       0.0000     0.0000          0\n       3       0.0000     0.0000          0\n       7       0.0000     0.0000          0\n      15       0.0000     0.0000          0\n      31      24.0606    24.0606    5385707\n      63      75.8342    99.8948   16974658\n     127       0.0900    99.9848      20143\n     255       0.0069    99.9917       1542\n     511       0.0014    99.9932        322\n    1023       0.0003    99.9935         68\n    2047       0.0001    99.9936         23\n    4095       0.0036    99.9972        813\n    8191       0.0018    99.9990        402\n   16383       0.0005    99.9995        120\n   32767       0.0001    99.9997         32\n   65535       0.0001    99.9998         24\n\nObserved timing durations up to 99.9900%:\n      ns   % of total  running %      count\n      29       3.6921     3.6921     826442\n      30      16.6755    20.3676    3732628\n      31       3.6930    24.0606     826637\n      40      75.7761    99.8368   16961658\n      41       0.0019    99.8387        431\n...\n     190       0.0003    99.9901         65\n...\n29657159       0.0000   100.0000          1\n\nClock source: RDTSCP\nAverage loop time including overhead: 37.32 ns\nHistogram of timing durations:\n   &lt;= ns   % of total  running %      count\n       0       0.0000     0.0000          0\n       1       0.0000     0.0000          0\n       3       0.0000     0.0000          0\n       7       0.0000     0.0000          0\n      15       0.0000     0.0000          0\n      31      99.9499    99.9499   26782299\n      63       0.0381    99.9880      10220\n     127       0.0008    99.9889        224\n     255       0.0052    99.9941       1403\n     511       0.0013    99.9954        340\n    1023       0.0001    99.9954         17\n    2047       0.0000    99.9955          7\n    4095       0.0021    99.9976        569\n    8191       0.0013    99.9989        357\n   16383       0.0005    99.9994        128\n   32767       0.0003    99.9996         70\n   65535       0.0001    99.9997         19\n\nObserved timing durations up to 99.9900%:\n      ns   % of total  running %      count\n      20      16.9064    16.9064    4530201\n      29      41.5214    58.4279   11125972\n      30      41.5220    99.9499   11126126\n      40       0.0089    99.9587       2374\n...\n     130       0.0007    99.9902        181\n...\n18501572       0.0000   100.0000          1\n\nFast clock source: RDTSC\nAverage loop time including overhead: 27.12 ns\nHistogram of timing durations:\n   &lt;= ns   % of total  running %      count\n       0       0.0000     0.0000          0\n       1       0.0000     0.0000          0\n       3       0.0000     0.0000          0\n       7       0.0000     0.0000          0\n      15       1.2247     1.2247     456231\n      31      98.7566    99.9813   36789785\n      63       0.0109    99.9921       4049\n     127       0.0029    99.9951       1087\n     255       0.0008    99.9959        305\n     511       0.0007    99.9966        279\n    1023       0.0000    99.9966          7\n    2047       0.0001    99.9967         22\n    4095       0.0018    99.9985        673\n    8191       0.0010    99.9995        383\n   16383       0.0003    99.9998         94\n   32767       0.0001    99.9999         38\n   65535       0.0000    99.9999          9\n\nObserved timing durations up to 99.9900%:\n      ns   % of total  running %      count\n       9       0.6316     0.6316     235290\n      10       0.5931     1.2247     220941\n      20      91.4328    92.6574   34061442\n      29       3.6427    96.3001    1357007\n      30       3.6811    99.9813    1371336\n      40       0.0089    99.9902       3325\n...\n61594291       0.0000   100.0000          1\n\nTSC frequency source: x86, cpuid 0x15\nTSC frequency in use: 2449228 kHz\nTSC frequency from calibration: 2448603 kHz\n\nTSC clock source will be used by default, unless timing_clock_source is set to 'system'.\n</pre>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/devel/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a>, <a class=\"xref\" href=\"https://pg.center/docs/devel/runtime-config-resource.html#GUC-TIMING-CLOCK-SOURCE\">timing_clock_source</a>, <a class=\"ulink\" href=\"https://wiki.postgresql.org/wiki/Pg_test_timing\">Wiki discussion about timing</a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/devel/pgtesttiming.html", "method": "same-major semantic node", "sha256": "8a4127ea0d9d7575024c103857a6c357b1a3a30015a30ab38f22892ff47f1776", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[4]/p[2]", "#PGTESTTIMING/div[4]/p[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[7]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[0]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[1]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[2]", "#PGTESTTIMING/div[6]/div[1]/div[3]/ul[0]/li[3]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[1]/p[2]", "#PGTESTTIMING/div[6]/div[1]/p[4]", "#PGTESTTIMING/div[6]/div[1]/p[5]", "#PGTESTTIMING/div[6]/div[1]/p[6]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/summary": "pg_test_timing \u2014 measure timing overhead", "/category": "Server applications", "/versions/20/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/20/facts/0/label": "Documented executable", "/versions/20/facts/1/label": "Executable version", "/versions/20/facts/2/label": "Reference inventory", "/versions/20/facts/2/value": "Server applications", "/versions/20/facts/3/label": "Option definition groups", "/versions/20/tables/0/title": "Documented options", "/versions/20/tables/0/rows/0/summary": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99.", "/versions/20/tables/0/rows/1/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/20/tables/0/rows/2/summary": "Print the pg_test_timing version and exit.", "/versions/20/tables/0/rows/3/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/20/tables/0/columns/0/label": "Option and arguments", "/versions/20/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "c5ad21c471ab750a6ec1d0ed0e062f4acd2946f3d82bced0d1f37b4fa2fe2aef"}, "comparison_data": {"options": [{"names": ["-c cutoff", "--cutoff= cutoff"], "signature": "-c cutoff --cutoff= cutoff", "description": "Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99."}, {"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "be611164318cc707ee6f510dff66f3aacece41205f98114e61d95b161b44fd10", "manual_language": "zh"}}}, "snapshot": {"facts": [{"label": "\u624b\u518c\u4e2d\u7684\u53ef\u6267\u884c\u7a0b\u5e8f", "value": "pg_test_timing"}, {"label": "\u7a0b\u5e8f\u7248\u672c", "value": "18.6"}, {"label": "\u53c2\u8003\u6e05\u5355", "value": "\u670d\u52a1\u7aef\u7a0b\u5e8f"}, {"label": "\u9009\u9879\u5b9a\u4e49\u7ec4", "value": "3"}], "tables": [{"key": "options", "rows": [{"summary": "\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002", "signature": {"url": "/docs/18/pgtesttiming.html", "text": "-d duration --duration= duration"}}, {"summary": "\u6253\u5370 pg_test_timing \u7248\u672c\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/18/pgtesttiming.html", "text": "-V --version"}}, {"summary": "\u663e\u793a\u6709\u5173 pg_test_timing \u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002", "signature": {"url": "/docs/18/pgtesttiming.html", "text": "-? --help"}}], "title": "\u624b\u518c\u4e2d\u7684\u9009\u9879", "columns": [{"key": "signature", "label": "\u9009\u9879\u4e0e\u53c2\u6570"}, {"key": "summary", "label": "\u8bf4\u660e"}]}], "options": [{"names": ["-d duration", "--duration= duration"], "summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "signature": "-d duration --duration= duration", "source_url": "/docs/18/pgtesttiming.html", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "summary": "Print the pg_test_timing version and exit.", "signature": "-V --version", "source_url": "/docs/18/pgtesttiming.html", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "summary": "Show help about pg_test_timing command line arguments, and exit.", "signature": "-? --help", "source_url": "/docs/18/pgtesttiming.html", "description": "Show help about pg_test_timing command line arguments, and exit."}], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/18/postgresql-18-A4.pdf", "bytes": 15865106, "pages": 3154, "sha256": "19512c405da53f9f7fcf0abba359223aa65f021be025bf3411381918f92e3190", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/18/postgresql-18-US.pdf", "bytes": 15748059, "pages": 3328, "sha256": "facbe6c229e598b872d3d98bef53308f46e06746006fa4590de9a7de9dd46319", "built_at": "2026-09-26"}}, "tree": "18", "index": "index.html", "major": "18", "pages": 1148, "release": "18.6", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "revision": "ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8", "evidence_kind": "English manual and source declarations", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/pgtesttiming.html", "file": "pgtesttiming.html", "label": "18.6 English manual \u00b7 pgtesttiming.html", "anchor": "", "sha256": "8766dacb1c3fc7b8afd518c8cf1165ac81c82eef9375dc6d3e1a7ae2e99962f5", "language": "en", "original_url": "/docs/18/pgtesttiming.html"}, {"url": "https://pg.center/docs/18/reference-server.html", "file": "reference-server.html", "label": "Server applications inventory", "anchor": "", "sha256": "e9f8bbcc8e3641fadd1d20991e8aad6b532155b786ba5a1b7b364ec4f1a5bef3", "language": "en", "original_url": "/docs/18/reference-server.html"}], "sections": [], "synopsis": ["pg_test_timing [ option ...]"], "signature": "pg_test_timing [ option ...]", "description": ["pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500"], "environment": [], "manual_html": "<div><div class=\"refentry\" id=\"PGTESTTIMING\">\n<div class=\"titlepage\"></div>\n<div class=\"refnamediv\">\n<h2><span class=\"refentrytitle\"><span class=\"application\">pg_test_timing</span></span></h2>\n<p lang=\"zh\">pg_test_timing \u2014 \u6d4b\u91cf\u8ba1\u65f6\u5f00\u9500</p>\n</div>\n<div class=\"refsynopsisdiv\">\n<h2 lang=\"zh\">\u5927\u7eb2</h2>\n<div class=\"cmdsynopsis\">\n<p id=\"id-1.9.5.12.4.1\"><code class=\"command\">pg_test_timing</code> [<em class=\"replaceable\"><code>option</code></em>...]</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.5\">\n<h2 lang=\"zh\">\u8bf4\u660e</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u662f\u4e00\u4e2a\u7528\u4e8e\u6d4b\u91cf\u7cfb\u7edf\u8ba1\u65f6\u5f00\u9500\u7684\u5de5\u5177\uff0c\u5e76\u786e\u8ba4\u7cfb\u7edf\u65f6\u95f4\u4e0d\u4f1a\u5012\u9000\u3002\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u8f83\u6162\u7684\u7cfb\u7edf\uff0c\u53ef\u80fd\u4f1a\u7ed9\u51fa\u4e0d\u591f\u7cbe\u786e\u7684 <code class=\"command\">EXPLAIN ANALYZE</code>\u7ed3\u679c\u3002</p>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.6\">\n<h2 lang=\"zh\">\u9009\u9879</h2>\n<p lang=\"zh\"><span class=\"application\">pg_test_timing</span>\u63a5\u53d7\u4e0b\u5217\u547d\u4ee4\u884c\u9009\u9879\uff1a</p>\n<div class=\"variablelist\">\n<dl class=\"variablelist\">\n<dt><span class=\"term\"><code class=\"option\">-d <em class=\"replaceable\"><code>duration</code></em></code><br/></span><span class=\"term\"><code class=\"option\">--duration=<em class=\"replaceable\"><code>duration</code></em></code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6307\u5b9a\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002\u6301\u7eed\u65f6\u95f4\u8d8a\u957f\uff0c\u7cbe\u5ea6\u4f1a\u7565\u6709\u63d0\u9ad8\uff0c\u4e5f\u66f4\u53ef\u80fd\u53d1\u73b0\u7cfb\u7edf\u65f6\u949f\u5012\u9000\u7684\u95ee\u9898\u3002\u9ed8\u8ba4\u6d4b\u8bd5\u6301\u7eed\u65f6\u95f4\u4e3a 3 \u79d2\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-V</code><br/></span><span class=\"term\"><code class=\"option\">--version</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u6253\u5370<span class=\"application\">pg_test_timing</span>\u7248\u672c\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n<dt><span class=\"term\"><code class=\"option\">-?</code><br/></span><span class=\"term\"><code class=\"option\">--help</code></span></dt>\n<dd>\n<p lang=\"zh\">\n<p>\u663e\u793a\u6709\u5173<span class=\"application\">pg_test_timing</span>\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\u3002</p>\n</p>\n</dd>\n</dl>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.7\">\n<h2 lang=\"zh\">\u7528\u6cd5</h2>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.2\">\n<h3 lang=\"zh\">\u7ed3\u679c\u89e3\u8bfb</h3>\n<p lang=\"zh\">\u826f\u597d\u7684\u7ed3\u679c\u5e94\u8868\u660e\uff0c\u5927\u591a\u6570\uff08&gt;90%\uff09\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u8017\u65f6\u5c11\u4e8e\u4e00\u5fae\u79d2\u3002\u6bcf\u8f6e\u5faa\u73af\u7684\u5e73\u5747\u5f00\u9500\u4f1a\u66f4\u4f4e\uff0c\u4f4e\u4e8e 100 \u7eb3\u79d2\u3002\u4e0b\u9762\u7684\u793a\u4f8b\u6765\u81ea\u4f7f\u7528 TSC \u65f6\u949f\u6e90\u7684 Intel i7-860 \u7cfb\u7edf\uff0c\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff1a</p>\n<pre class=\"screen\">Testing timing overhead for 3 seconds.\nPer loop time including overhead: 35.96 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     96.40465   80435604\n     2      3.59518    2999652\n     4      0.00015        126\n     8      0.00002         13\n    16      0.00000          2\n</pre>\n<p lang=\"zh\">\u6ce8\u610f\uff0c\u6bcf\u8f6e\u5faa\u73af\u8017\u65f6\u4e0e\u76f4\u65b9\u56fe\u4f7f\u7528\u7684\u5355\u4f4d\u4e0d\u540c\u3002\u5faa\u73af\u8017\u65f6\u7684\u5206\u8fa8\u7387\u53ef\u4ee5\u8fbe\u5230\u51e0\u7eb3\u79d2\uff08ns\uff09\uff0c\u800c\u5355\u6b21\u8ba1\u65f6\u8c03\u7528\u7684\u5206\u8fa8\u7387\u53ea\u80fd\u8fbe\u5230\u4e00\u5fae\u79d2\uff08us\uff09\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.3\">\n<h3 lang=\"zh\">\u6d4b\u91cf\u6267\u884c\u5668\u8ba1\u65f6\u5f00\u9500</h3>\n<p lang=\"zh\">\u5f53\u67e5\u8be2\u6267\u884c\u5668\u4f7f\u7528<code class=\"command\">EXPLAIN ANALYZE</code>\u8fd0\u884c\u8bed\u53e5\u65f6\uff0c\u9664\u4e86\u663e\u793a\u6c47\u603b\u4fe1\u606f\u4e4b\u5916\uff0c\u8fd8\u4f1a\u5bf9\u5404\u4e2a\u64cd\u4f5c\u5206\u522b\u8ba1\u65f6\u3002\u53ef\u4ee5\u4f7f\u7528<span class=\"application\">psql</span>\u7a0b\u5e8f\u7edf\u8ba1\u884c\u6570\uff0c\u4ee5\u68c0\u67e5\u4f60\u7684\u7cfb\u7edf\u4e0a\u7684\u8fd9\u7c7b\u5f00\u9500\uff1a</p>\n<pre class=\"screen\">CREATE TABLE t AS SELECT * FROM generate_series(1,100000);\n\\timing\nSELECT COUNT(*) FROM t;\nEXPLAIN ANALYZE SELECT COUNT(*) FROM t;\n</pre>\n<p lang=\"zh\">\u5728\u6240\u6d4b\u7684 i7-860 \u7cfb\u7edf\u4e0a\uff0c\u666e\u901a\u8ba1\u6570\u67e5\u8be2\u8017\u65f6 9.8 ms\uff0c\u800c <code class=\"command\">EXPLAIN ANALYZE</code>\u7248\u672c\u8017\u65f6 16.6 ms\uff0c\u4e24\u8005\u90fd\u5904\u7406\u4e86\u7565\u591a\u4e8e 100,000 \u884c\u3002\u8fd9 6.8 ms \u7684\u5dee\u5f02\u610f\u5473\u7740\u6bcf\u884c\u7684\u8ba1\u65f6\u5f00\u9500\u4e3a 68 ns\uff0c\u5927\u7ea6\u662f pg_test_timing \u4f30\u8ba1\u503c\u7684\u4e24\u500d\u3002\u5373\u4fbf\u662f\u8fd9\u6837\u76f8\u5bf9\u8f83\u5c0f\u7684\u5f00\u9500\uff0c\u4e5f\u4f1a\u8ba9\u5b8c\u6574\u8ba1\u65f6\u7684\u8ba1\u6570\u8bed\u53e5\u8017\u65f6\u589e\u52a0\u8fd1 70%\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u67e5\u8be2\uff0c\u8ba1\u65f6\u5f00\u9500\u5e26\u6765\u7684\u95ee\u9898\u5c31\u4e0d\u4f1a\u8fd9\u4e48\u660e\u663e\u3002</p>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.4\">\n<h3 lang=\"zh\">\u66f4\u6539\u65f6\u949f\u6e90</h3>\n<p lang=\"zh\">\u5728\u67d0\u4e9b\u8f83\u65b0\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u7528\u4e8e\u6536\u96c6\u8ba1\u65f6\u6570\u636e\u7684\u65f6\u949f\u6e90\u3002\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u5c55\u793a\u4e86\u5728\u4ea7\u751f\u4e0a\u8ff0\u5feb\u901f\u7ed3\u679c\u7684\u540c\u4e00\u53f0\u7cfb\u7edf\u4e0a\uff0c\u5207\u6362\u5230\u8f83\u6162\u7684 acpi_pm \u65f6\u949f\u6e90\u53ef\u80fd\u5bfc\u81f4\u7684\u6027\u80fd\u4e0b\u964d\uff1a</p>\n<pre class=\"screen\"># cat /sys/devices/system/clocksource/clocksource0/available_clocksource\ntsc hpet acpi_pm\n# echo acpi_pm &gt; /sys/devices/system/clocksource/clocksource0/current_clocksource\n# pg_test_timing\nPer loop time including overhead: 722.92 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     27.84870    1155682\n     2     72.05956    2990371\n     4      0.07810       3241\n     8      0.01357        563\n    16      0.00007          3\n</pre>\n<p lang=\"zh\">\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4e0a\u9762\u7684\u793a\u4f8b<code class=\"command\">EXPLAIN ANALYZE</code>\u9700\u8981 115.9 ms\u3002\u8fd9\u610f\u5473\u7740\u8ba1\u65f6\u5f00\u9500\u8fbe\u5230 1061 ns\uff0c\u540c\u6837\u53ea\u662f\u672c\u5de5\u5177\u76f4\u63a5\u6d4b\u5f97\u6570\u503c\u7684\u4e00\u4e2a\u5c0f\u500d\u6570\u3002\u5982\u6b64\u4e4b\u5927\u7684\u8ba1\u65f6\u5f00\u9500\u8bf4\u660e\uff0c\u5b9e\u9645\u67e5\u8be2\u672c\u8eab\u53ea\u5360\u5df2\u7edf\u8ba1\u65f6\u95f4\u7684\u4e00\u5c0f\u90e8\u5206\uff0c\u5176\u4f59\u5927\u591a\u8017\u8d39\u5728\u5f00\u9500\u4e0a\u3002\u5728\u8fd9\u79cd\u914d\u7f6e\u4e0b\uff0c\u4efb\u4f55\u5305\u542b\u5927\u91cf\u8ba1\u65f6\u64cd\u4f5c\u7684<code class=\"command\">EXPLAIN ANALYZE</code>\u603b\u8ba1\u503c\uff0c\u90fd\u4f1a\u56e0\u8ba1\u65f6\u5f00\u9500\u800c\u88ab\u663e\u8457\u62ac\u9ad8\u3002</p>\n<p lang=\"zh\">FreeBSD \u4e5f\u5141\u8bb8\u52a8\u6001\u66f4\u6539\u65f6\u949f\u6e90\uff0c\u5e76\u4f1a\u8bb0\u5f55\u542f\u52a8\u671f\u95f4\u6240\u9009\u8ba1\u65f6\u5668\u7684\u4fe1\u606f\uff1a</p>\n<pre class=\"screen\"># dmesg | grep \"Timecounter\"\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 900\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\nTimecounters tick every 10.000 msec\nTimecounter \"TSC\" frequency 2531787134 Hz quality 800\n# sysctl kern.timecounter.hardware=TSC\nkern.timecounter.hardware: ACPI-fast -&gt; TSC\n</pre>\n<p lang=\"zh\">\u5176\u4ed6\u7cfb\u7edf\u53ef\u80fd\u53ea\u5141\u8bb8\u5728\u542f\u52a8\u65f6\u8bbe\u7f6e\u65f6\u949f\u6e90\u3002\u5728\u8f83\u65e7\u7684 Linux \u7cfb\u7edf\u4e0a\uff0c\u5185\u6838\u8bbe\u7f6e\u201cclock\u201d\u662f\u8fdb\u884c\u6b64\u7c7b\u66f4\u6539\u7684\u552f\u4e00\u65b9\u5f0f\u3002\u5373\u4f7f\u5728\u67d0\u4e9b\u8f83\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u4f60\u80fd\u770b\u5230\u7684\u65f6\u949f\u6e90\u9009\u9879\u4e5f\u53ef\u80fd\u53ea\u6709\u201cjiffies\u201d\u3002jiffies \u662f\u8f83\u65e9\u7684 Linux \u8f6f\u4ef6\u65f6\u949f\u5b9e\u73b0\uff0c\u5982\u679c\u5e95\u5c42\u8ba1\u65f6\u786c\u4ef6\u8db3\u591f\u5feb\uff0c\u5b83\u4e5f\u80fd\u63d0\u4f9b\u826f\u597d\u7684\u89e3\u6790\u5ea6\uff0c\u5982\u4e0b\u4f8b\u6240\u793a\uff1a</p>\n<pre class=\"screen\">$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource\njiffies\n$ dmesg | grep time.c\ntime.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.\ntime.c: Detected 2400.153 MHz processor.\n$ pg_test_timing\nTesting timing overhead for 3 seconds.\nPer timing duration including loop overhead: 97.75 ns\nHistogram of timing durations:\n  &lt; us   % of total      count\n     1     90.23734   27694571\n     2      9.75277    2993204\n     4      0.00981       3010\n     8      0.00007         22\n    16      0.00000          1\n    32      0.00000          1\n</pre>\n</div>\n<div class=\"refsect2\" id=\"id-1.9.5.12.7.5\">\n<h3 lang=\"zh\">\u65f6\u949f\u786c\u4ef6\u548c\u8ba1\u65f6\u51c6\u786e\u6027</h3>\n<p lang=\"zh\">\u5728\u8ba1\u7b97\u673a\u4e0a\u6536\u96c6\u7cbe\u786e\u7684\u8ba1\u65f6\u4fe1\u606f\uff0c\u901a\u5e38\u4f9d\u8d56\u7cbe\u5ea6\u5404\u5f02\u7684\u786c\u4ef6\u65f6\u949f\u3002\u5bf9\u4e8e\u67d0\u4e9b\u786c\u4ef6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u51e0\u4e4e\u53ef\u4ee5\u5c06\u7cfb\u7edf\u65f6\u949f\u65f6\u95f4\u76f4\u63a5\u4f20\u9012\u7ed9\u7a0b\u5e8f\u3002\u7cfb\u7edf\u65f6\u949f\u4e5f\u53ef\u80fd\u6765\u81ea\u4e00\u79cd\u53ea\u63d0\u4f9b\u8ba1\u65f6\u4e2d\u65ad\u3001\u6309\u5df2\u77e5\u65f6\u95f4\u95f4\u9694\u5468\u671f\u6027\u5730\u4ea7\u751f\u6ef4\u7b54\u4fe1\u53f7\u7684\u82af\u7247\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u90fd\u4f1a\u63d0\u4f9b\u4e00\u4e2a\u5c4f\u853d\u8fd9\u4e9b\u7ec6\u8282\u7684\u65f6\u949f\u6e90\u3002\u4e0d\u8fc7\uff0c\u8fd9\u79cd\u65f6\u949f\u6e90\u7684\u7cbe\u5ea6\u4ee5\u53ca\u8fd4\u56de\u7ed3\u679c\u7684\u901f\u5ea6\uff0c\u90fd\u53d6\u51b3\u4e8e\u5e95\u5c42\u786c\u4ef6\u3002</p>\n<p lang=\"zh\">\u4e0d\u51c6\u786e\u7684\u8ba1\u65f6\u53ef\u80fd\u5bfc\u81f4\u7cfb\u7edf\u4e0d\u7a33\u5b9a\u3002\u5bf9\u65f6\u949f\u6e90\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u5e94\u5341\u5206\u8c28\u614e\u5730\u6d4b\u8bd5\u3002\u64cd\u4f5c\u7cfb\u7edf\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6709\u65f6\u4f1a\u504f\u5411\u53ef\u9760\u6027\uff0c\u800c\u4e0d\u662f\u8ffd\u6c42\u6700\u4f73\u7cbe\u5ea6\u3002\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u865a\u62df\u673a\uff0c\u8fd8\u5e94\u4e86\u89e3\u4e0e\u5176\u517c\u5bb9\u7684\u63a8\u8350\u65f6\u949f\u6e90\u3002\u865a\u62df\u786c\u4ef6\u5728\u6a21\u62df\u8ba1\u65f6\u5668\u65f6\u4f1a\u9762\u4e34\u989d\u5916\u56f0\u96be\uff0c\u5382\u5546\u901a\u5e38\u8fd8\u4f1a\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u7279\u5b9a\u7684\u8bbe\u7f6e\u5efa\u8bae\u3002</p>\n<p lang=\"zh\">\u65f6\u95f4\u6233\u8ba1\u6570\u5668\uff08TSC\uff09\u65f6\u949f\u6e90\u662f\u5f53\u524d\u4e00\u4ee3 CPU \u4e0a\u53ef\u7528\u7684\u6700\u7cbe\u786e\u65f6\u949f\u6e90\u3002\u5f53\u64cd\u4f5c\u7cfb\u7edf\u652f\u6301\u5b83\u4e14 TSC \u65f6\u949f\u672c\u8eab\u53ef\u9760\u65f6\uff0c\u5b83\u662f\u8ddf\u8e2a\u7cfb\u7edf\u65f6\u95f4\u7684\u9996\u9009\u65b9\u5f0f\u3002TSC \u4e5f\u53ef\u80fd\u56e0\u591a\u79cd\u539f\u56e0\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684\u8ba1\u65f6\u6e90\uff0c\u4ece\u800c\u53d8\u5f97\u4e0d\u53ef\u9760\u3002\u8f83\u65e7\u7684\u7cfb\u7edf\u4e2d\uff0cTSC \u65f6\u949f\u53ef\u80fd\u4f1a\u968f CPU \u6e29\u5ea6\u53d8\u5316\uff0c\u56e0\u6b64\u4e0d\u9002\u5408\u7528\u4e8e\u8ba1\u65f6\u3002\u5728\u67d0\u4e9b\u8f83\u65e7\u7684\u591a\u6838 CPU \u4e0a\u4f7f\u7528 TSC\uff0c\u8fd8\u53ef\u80fd\u5bfc\u81f4\u4e0d\u540c\u6838\u5fc3\u62a5\u544a\u7684\u65f6\u95f4\u5f7c\u6b64\u4e0d\u4e00\u81f4\u3002\u8fd9\u4f1a\u5f15\u8d77\u65f6\u95f4\u5012\u9000\uff0c\u800c\u672c\u7a0b\u5e8f\u6b63\u662f\u7528\u6765\u68c0\u67e5\u8fd9\u7c7b\u95ee\u9898\u7684\u3002\u5373\u4fbf\u5728\u6700\u65b0\u7684\u7cfb\u7edf\u4e0a\uff0c\u82e5\u8282\u80fd\u914d\u7f6e\u8fc7\u4e8e\u6fc0\u8fdb\uff0c\u4e5f\u53ef\u80fd\u65e0\u6cd5\u63d0\u4f9b\u7cbe\u786e\u7684 TSC \u8ba1\u65f6\u3002</p>\n<p lang=\"zh\">\u8f83\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4f1a\u68c0\u6d4b\u5df2\u77e5\u7684 TSC \u95ee\u9898\uff0c\u5e76\u5728\u53d1\u73b0\u65f6\u5207\u6362\u5230\u66f4\u6162\u4f46\u66f4\u7a33\u5b9a\u7684\u65f6\u949f\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u652f\u6301 TSC \u8ba1\u65f6\u5374\u6ca1\u6709\u9ed8\u8ba4\u4f7f\u7528\u5b83\uff0c\u90a3\u4e48\u7981\u7528\u5b83\u5f88\u53ef\u80fd\u662f\u6709\u5145\u5206\u7406\u7531\u7684\u3002\u67d0\u4e9b\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u68c0\u6d4b\u6240\u6709\u6f5c\u5728\u95ee\u9898\uff0c\u6216\u8005\u5373\u4f7f\u5df2\u77e5 TSC \u4e0d\u51c6\u786e\uff0c\u4ecd\u5141\u8bb8\u7ee7\u7eed\u4f7f\u7528\u5b83\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u7cfb\u7edf\u4e0a\u6709\u9ad8\u7cbe\u5ea6\u4e8b\u4ef6\u8ba1\u65f6\u5668\uff08HPET\uff09\uff0c\u5e76\u4e14 TSC \u4e0d\u51c6\u786e\uff0c\u90a3\u4e48 HPET \u5c31\u662f\u7cfb\u7edf\u66f4\u503e\u5411\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u3002\u8ba1\u65f6\u5668\u82af\u7247\u672c\u8eab\u53ef\u7f16\u7a0b\uff0c\u6700\u9ad8\u53ef\u63d0\u4f9b 100 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\uff0c\u4f46\u5728\u4f60\u7684\u7cfb\u7edf\u65f6\u949f\u4e2d\u672a\u5fc5\u80fd\u770b\u5230\u8fd9\u4e48\u9ad8\u7684\u51c6\u786e\u6027\u3002</p>\n<p lang=\"zh\">\u9ad8\u7ea7\u914d\u7f6e\u4e0e\u7535\u6e90\u63a5\u53e3\uff08ACPI\uff09\u63d0\u4f9b\u4e86\u4e00\u79cd\u7535\u6e90\u7ba1\u7406\uff08PM\uff09\u8ba1\u65f6\u5668\uff0cLinux \u5c06\u5176\u79f0\u4e3a acpi_pm\u3002\u7531 acpi_pm \u6d3e\u751f\u7684\u65f6\u949f\u5728\u6700\u4f73\u60c5\u51b5\u4e0b\u53ef\u63d0\u4f9b 300 \u7eb3\u79d2\u7684\u89e3\u6790\u5ea6\u3002</p>\n<p lang=\"zh\">\u8f83\u65e7 PC \u786c\u4ef6\u4f7f\u7528\u7684\u8ba1\u65f6\u5668\u5305\u62ec 8254 \u53ef\u7f16\u7a0b\u95f4\u9694\u8ba1\u65f6\u5668\uff08PIT\uff09\u3001\u5b9e\u65f6\u65f6\u949f\uff08RTC\uff09\u3001\u9ad8\u7ea7\u53ef\u7f16\u7a0b\u4e2d\u65ad\u63a7\u5236\u5668\uff08APIC\uff09\u8ba1\u65f6\u5668\u4ee5\u53ca Cyclone \u8ba1\u65f6\u5668\u3002\u8fd9\u4e9b\u8ba1\u65f6\u5668\u7684\u76ee\u6807\u89e3\u6790\u5ea6\u662f\u6beb\u79d2\u7ea7\u3002</p>\n</div>\n</div>\n<div class=\"refsect1\" id=\"id-1.9.5.12.8\">\n<h2 lang=\"zh\">\u53e6\u89c1</h2><span class=\"simplelist\"><a class=\"xref\" href=\"https://pg.center/docs/18/sql-explain.html\" title=\"EXPLAIN\"><span class=\"refentrytitle\">EXPLAIN</span></a></span>\n</div>\n</div></div>", "manual_path": "pgtesttiming.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/pgtesttiming.html", "method": "same-major semantic node", "sha256": "395d75686c4926f39f5c746b6bc97f207181a2dcc11adf97ffe58002e7913157", "language": "zh", "matched_nodes": ["#PGTESTTIMING/div[2]/p[1]", "#PGTESTTIMING/div[3]/h2[0]", "#PGTESTTIMING/div[4]/p[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[1]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[3]", "#PGTESTTIMING/div[5]/div[2]/dl[0]/dd[5]", "#PGTESTTIMING/div[5]/p[1]", "#PGTESTTIMING/div[6]/div[1]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/h3[0]", "#PGTESTTIMING/div[6]/div[2]/p[1]", "#PGTESTTIMING/div[6]/div[2]/p[3]", "#PGTESTTIMING/div[6]/div[3]/h3[0]", "#PGTESTTIMING/div[6]/div[3]/p[1]", "#PGTESTTIMING/div[6]/div[3]/p[3]", "#PGTESTTIMING/div[6]/div[3]/p[4]", "#PGTESTTIMING/div[6]/div[3]/p[6]", "#PGTESTTIMING/div[6]/div[4]/h3[0]", "#PGTESTTIMING/div[6]/div[4]/p[1]", "#PGTESTTIMING/div[6]/div[4]/p[2]", "#PGTESTTIMING/div[6]/div[4]/p[3]", "#PGTESTTIMING/div[6]/div[4]/p[4]", "#PGTESTTIMING/div[6]/div[4]/p[5]", "#PGTESTTIMING/div[6]/div[4]/p[6]", "#PGTESTTIMING/div[6]/div[4]/p[7]", "#PGTESTTIMING/div[6]/h2[0]", "#PGTESTTIMING/div[7]/h2[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "pg_test_timing \u2014 measure timing overhead", "/versions/18/facts/0/label": "Documented executable", "/versions/18/facts/1/label": "Executable version", "/versions/18/facts/2/label": "Reference inventory", "/versions/18/facts/2/value": "Server applications", "/versions/18/facts/3/label": "Option definition groups", "/versions/18/tables/0/title": "Documented options", "/versions/18/tables/0/rows/0/summary": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.", "/versions/18/tables/0/rows/1/summary": "Print the pg_test_timing version and exit.", "/versions/18/tables/0/rows/2/summary": "Show help about pg_test_timing command line arguments, and exit.", "/versions/18/tables/0/columns/0/label": "Option and arguments", "/versions/18/tables/0/columns/1/label": "Description"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "e6885a3c2f0811b8e857163f7195ee17dc712002ba75034378ac4f384e321b6e"}, "comparison_data": {"options": [{"names": ["-d duration", "--duration= duration"], "signature": "-d duration --duration= duration", "description": "Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds."}, {"names": ["-V", "--version"], "signature": "-V --version", "description": "Print the pg_test_timing version and exit."}, {"names": ["-?", "--help"], "signature": "-? --help", "description": "Show help about pg_test_timing command line arguments, and exit."}], "synopsis": ["pg_test_timing [ option ...]"], "environment": []}, "comparison_hash": "1e9850049374c38671166c0a5cf0759d6f33dd01f733985211c9962ac16213b4", "manual_language": "zh"}, "comparison": {"left": "18", "right": "19", "status": "changed", "diff": "--- PostgreSQL 18\n+++ PostgreSQL 19\n@@ -1,6 +1,14 @@\n {\n   \"environment\": [],\n   \"options\": [\n+    {\n+      \"description\": \"Specifies the cutoff percentage for the list of exact observed timing durations (that is, the changes in the system clock value from one reading to the next). The list will end once the running percentage total reaches or exceeds this value, except that the largest observed duration will always be printed. The default cutoff is 99.99.\",\n+      \"names\": [\n+        \"-c cutoff\",\n+        \"--cutoff= cutoff\"\n+      ],\n+      \"signature\": \"-c cutoff --cutoff= cutoff\"\n+    },\n     {\n       \"description\": \"Specifies the test duration, in seconds. Longer durations give slightly better accuracy, and are more likely to discover problems with the system clock moving backwards. The default test duration is 3 seconds.\",\n       \"names\": ["}}