背景
有資料說資料, 沒資料說案例, 沒案例說邏輯, 沒邏輯談理想. 已經成為數字時代的職場生存法則.
• 要陳述一個觀點或結論, 沒有資料支撐說話沒分量, 說明你沒經過仔細分析, 沒過腦子.
• 實在拿不到資料, 你總得拿點案例出來, 否則就是在空談, 沒有支點.
• 沒案例, 總得有底層邏輯吧, 邏輯能自洽, 也是說得通的.
• 如果連邏輯都沒有想過, 那你隻能用故事、理想或者理念來感染人, 如果你能忽悠(感染)成功, 并且最後确實也成功了, 也許能表達為因為相信是以看見.
場景:
• 項目上線前, 申請資源, 如何評估需要多少資源?
• 做IT部門的全年預算?
• 如何做到精準, 有理有據有節?
挑戰:
• 項目往往隻有業務名額(應該叫目标, 和IT預算精算還差了十萬八千裡), 靠經驗或拍腦袋來确定IT預算, 上線後發現資源不足或嚴重超過預期, 造成鋪張浪費.
• 難以模拟和快速産生真實的業務資料.
• 難以模拟真實的業務互動行為.
• 難以捕捉和分析性能問題的原因.
PG解決方案:
• pgbench,支援沙盤推演, 避免紙上談兵、假大空.
◦ 一個可以近乎真實的模拟業務上線後的壓力的内置benchmark program.
◦ 内置多種資料生成算法, 多種模拟業務和資料庫互動的command,
◦ 同時支援根據業務定制化壓測程式, 模拟真實的業務互動行為.
• awr, pg_stat_statements, 捕獲和分析業務瓶頸
◦ 202104/20210415_01.md
《PostgreSQL pg_stat_statements AWR 插件pg_stat_monitor , 過去任何時間段性能分析[推薦、收藏]》◦ 202003/20200324_25.md
《PostgreSQL 活躍會話曆史記錄插件- pgsentinel 類似performance insight \ Oracle ASH Active Session History》◦ 201901/20190125_02.md
《PostgreSQL Oracle 相容性之- performance insight - AWS performance insight 理念與實作解讀- 珍藏級》◦
https://www.postgresql.org/docs/devel/pgstatstatements.html• 快速建構海量測試資料
◦ 202001/20200103_01.md
《PostgreSQL+MySQL 聯合解決方案- 第3課視訊- 如何壓測PG資料庫、如何瞬間構造海量測試資料》◦ 201711/20171121_01.md
《PostgreSQL 如何快速建構海量逼真測試資料》例子
重點講一下pgbench裡面的一個小點:
• 産生各種分布形态的模拟資料(高斯分布、随機分布、指數分布、長尾分布)
為了讓大家更容易了解機率分布情況, 建議先了解一下以下3種繪圖方式.
1、柱狀圖
202104/20210429_01.md
《PostgreSQL - 時序、IoT類場景- 自定義histogram函數, 繪制資料分布柱狀圖- cte window range width_bucket format plpgsql》CREATE OR REPLACE FUNCTION histogram(table_name_or_subquery text, column_name text, buckets int, leng int)
RETURNS TABLE(bucket int, "range" numrange, freq bigint, ratio text, bar text)
AS $func$
DECLARE
sql text;
BEGIN
sql := format('
WITH
source AS (
SELECT * FROM (%s) t
),
min_max AS (
SELECT min(%s) AS min, max(%s) AS max FROM source
histogram AS (
SELECT
width_bucket(%s, min_max.min, min_max.max+min_max.max*0.00000001, %s) AS bucket,
numrange(min(%s)::numeric, max(%s)::numeric, ''[]'') AS "range",
count(%s) AS freq
FROM source, min_max
WHERE %s IS NOT NULL
GROUP BY bucket
ORDER BY bucket
)
SELECT
bucket,
"range",
freq::bigint,
round(100 * freq::numeric/(sum(freq::numeric) over() + 1), 2)||'' %%'' as ratio,
repeat(''*'', (freq::float / (max(freq) over() + 1) * %s)::int) AS bar
FROM histogram group by bucket,"range",freq::bigint
order by bucket',
table_name_or_subquery,
column_name,
buckets,
leng
);
RETURN QUERY EXECUTE sql;
raise notice '%', sql;
END
$func$ LANGUAGE plpgsql;
select * from histogram(
'select id as x from tbl', -- 求這條SQL的結果集的柱狀圖
'x', -- 按這個字段的數值分布繪制柱狀圖, x是以上SQL的某個字段名
25, -- 均勻分布成25個bucket, 最好結果中的唯一值個數能剛好整除這個bucket
20); -- 展示進度條形式表示占比. 20是進度條的最長字元數
2、高頻詞
pg_catalog.pg_stats.
這個是analyze之後産生的, 存儲了字段的高頻詞, 也有bucket的機率分布等資訊.
3、餅圖
201808/20180804_01.md
《PostgreSQL psql 繪制餅圖》少量唯一值的group統計可以用來繪制餅圖, 值很多的情況不适合
create or replace function gen_charts(
sql text, -- SQL,傳回兩列,第一列為描述,第二列為這個描述的數值
width int default 80,
height int default 25,
radius numeric default 1.0, -- 換成float8類型,列印實心餅圖
colours text default '#;o:X"@+-=123456789abcdef'
) returns setof text as $$
declare
begin
return query execute format(
$_$
WITH slices AS (
SELECT CAST(ROW_NUMBER() OVER () AS INTEGER) AS slice,
name,
VALUE,
100.0 * VALUE / SUM(VALUE) OVER () AS percentage,
2*PI() * SUM(VALUE) OVER (ROWS unbounded preceding)
/ SUM(VALUE) OVER () AS radians
FROM (%s
) AS DATA(name,VALUE))
(
SELECT array_to_string(array_agg(c),'') AS pie_chart
FROM (
SELECT x, y,
CASE WHEN NOT (SQRT(pow(x, 2) + pow(y, 2))
BETWEEN %s*1/10 AND %s)
THEN ' '
ELSE SUBSTRING(%L,
(SELECT MIN(slice)
FROM slices
WHERE radians >= PI() + atan2(y,-x)),
1)
END AS c
FROM (SELECT 2.0*generate_series(0,%s)/%s-1.0) AS x(x),
(SELECT 2.0*generate_series(0,%s)/%s-1.0) AS y(y)
ORDER BY y,x
) AS xy
GROUP BY y
ORDER BY y
)
UNION ALL
SELECT repeat(SUBSTRING(%L,slice,1), 2) || ' ' ||
name || ': ' ||
VALUE || ' (' || round(percentage,0) || '%%)'
FROM slices;
$_$, sql, radius, radius, colours, width, width, height, height, colours);
return;
end;
$$ language plpgsql strict;
postgres=# select * from gen_charts('select mod(id,5),count(*) from tbl group by 1 order by 2 desc');
gen_charts
-----------------------------------------------------------------------------------
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;####
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;###########
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;################
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#####################
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#########################
oooooo;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;############################
ooooooooooo;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;##############################
oooooooooooooooooo;;;;;;;;;;;;;;;;;;;;;;;;#################################
ooooooooooooooooooooooo;;;;;;;;;;;;;;;;;;;###################################
oooooooooooooooooooooooooooo;;;;;;;;;;;;;;#####################################
ooooooooooooooooooooooooooooooooo;;;;;;;;######################################
oooooooooooooooooooooooooooooooooooo ####################################
oooooooooooooooooooooooooooooooooooo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ooooooooooooooooooooooooooooooooo::::::::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ooooooooooooooooooooooooooooo:::::::::::::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ooooooooooooooooooooooo:::::::::::::::::::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
oooooooooooooooooo::::::::::::::::::::::::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ooooooooooo::::::::::::::::::::::::::::::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
oooooo:::::::::::::::::::::::::::::::::::XXXXXXXXXXXXXXXXXXXXXXXXXXXX
::::::::::::::::::::::::::::::::::::::::XXXXXXXXXXXXXXXXXXXXXXXXX
::::::::::::::::::::::::::::::::::::::XXXXXXXXXXXXXXXXXXXXX
:::::::::::::::::::::::::::::::::::XXXXXXXXXXXXXXXX
::::::::::::::::::::::::::::::::XXXXXXXXXXX
::::::::::::::::::::::::::::XXX
:
## 2: 563867 (20%)
;; 3: 563581 (20%)
oo 4: 563241 (20%)
:: 1: 562509 (20%)
XX 0: 562363 (20%)
(31 rows)
4、R繪圖
201506/20150618_01.md
《生成泊松、高斯、指數、随機分布資料- PostgreSQL 9.5 new feature - pgbench improve, gaussian (standard normal) & exponential distribution》縱軸: 機率
橫軸: value
1 随機分布
create unlogged table tbl (id int, info text);
為了便于觀察機率分布情況, 取100個值.
vi test.sql
\set id random(1,100)
insert into tbl values (:id, 'test');
pgbench -M prepared -n -r -P 1 -f ./test.sql -c 12 -j 12 -T 20
機率分布情況:
bucket | range | freq | ratio | bar
--------+----------+--------+--------+----------------------
1 | [1,4] | 112623 | 4.00 % | ********************
2 | [5,8] | 113083 | 4.02 % | ********************
3 | [9,12] | 112719 | 4.00 % | ********************
4 | [13,16] | 112613 | 4.00 % | ********************
5 | [17,20] | 112798 | 4.01 % | ********************
6 | [21,24] | 113045 | 4.02 % | ********************
7 | [25,28] | 112343 | 3.99 % | ********************
8 | [29,32] | 113011 | 4.01 % | ********************
9 | [33,36] | 112894 | 4.01 % | ********************
10 | [37,40] | 112040 | 3.98 % | ********************
11 | [41,44] | 112700 | 4.00 % | ********************
12 | [45,48] | 112247 | 3.99 % | ********************
13 | [49,52] | 112771 | 4.01 % | ********************
14 | [53,56] | 112284 | 3.99 % | ********************
15 | [57,60] | 112399 | 3.99 % | ********************
16 | [61,64] | 112181 | 3.98 % | ********************
17 | [65,68] | 112560 | 4.00 % | ********************
18 | [69,72] | 112514 | 4.00 % | ********************
19 | [73,76] | 112681 | 4.00 % | ********************
20 | [77,80] | 112666 | 4.00 % | ********************
21 | [81,84] | 112508 | 4.00 % | ********************
22 | [85,88] | 112864 | 4.01 % | ********************
23 | [89,92] | 113081 | 4.02 % | ********************
24 | [93,96] | 112283 | 3.99 % | ********************
25 | [97,100] | 112653 | 4.00 % | ********************
(25 rows)
2 高斯分布
truncate tbl;
\set id random_gaussian(1,100,2.5)
1 | [1,4] | 13432 | 0.46 % | *
2 | [5,8] | 21253 | 0.72 % | **
3 | [9,12] | 32501 | 1.10 % | ***
4 | [13,16] | 47288 | 1.60 % | ****
5 | [17,20] | 66095 | 2.24 % | ******
6 | [21,24] | 89577 | 3.04 % | ********
7 | [25,28] | 115935 | 3.93 % | **********
8 | [29,32] | 144387 | 4.89 % | ************
9 | [33,36] | 173053 | 5.87 % | ***************
10 | [37,40] | 198419 | 6.73 % | *****************
11 | [41,44] | 219778 | 7.45 % | ******************
12 | [45,48] | 233489 | 7.91 % | ********************
13 | [49,52] | 238105 | 8.07 % | ********************
14 | [53,56] | 234864 | 7.96 % | ********************
15 | [57,60] | 219427 | 7.44 % | ******************
16 | [61,64] | 198440 | 6.73 % | *****************
17 | [65,68] | 172913 | 5.86 % | ***************
18 | [69,72] | 144989 | 4.91 % | ************
19 | [73,76] | 116383 | 3.95 % | **********
20 | [77,80] | 89234 | 3.02 % | *******
21 | [81,84] | 66099 | 2.24 % | ******
22 | [85,88] | 47493 | 1.61 % | ****
23 | [89,92] | 32253 | 1.09 % | ***
24 | [93,96] | 21227 | 0.72 % | **
25 | [97,100] | 13485 | 0.46 % | *
bucket | range | freq | ratio | bar
--------+-----------+-------+--------+----------------------
1 | [1,1] | 2772 | 0.10 % | *
2 | [2,2] | 3115 | 0.11 % | *
3 | [3,3] | 3509 | 0.12 % | *
4 | [4,4] | 3943 | 0.14 % | *
5 | [5,5] | 4453 | 0.15 % | **
6 | [6,6] | 4918 | 0.17 % | **
7 | [7,7] | 5281 | 0.18 % | **
8 | [8,8] | 6079 | 0.21 % | **
9 | [9,9] | 6729 | 0.23 % | **
10 | [10,10] | 7571 | 0.26 % | ***
11 | [11,11] | 8314 | 0.29 % | ***
12 | [12,12] | 9317 | 0.32 % | ***
13 | [13,13] | 10043 | 0.35 % | ***
14 | [14,14] | 11067 | 0.38 % | ****
15 | [15,15] | 12295 | 0.42 % | ****
16 | [16,16] | 13300 | 0.46 % | *****
17 | [17,17] | 14253 | 0.49 % | *****
18 | [18,18] | 15499 | 0.54 % | *****
19 | [19,19] | 16740 | 0.58 % | ******
20 | [20,20] | 18166 | 0.63 % | ******
21 | [21,21] | 19789 | 0.68 % | *******
22 | [22,22] | 20970 | 0.72 % | *******
23 | [23,23] | 22950 | 0.79 % | ********
24 | [24,24] | 24604 | 0.85 % | ********
25 | [25,25] | 25854 | 0.89 % | *********
26 | [26,26] | 27707 | 0.96 % | *********
27 | [27,27] | 29553 | 1.02 % | **********
28 | [28,28] | 31101 | 1.07 % | ***********
29 | [29,29] | 32583 | 1.13 % | ***********
30 | [30,30] | 34714 | 1.20 % | ************
31 | [31,31] | 36389 | 1.26 % | ************
32 | [32,32] | 37939 | 1.31 % | *************
33 | [33,33] | 39881 | 1.38 % | **************
34 | [34,34] | 41757 | 1.44 % | **************
35 | [35,35] | 43436 | 1.50 % | ***************
36 | [36,36] | 45062 | 1.56 % | ***************
37 | [37,37] | 46501 | 1.61 % | ****************
38 | [38,38] | 47971 | 1.66 % | ****************
39 | [39,39] | 49850 | 1.72 % | *****************
40 | [40,40] | 51173 | 1.77 % | *****************
41 | [41,41] | 52545 | 1.81 % | ******************
42 | [42,42] | 53146 | 1.84 % | ******************
43 | [43,43] | 54303 | 1.88 % | *******************
44 | [44,44] | 54906 | 1.90 % | *******************
45 | [45,45] | 56245 | 1.94 % | *******************
46 | [46,46] | 57177 | 1.97 % | ********************
47 | [47,47] | 57219 | 1.98 % | ********************
48 | [48,48] | 58151 | 2.01 % | ********************
49 | [49,49] | 58306 | 2.01 % | ********************
50 | [50,50] | 57975 | 2.00 % | ********************
51 | [51,51] | 58419 | 2.02 % | ********************
52 | [52,52] | 58561 | 2.02 % | ********************
53 | [53,53] | 58121 | 2.01 % | ********************
54 | [54,54] | 57767 | 1.99 % | ********************
55 | [55,55] | 56827 | 1.96 % | *******************
56 | [56,56] | 56762 | 1.96 % | *******************
57 | [57,57] | 55026 | 1.90 % | *******************
58 | [58,58] | 54578 | 1.88 % | *******************
59 | [59,59] | 52974 | 1.83 % | ******************
60 | [60,60] | 52356 | 1.81 % | ******************
61 | [61,61] | 51089 | 1.76 % | *****************
62 | [62,62] | 49518 | 1.71 % | *****************
63 | [63,63] | 48436 | 1.67 % | *****************
64 | [64,64] | 46651 | 1.61 % | ****************
65 | [65,65] | 44896 | 1.55 % | ***************
66 | [66,66] | 43576 | 1.50 % | ***************
67 | [67,67] | 41402 | 1.43 % | **************
68 | [68,68] | 39948 | 1.38 % | **************
69 | [69,69] | 38070 | 1.31 % | *************
70 | [70,70] | 36540 | 1.26 % | ************
71 | [71,71] | 34686 | 1.20 % | ************
72 | [72,72] | 32937 | 1.14 % | ***********
73 | [73,73] | 31284 | 1.08 % | ***********
74 | [74,74] | 29431 | 1.02 % | **********
75 | [75,75] | 27559 | 0.95 % | *********
76 | [76,76] | 25754 | 0.89 % | *********
77 | [77,77] | 24428 | 0.84 % | ********
78 | [78,78] | 22623 | 0.78 % | ********
79 | [79,79] | 20849 | 0.72 % | *******
80 | [80,80] | 19831 | 0.68 % | *******
81 | [81,81] | 18070 | 0.62 % | ******
82 | [82,82] | 16890 | 0.58 % | ******
83 | [83,83] | 15677 | 0.54 % | *****
84 | [84,84] | 14462 | 0.50 % | *****
85 | [85,85] | 13420 | 0.46 % | *****
86 | [86,86] | 12338 | 0.43 % | ****
87 | [87,87] | 10995 | 0.38 % | ****
88 | [88,88] | 10231 | 0.35 % | ***
89 | [89,89] | 9213 | 0.32 % | ***
90 | [90,90] | 8337 | 0.29 % | ***
91 | [91,91] | 7535 | 0.26 % | ***
92 | [92,92] | 6751 | 0.23 % | **
93 | [93,93] | 6222 | 0.21 % | **
94 | [94,94] | 5479 | 0.19 % | **
95 | [95,95] | 4958 | 0.17 % | **
96 | [96,96] | 4339 | 0.15 % | *
97 | [97,97] | 3870 | 0.13 % | *
98 | [98,98] | 3453 | 0.12 % | *
99 | [99,99] | 3063 | 0.11 % | *
100 | [100,100] | 2777 | 0.10 % | *
(100 rows)
參數說明:
threshold >= 2.0
高斯分布(正态分布)的機率峰值出現在min,max的數學期望值即(max + min) / 2.0。
約67%的值分布在以min,max數學期望為中心的1.0 / threshold 這個區間。
約95%的值分布在以min,max數學期望為中心的2.0 / threshold 這個區間。
是以threshold越大,資料資料越集中在min,max的數學期望附近。
3 指數分布
\set id random_exponential(1,100,3.0)
bucket | range | freq | ratio | bar
--------+----------+--------+---------+-----------------
1 | [1,4] | 353424 | 11.91 % | ***************
2 | [5,8] | 312966 | 10.55 % | *************
3 | [9,12] | 277325 | 9.34 % | ************
4 | [13,16] | 246483 | 8.31 % | **********
5 | [17,20] | 218639 | 7.37 % | *********
6 | [21,24] | 193728 | 6.53 % | ********
7 | [25,28] | 172174 | 5.80 % | *******
8 | [29,32] | 152792 | 5.15 % | ******
9 | [33,36] | 135425 | 4.56 % | ******
10 | [37,40] | 119895 | 4.04 % | *****
11 | [41,44] | 106444 | 3.59 % | *****
12 | [45,48] | 94220 | 3.17 % | ****
13 | [49,52] | 83763 | 2.82 % | ****
14 | [53,56] | 74046 | 2.50 % | ***
15 | [57,60] | 66040 | 2.23 % | ***
16 | [61,64] | 58151 | 1.96 % | **
17 | [65,68] | 51363 | 1.73 % | **
18 | [69,72] | 45887 | 1.55 % | **
19 | [73,76] | 40873 | 1.38 % | **
20 | [77,80] | 35882 | 1.21 % | **
21 | [81,84] | 32248 | 1.09 % | *
22 | [85,88] | 28587 | 0.96 % | *
23 | [89,92] | 25010 | 0.84 % | *
24 | [93,96] | 22546 | 0.76 % | *
25 | [97,100] | 19815 | 0.67 % | *
threshold > 0
(threshold越大,随機值接近min的機率越大,反之,threshold越小,随機值接近max的機率越大)
threshold 越接近0,則越趨于随機分布,而不是指數分布。
長尾分布
\set id random_zipfian(1, 100, 1.001)
bucket | range | freq | ratio | bar
--------+----------+--------+---------+----------------------
1 | [1,4] | 911700 | 40.21 % | ********************
2 | [5,8] | 276736 | 12.21 % | ******
3 | [9,12] | 168646 | 7.44 % | ****
4 | [13,16] | 121354 | 5.35 % | ***
5 | [17,20] | 94427 | 4.16 % | **
6 | [21,24] | 78154 | 3.45 % | **
7 | [25,28] | 66173 | 2.92 % | *
8 | [29,32] | 57071 | 2.52 % | *
9 | [33,36] | 50582 | 2.23 % | *
10 | [37,40] | 45865 | 2.02 % | *
11 | [41,44] | 40835 | 1.80 % | *
12 | [45,48] | 37525 | 1.66 % | *
13 | [49,52] | 34916 | 1.54 % | *
14 | [53,56] | 32284 | 1.42 % | *
15 | [57,60] | 29811 | 1.31 % | *
16 | [61,64] | 28028 | 1.24 % | *
17 | [65,68] | 26214 | 1.16 % | *
18 | [69,72] | 24556 | 1.08 % | *
19 | [73,76] | 23285 | 1.03 % | *
20 | [77,80] | 22211 | 0.98 % |
21 | [81,84] | 21089 | 0.93 % |
22 | [85,88] | 20134 | 0.89 % |
23 | [89,92] | 19093 | 0.84 % |
24 | [93,96] | 18686 | 0.82 % |
25 | [97,100] | 17964 | 0.79 % |
threshold 取值範圍: [1.001, 1000]
k 的機率為k+1 的((k+1)/k)^threshold 次方
threshold越大, 機率曲線越陡峭, 頭部值(begin值)出現機率越高. 遞弱代償線越陡峭.
For example, random_zipfian(1, ..., 2.5) produces the value
1 about (2/1)^2.5 = 5.66 times more frequently than 2,
2 about (3/2)^2.5 = 2.76 times more frequently than 3,
and so on.
今天隻講了關于随機資料生成的其中一種方法, PG裡面生成随機資料還有大把的方法, 包括自己寫函數或inline code, 結合内置的srf函數等(如generate_series).
海量資料的生成方法、各處場景的壓測, 請參考末尾文章.
參考
pgbench
https://www.postgresql.org/docs/devel/pgbench.html201711/20171107_48.md
《HTAP資料庫PostgreSQL 場景與性能測試之47 - (OLTP多模優化) 空間應用- 高并發空間位置更新、多屬性KNN搜尋并測(含空間索引)末端配送、新零售類項目》201711/20171107_47.md
《HTAP資料庫PostgreSQL 場景與性能測試之46 - (OLTP) 大json字段的高并發更新》201711/20171107_46.md
《HTAP資料庫PostgreSQL 場景與性能測試之45 - (OLTP) 資料量與性能的線性關系(10億+無衰減), 暨單表多大需要分區》201711/20171107_45.md
《[未完待續] HTAP資料庫PostgreSQL 場景與性能測試之44 - (OLTP) 空間應用- 空間包含查詢(輸入多邊形包含表内空間對象)》201711/20171107_44.md
《HTAP資料庫PostgreSQL 場景與性能測試之43 - (OLTP+OLAP) unlogged table 含索引多表批量寫入》201711/20171107_43.md
《HTAP資料庫PostgreSQL 場景與性能測試之42 - (OLTP+OLAP) unlogged table 不含索引多表批量寫入》201711/20171107_42.md
《HTAP資料庫PostgreSQL 場景與性能測試之41 - (OLTP+OLAP) 含索引多表批量寫入》201711/20171107_41.md
《HTAP資料庫PostgreSQL 場景與性能測試之40 - (OLTP+OLAP) 不含索引多表批量寫入》201711/20171107_40.md
《HTAP資料庫PostgreSQL 場景與性能測試之39 - (OLTP+OLAP) logged & unlogged table 含索引多表單點寫入》201711/20171107_39.md
《HTAP資料庫PostgreSQL 場景與性能測試之38 - (OLTP+OLAP) logged & unlogged table 不含索引多表單點寫入》201711/20171107_38.md
《HTAP資料庫PostgreSQL 場景與性能測試之37 - (OLTP+OLAP) 含索引單表批量寫入》201711/20171107_37.md
《HTAP資料庫PostgreSQL 場景與性能測試之36 - (OLTP+OLAP) 不含索引單表批量寫入》201711/20171107_36.md
《HTAP資料庫PostgreSQL 場景與性能測試之35 - (OLTP+OLAP) 含索引單表單點寫入》201711/20171107_35.md
《HTAP資料庫PostgreSQL 場景與性能測試之34 - (OLTP+OLAP) 不含索引單表單點寫入》201711/20171107_34.md
《HTAP資料庫PostgreSQL 場景與性能測試之33 - (OLAP) 物聯網- 線性字段區間實時統計》201711/20171107_33.md
《HTAP資料庫PostgreSQL 場景與性能測試之32 - (OLTP) 高吞吐資料進出(堆存、行掃、無需索引) - 閱後即焚(JSON + 函數流式計算)》201711/20171107_32.md
《HTAP資料庫PostgreSQL 場景與性能測試之31 - (OLTP) 高吞吐資料進出(堆存、行掃、無需索引) - 閱後即焚(讀寫大吞吐并測)》201711/20171107_31.md
《HTAP資料庫PostgreSQL 場景與性能測試之30 - (OLTP) 秒殺- 高并發單點更新》201711/20171107_30.md
《HTAP資料庫PostgreSQL 場景與性能測試之29 - (OLTP) 空間應用- 高并發空間位置更新(含空間索引)》201711/20171107_29.md
《HTAP資料庫PostgreSQL 場景與性能測試之28 - (OLTP) 高并發點更新》201711/20171107_28.md
《HTAP資料庫PostgreSQL 場景與性能測試之27 - (OLTP) 物聯網- FEED日志, 流式處理與閱後即焚(CTE)》201711/20171107_27.md
《HTAP資料庫PostgreSQL 場景與性能測試之26 - (OLTP) NOT IN、NOT EXISTS 查詢》201711/20171107_26.md
《HTAP資料庫PostgreSQL 場景與性能測試之25 - (OLTP) IN , EXISTS 查詢》201711/20171107_25.md
《HTAP資料庫PostgreSQL 場景與性能測試之24 - (OLTP) 物聯網- 時序資料并發寫入(含時序索引BRIN)》201711/20171107_24.md
《HTAP資料庫PostgreSQL 場景與性能測試之23 - (OLAP) 并行計算》201711/20171107_23.md
《HTAP資料庫PostgreSQL 場景與性能測試之22 - (OLTP) merge insert|upsert|insert on conflict|合并寫入》201711/20171107_22.md
《HTAP資料庫PostgreSQL 場景與性能測試之21 - (OLTP+OLAP) 排序、建索引》201711/20171107_21.md
《HTAP資料庫PostgreSQL 場景與性能測試之20 - (OLAP) 使用者畫像圈人場景- 多個字段任意組合條件篩選與透視》201711/20171107_20.md
《HTAP資料庫PostgreSQL 場景與性能測試之19 - (OLAP) 使用者畫像圈人場景- 數組相交查詢與聚合》201711/20171107_19.md
《HTAP資料庫PostgreSQL 場景與性能測試之18 - (OLAP) 使用者畫像圈人場景- 數組包含查詢與聚合》201711/20171107_18.md
《HTAP資料庫PostgreSQL 場景與性能測試之17 - (OLTP) 數組相似查詢》201711/20171107_17.md
《HTAP資料庫PostgreSQL 場景與性能測試之16 - (OLTP) 文本特征向量- 相似特征(海明...)查詢》201711/20171107_16.md
《HTAP資料庫PostgreSQL 場景與性能測試之15 - (OLTP) 物聯網- 查詢一個時序區間的資料》201711/20171107_15.md
《HTAP資料庫PostgreSQL 場景與性能測試之14 - (OLTP) 字元串搜尋- 全文檢索》201711/20171107_14.md
《HTAP資料庫PostgreSQL 場景與性能測試之13 - (OLTP) 字元串搜尋- 相似查詢》201711/20171107_13.md
《HTAP資料庫PostgreSQL 場景與性能測試之12 - (OLTP) 字元串搜尋- 前後模糊查詢》201711/20171107_12.md
《HTAP資料庫PostgreSQL 場景與性能測試之11 - (OLTP) 字元串搜尋- 字尾查詢》201711/20171107_11.md
《HTAP資料庫PostgreSQL 場景與性能測試之10 - (OLTP) 字元串搜尋- 字首查詢》201711/20171107_10.md
《HTAP資料庫PostgreSQL 場景與性能測試之9 - (OLTP) 字元串模糊查詢- 含索引實時寫入》201711/20171107_09.md
《HTAP資料庫PostgreSQL 場景與性能測試之8 - (OLTP) 多值類型(數組)含索引實時寫入》201711/20171107_08.md
《HTAP資料庫PostgreSQL 場景與性能測試之7 - (OLTP) 全文檢索- 含索引實時寫入》201711/20171107_07.md
《HTAP資料庫PostgreSQL 場景與性能測試之6 - (OLTP) 空間應用- KNN查詢(搜尋附近對象,由近到遠排序輸出)》201711/20171107_06.md
《HTAP資料庫PostgreSQL 場景與性能測試之5 - (OLTP) 空間應用- 空間包含查詢(表内多邊形包含輸入空間對象)》201711/20171107_05.md
《HTAP資料庫PostgreSQL 場景與性能測試之4 - (OLAP) 大表OUTER JOIN統計查詢》201711/20171107_49.md
《HTAP資料庫PostgreSQL 場景與性能測試之3.1 - (OLAP) 大表JOIN統計查詢-10億join 1億agg》201711/20171107_04.md
《HTAP資料庫PostgreSQL 場景與性能測試之3 - (OLAP) 大表JOIN統計查詢》201711/20171107_03.md
《HTAP資料庫PostgreSQL 場景與性能測試之2 - (OLTP) 多表JOIN》201711/20171107_02.md
《HTAP資料庫PostgreSQL 場景與性能測試之1 - (OLTP) 點查》202001/20200103_01.md
201711/20171121_01.md