日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL 统计信息pg_statistic格式及导入导出dump_stat - 兼容Oracle

發(fā)布時(shí)間:2023/12/6 数据库 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL 统计信息pg_statistic格式及导入导出dump_stat - 兼容Oracle 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

標(biāo)簽

PostgreSQL , dump_stat , 統(tǒng)計(jì)信息 , 導(dǎo)出導(dǎo)入


背景

《PostgreSQL 規(guī)格評估 - 微觀、宏觀、精準(zhǔn) 多視角估算數(shù)據(jù)庫性能(選型、做預(yù)算不求人)》

EXPLAIN是PG數(shù)據(jù)庫用于輸出SQL執(zhí)行計(jì)劃的語法,

1、生成的執(zhí)行計(jì)劃中包含COST一項(xiàng)。

如果校準(zhǔn)了成本因子,COST可以和SQL實(shí)際執(zhí)行時(shí)間對其。因子校對的方法如下,實(shí)際上每一種硬件,我們只需要校對一遍即可。

《優(yōu)化器成本因子校對(disk,ssd,memory IO開銷精算) - PostgreSQL real seq_page_cost & random_page_cost in disks,ssd,memory》

《優(yōu)化器成本因子校對 - PostgreSQL explain cost constants alignment to timestamp》

校對因子如下:

#seq_page_cost = 1.0 # measured on an arbitrary scale random_page_cost = 1.2 # same scale as above #cpu_tuple_cost = 0.01 # same scale as above #cpu_index_tuple_cost = 0.005 # same scale as above #cpu_operator_cost = 0.0025 # same scale as above # 以下不需要校對, 不考慮并行計(jì)算SQL parallel_tuple_cost = 0.1 # same scale as above parallel_setup_cost = 1000.0 # same scale as above effective_cache_size = 10GB

2、評估COST還需要依賴統(tǒng)計(jì)信息柱狀圖:

涉及reltuples, relpages. 表示評估的記錄數(shù)以及占用多少個(gè)數(shù)據(jù)塊。注意源頭的block_size可能和PG的不一致,占用多少個(gè)塊需要轉(zhuǎn)換一下。(show block_size可以查看數(shù)據(jù)塊大小。) postgres=# \d pg_class Table "pg_catalog.pg_class" Column | Type | Collation | Nullable | Default ---------------------+--------------+-----------+----------+--------- relname | name | | not null | -- 對象名 relnamespace | oid | | not null | -- 對象所屬的schema, 對應(yīng)pg_namespace.oid reltype | oid | | not null | reloftype | oid | | not null | relowner | oid | | not null | relam | oid | | not null | relfilenode | oid | | not null | reltablespace | oid | | not null | relpages | integer | | not null | -- 評估的頁數(shù)(單位為block_size) reltuples | real | | not null | -- 評估的記錄數(shù) relallvisible | integer | | not null | reltoastrelid | oid | | not null | relhasindex | boolean | | not null | relisshared | boolean | | not null | relpersistence | "char" | | not null | relkind | "char" | | not null | relnatts | smallint | | not null | relchecks | smallint | | not null | relhasoids | boolean | | not null | relhaspkey | boolean | | not null | relhasrules | boolean | | not null | relhastriggers | boolean | | not null | relhassubclass | boolean | | not null | relrowsecurity | boolean | | not null | relforcerowsecurity | boolean | | not null | relispopulated | boolean | | not null | relreplident | "char" | | not null | relispartition | boolean | | not null | relfrozenxid | xid | | not null | relminmxid | xid | | not null | relacl | aclitem[] | | | reloptions | text[] | | | relpartbound | pg_node_tree | | | Indexes: "pg_class_oid_index" UNIQUE, btree (oid) "pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace) "pg_class_tblspc_relfilenode_index" btree (reltablespace, relfilenode) 涉及 空值比例、平均列寬、唯一值比例或個(gè)數(shù)、高頻值以及頻率、柱狀圖分布、存儲(chǔ)相關(guān)性、多值列(高頻元素及比例、元素柱狀圖分布)。 -- 這個(gè)是視圖: postgres=# \d pg_stats View "pg_catalog.pg_stats" Column | Type | Collation | Nullable | Default ------------------------+----------+-----------+----------+--------- schemaname | name | | | -- 對象所屬的schema tablename | name | | | -- 對象名 attname | name | | | -- 列名 inherited | boolean | | | -- 是否為繼承表的統(tǒng)計(jì)信息(false時(shí)表示當(dāng)前表的統(tǒng)計(jì)信息,true時(shí)表示包含所有繼承表的統(tǒng)計(jì)信息) null_frac | real | | | -- 該列空值比例 avg_width | integer | | | -- 該列平均長度 n_distinct | real | | | -- 該列唯一值個(gè)數(shù)(-1表示唯一,小于1表示占比,大于等于1表示實(shí)際的唯一值個(gè)數(shù)) most_common_vals | anyarray | | | -- 該列高頻詞 most_common_freqs | real[] | | | -- 該列高頻詞對應(yīng)的出現(xiàn)頻率 histogram_bounds | anyarray | | | -- 該列柱狀圖(表示隔出的每個(gè)BUCKET的記錄數(shù)均等) correlation | real | | | -- 該列存儲(chǔ)相關(guān)性(-1到1的區(qū)間),絕對值越小,存儲(chǔ)越離散。小于0表示反向相關(guān),大于0表示正向相關(guān) most_common_elems | anyarray | | | -- 該列為多值類型(數(shù)組)時(shí),多值元素的高頻詞 most_common_elem_freqs | real[] | | | -- 多值元素高頻詞的出現(xiàn)頻率 elem_count_histogram | real[] | | | -- 多值元素的柱狀圖中,每個(gè)區(qū)間的非空唯一元素個(gè)數(shù) -- 這個(gè)是實(shí)際存儲(chǔ)的數(shù)據(jù)(也就是要導(dǎo)入的部分): -- https://www.postgresql.org/docs/10/static/catalog-pg-statistic.html postgres=# \d pg_statistic Table "pg_catalog.pg_statistic" Column | Type | Collation | Nullable | Default -------------+----------+-----------+----------+--------- starelid | oid | | not null | -- 對象OID,對應(yīng)pg_class.oid staattnum | smallint | | not null | -- 該列在表中的位置序號(hào),對應(yīng)pg_attribute.attnum stainherit | boolean | | not null | -- 是否為繼承表的統(tǒng)計(jì)信息(false時(shí)表示當(dāng)前表的統(tǒng)計(jì)信息,true時(shí)表示包含所有繼承表的統(tǒng)計(jì)信息) stanullfrac | real | | not null | -- 空值比例 stawidth | integer | | not null | -- 平均長度 stadistinct | real | | not null | -- 唯一值個(gè)數(shù)、比例 stakind1 | smallint | | not null | -- 表示第1個(gè)SLOT的統(tǒng)計(jì)信息分類編號(hào) stakind2 | smallint | | not null | -- 表示第2個(gè)SLOT的統(tǒng)計(jì)信息分類編號(hào) stakind3 | smallint | | not null | -- 表示第3個(gè)SLOT的統(tǒng)計(jì)信息分類編號(hào) stakind4 | smallint | | not null | -- 表示第4個(gè)SLOT的統(tǒng)計(jì)信息分類編號(hào) stakind5 | smallint | | not null | -- 表示第5個(gè)SLOT的統(tǒng)計(jì)信息分類編號(hào) staop1 | oid | | not null | -- 表示第1個(gè)SLOT的統(tǒng)計(jì)信息是用哪個(gè)operator生成的(例如統(tǒng)計(jì)柱狀圖邊界,需要用到 "<" 這個(gè)操作符) staop2 | oid | | not null | -- 表示第2個(gè)SLOT的統(tǒng)計(jì)信息是用哪個(gè)operator生成的(例如統(tǒng)計(jì)柱狀圖邊界,需要用到 "<" 這個(gè)操作符) staop3 | oid | | not null | -- 表示第3個(gè)SLOT的統(tǒng)計(jì)信息是用哪個(gè)operator生成的(例如統(tǒng)計(jì)柱狀圖邊界,需要用到 "<" 這個(gè)操作符) staop4 | oid | | not null | -- 表示第4個(gè)SLOT的統(tǒng)計(jì)信息是用哪個(gè)operator生成的(例如統(tǒng)計(jì)柱狀圖邊界,需要用到 "<" 這個(gè)操作符) staop5 | oid | | not null | -- 表示第5個(gè)SLOT的統(tǒng)計(jì)信息是用哪個(gè)operator生成的(例如統(tǒng)計(jì)柱狀圖邊界,需要用到 "<" 這個(gè)操作符) stanumbers1 | real[] | | | -- 表示第1個(gè)SLOT的以numeric[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有numeric的統(tǒng)計(jì)信息。 stanumbers2 | real[] | | | -- 表示第2個(gè)SLOT的以numeric[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有numeric的統(tǒng)計(jì)信息。 stanumbers3 | real[] | | | -- 表示第3個(gè)SLOT的以numeric[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有numeric的統(tǒng)計(jì)信息。 stanumbers4 | real[] | | | -- 表示第4個(gè)SLOT的以numeric[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有numeric的統(tǒng)計(jì)信息。 stanumbers5 | real[] | | | -- 表示第5個(gè)SLOT的以numeric[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有numeric的統(tǒng)計(jì)信息。 stavalues1 | anyarray | | | -- 表示第1個(gè)SLOT的以anyarray[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有anyarray[]統(tǒng)計(jì)信息。數(shù)組類型為列的元素類型,或者列本身的類型。 stavalues2 | anyarray | | | -- 表示第2個(gè)SLOT的以anyarray[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有anyarray[]統(tǒng)計(jì)信息。數(shù)組類型為列的元素類型,或者列本身的類型。 stavalues3 | anyarray | | | -- 表示第3個(gè)SLOT的以anyarray[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有anyarray[]統(tǒng)計(jì)信息。數(shù)組類型為列的元素類型,或者列本身的類型。 stavalues4 | anyarray | | | -- 表示第4個(gè)SLOT的以anyarray[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有anyarray[]統(tǒng)計(jì)信息。數(shù)組類型為列的元素類型,或者列本身的類型。 stavalues5 | anyarray | | | -- 表示第5個(gè)SLOT的以anyarray[]為結(jié)果的統(tǒng)計(jì)信息,NULL說明這個(gè)SLOT分類沒有anyarray[]統(tǒng)計(jì)信息。數(shù)組類型為列的元素類型,或者列本身的類型。 Indexes: "pg_statistic_relid_att_inh_index" UNIQUE, btree (starelid, staattnum, stainherit)

statkind的定義

src/include/catalog/pg_statistic.h

/* * Currently, five statistical slot "kinds" are defined by core PostgreSQL, * as documented below. Additional "kinds" will probably appear in * future to help cope with non-scalar datatypes. Also, custom data types * can define their own "kind" codes by mutual agreement between a custom * typanalyze routine and the selectivity estimation functions of the type's * operators. * * Code reading the pg_statistic relation should not assume that a particular * data "kind" will appear in any particular slot. Instead, search the * stakind fields to see if the desired data is available. (The standard * function get_attstatsslot() may be used for this.) */ /* * The present allocation of "kind" codes is: * * 1-99: reserved for assignment by the core PostgreSQL project * (values in this range will be documented in this file) * 100-199: reserved for assignment by the PostGIS project * (values to be documented in PostGIS documentation) * 200-299: reserved for assignment by the ESRI ST_Geometry project * (values to be documented in ESRI ST_Geometry documentation) * 300-9999: reserved for future public assignments * * For private use you may choose a "kind" code at random in the range * 10000-30000. However, for code that is to be widely disseminated it is * better to obtain a publicly defined "kind" code by request from the * PostgreSQL Global Development Group. */ /* * In a "most common values" slot, staop is the OID of the "=" operator * used to decide whether values are the same or not. stavalues contains * the K most common non-null values appearing in the column, and stanumbers * contains their frequencies (fractions of total row count). The values * shall be ordered in decreasing frequency. Note that since the arrays are * variable-size, K may be chosen by the statistics collector. Values should * not appear in MCV unless they have been observed to occur more than once; * a unique column will have no MCV slot. */ #define STATISTIC_KIND_MCV 1 /* * A "histogram" slot describes the distribution of scalar data. staop is * the OID of the "<" operator that describes the sort ordering. (In theory, * more than one histogram could appear, if a datatype has more than one * useful sort operator.) stavalues contains M (>=2) non-null values that * divide the non-null column data values into M-1 bins of approximately equal * population. The first stavalues item is the MIN and the last is the MAX. * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV * slot is also provided, then the histogram describes the data distribution * *after removing the values listed in MCV* (thus, it's a "compressed * histogram" in the technical parlance). This allows a more accurate * representation of the distribution of a column with some very-common * values. In a column with only a few distinct values, it's possible that * the MCV list describes the entire data population; in this case the * histogram reduces to empty and should be omitted. */ #define STATISTIC_KIND_HISTOGRAM 2 /* * A "correlation" slot describes the correlation between the physical order * of table tuples and the ordering of data values of this column, as seen * by the "<" operator identified by staop. (As with the histogram, more * than one entry could theoretically appear.) stavalues is not used and * should be NULL. stanumbers contains a single entry, the correlation * coefficient between the sequence of data values and the sequence of * their actual tuple positions. The coefficient ranges from +1 to -1. */ #define STATISTIC_KIND_CORRELATION 3 /* * A "most common elements" slot is similar to a "most common values" slot, * except that it stores the most common non-null *elements* of the column * values. This is useful when the column datatype is an array or some other * type with identifiable elements (for instance, tsvector). staop contains * the equality operator appropriate to the element type. stavalues contains * the most common element values, and stanumbers their frequencies. Unlike * MCV slots, frequencies are measured as the fraction of non-null rows the * element value appears in, not the frequency of all rows. Also unlike * MCV slots, the values are sorted into the element type's default order * (to support binary search for a particular value). Since this puts the * minimum and maximum frequencies at unpredictable spots in stanumbers, * there are two extra members of stanumbers, holding copies of the minimum * and maximum frequencies. Optionally, there can be a third extra member, * which holds the frequency of null elements (expressed in the same terms: * the fraction of non-null rows that contain at least one null element). If * this member is omitted, the column is presumed to contain no null elements. * * Note: in current usage for tsvector columns, the stavalues elements are of * type text, even though their representation within tsvector is not * exactly text. */ #define STATISTIC_KIND_MCELEM 4 /* * A "distinct elements count histogram" slot describes the distribution of * the number of distinct element values present in each row of an array-type * column. Only non-null rows are considered, and only non-null elements. * staop contains the equality operator appropriate to the element type. * stavalues is not used and should be NULL. The last member of stanumbers is * the average count of distinct element values over all non-null rows. The * preceding M (>=2) members form a histogram that divides the population of * distinct-elements counts into M-1 bins of approximately equal population. * The first of these is the minimum observed count, and the last the maximum. */ #define STATISTIC_KIND_DECHIST 5 /* * A "length histogram" slot describes the distribution of range lengths in * rows of a range-type column. stanumbers contains a single entry, the * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range * values that divide the column data values into M-1 bins of approximately * equal population. The lengths are stored as float8s, as measured by the * range type's subdiff function. Only non-null rows are considered. */ #define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 /* * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for * a range-type column. stavalues contains M (>=2) range values that divide * the column data values into M-1 bins of approximately equal population. * Unlike a regular scalar histogram, this is actually two histograms combined * into a single array, with the lower bounds of each value forming a * histogram of lower bounds, and the upper bounds a histogram of upper * bounds. Only non-NULL, non-empty ranges are included. */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7

那么這些統(tǒng)計(jì)信息如何導(dǎo)入導(dǎo)出呢?

導(dǎo)出導(dǎo)入統(tǒng)計(jì)信息

https://postgrespro.com/docs/postgresproee/9.6/dump-stat.html

dump_stat這個(gè)插件是PostgreSQL pro推出的兼容9.6版本的導(dǎo)出統(tǒng)計(jì)信息的插件。

代碼如下:

https://github.com/postgrespro/postgrespro/tree/PGPRO9_6

https://github.com/postgrespro/postgrespro/tree/PGPRO9_6/contrib/dump_stat

導(dǎo)出

通過dump_stat導(dǎo)出(導(dǎo)出的結(jié)構(gòu)已經(jīng)是SQL形式),然后通過SQL導(dǎo)入。

$ psql test -A test=# \t test=# \o dump_stat.sql test=# select dump_statistic();

pg_statistic的每一條記錄,產(chǎn)生一條如下SQL:

WITH upsert as ( UPDATE pg_catalog.pg_statistic SET column_name = expression [, ...] WHERE to_schema_qualified_relation(starelid) = t_relname AND to_attname(t_relname, staattnum) = t_attname AND to_atttype(t_relname, staattnum) = t_atttype AND stainherit = t_stainherit RETURNING *) ins as ( SELECT expression [, ...] WHERE NOT EXISTS (SELECT * FROM upsert) AND to_attnum(t_relname, t_attname) IS NOT NULL AND to_atttype(t_relname, t_attname) = t_atttype) INSERT INTO pg_catalog.pg_statistic SELECT * FROM ins; where expression can be one of: array_in(array_text, type_name::regtype::oid, -1) value::type_name

stat導(dǎo)入的實(shí)際例子

(表示public.test表的info列的統(tǒng)計(jì)信息,如果存在則更新,不存在則插入。)

WITH upsert as ( UPDATE pg_catalog.pg_statistic SET stanullfrac = 0, stawidth = 4, stadistinct = -1, stakind1 = 2, stakind2 = 3, stakind3 = 0, stakind4 = 0, stakind5 = 0, staop1 = 'pg_catalog.<(pg_catalog.text, pg_catalog.text)'::regoperator, staop2 = 'pg_catalog.<(pg_catalog.text, pg_catalog.text)'::regoperator, staop3 = '0'::regoperator, staop4 = '0'::regoperator, staop5 = '0'::regoperator, stanumbers1 = NULL::real[], stanumbers2 = '{-0.5}'::real[], stanumbers3 = NULL::real[], stanumbers4 = NULL::real[], stanumbers5 = NULL::real[], stavalues1 = array_in('{abc,cde,test}', 'pg_catalog.text'::regtype, -1)::anyarray, stavalues2 = NULL::anyarray, stavalues3 = NULL::anyarray, stavalues4 = NULL::anyarray, stavalues5 = NULL::anyarray WHERE to_schema_qualified_relation(starelid) = 'public.test' AND to_attname('public.test', staattnum) = 'info' AND to_atttype('public.test', staattnum) = 'pg_catalog.text' AND stainherit = false RETURNING * ), ins as ( SELECT 'public.test'::regclass, to_attnum('public.test', 'info'), 'false'::boolean, 0::real, 4::integer, -1::real, 2, -- stakind=2 表示柱狀圖 3, -- stakind=3 表示相關(guān)性 0, 0, 0, 'pg_catalog.<(pg_catalog.text, pg_catalog.text)'::regoperator, 'pg_catalog.<(pg_catalog.text, pg_catalog.text)'::regoperator, '0'::regoperator, '0'::regoperator, '0'::regoperator, NULL::real[], '{-0.5}'::real[], NULL::real[], NULL::real[], NULL::real[], array_in('{abc,cde,test}', 'pg_catalog.text'::regtype, -1)::anyarray, NULL::anyarray, NULL::anyarray, NULL::anyarray, NULL::anyarray WHERE NOT EXISTS (SELECT * FROM upsert) AND to_attnum('public.test', 'info') IS NOT NULL AND to_atttype('public.test', 'info') = 'pg_catalog.text' ) INSERT INTO pg_catalog.pg_statistic SELECT * FROM ins;

導(dǎo)入

1、修改postgresql.conf,允許修改系統(tǒng)表,重啟數(shù)據(jù)庫生效配置

vi postgresql.conf allow_system_table_mods=on pg_ctl restart -m fast

2、導(dǎo)入統(tǒng)計(jì)信息

-- 1 pg_class update pg_class set reltuples=?, relpages=? where oid=?; -- 2 pg_statistic WITH upsert as ( UPDATE pg_catalog.pg_statistic SET column_name = expression [, ...] WHERE to_schema_qualified_relation(starelid) = t_relname AND to_attname(t_relname, staattnum) = t_attname AND to_atttype(t_relname, staattnum) = t_atttype AND stainherit = t_stainherit RETURNING *) ins as ( SELECT expression [, ...] WHERE NOT EXISTS (SELECT * FROM upsert) AND to_attnum(t_relname, t_attname) IS NOT NULL AND to_atttype(t_relname, t_attname) = t_atttype) INSERT INTO pg_catalog.pg_statistic SELECT * FROM ins; where expression can be one of: array_in(array_text, type_name::regtype::oid, -1) value::type_name

3、導(dǎo)入完成后,將allow_system_table_mods設(shè)置為off,重啟數(shù)據(jù)庫。

dump_statistic代碼

CREATE FUNCTION dump_statistic(relid oid) RETURNS SETOF TEXT AS $$ DECLARE result text; cmd text; -- main query in_args text; -- args for insert up_args text; -- args for upsert fstaop text := '%s::regoperator'; arr_in text := 'array_in(%s, %s::regtype, -1)::anyarray'; stacols text[] = ARRAY['stakind', 'staop', 'stanumbers', 'stavalues' ]; r record; i int; j text; ncols int := 26; -- number of columns in pg_statistic stanum text[]; -- stanumbers{1, 5} staval text[]; -- stavalues{1, 5} staop text[]; -- staop{1, 5} relname text; -- quoted relation name attname text; -- quoted attribute name atttype text; -- quoted attribute type BEGIN for r in select * from pg_catalog.pg_statistic where starelid = relid and get_namespace(starelid) != to_namespace('information_schema') and get_namespace(starelid) != to_namespace('pg_catalog') loop relname := to_schema_qualified_relation(r.starelid); attname := quote_literal(to_attname(relname, r.staattnum)); atttype := quote_literal(to_atttype(relname, r.staattnum)); relname := quote_literal(relname); -- redefine relname in_args := ''; up_args = 'stanullfrac = %s, stawidth = %s, stadistinct = %s, '; cmd := 'WITH upsert as ( ' || 'UPDATE pg_catalog.pg_statistic SET %s ' || 'WHERE to_schema_qualified_relation(starelid) = ' || relname || ' ' 'AND to_attname(' || relname || ', staattnum) = ' || attname || ' ' 'AND to_atttype(' || relname || ', staattnum) = ' || atttype || ' ' 'AND stainherit = ' || r.stainherit || ' ' || 'RETURNING *), ' || 'ins as ( ' || 'SELECT %s ' || 'WHERE NOT EXISTS (SELECT * FROM upsert) ' || 'AND to_attnum(' || relname || ', ' || attname || ') IS NOT NULL ' 'AND to_atttype(' || relname || ', ' || attname || ') = ' || atttype || ') ' 'INSERT INTO pg_catalog.pg_statistic SELECT * FROM ins;'; for i in 1..ncols loop in_args := in_args || '%s'; if i != ncols then in_args := in_args || ', '; end if; end loop; for j in 1..4 loop for i in 1..5 loop up_args := up_args || format('%s%s = %%s', stacols[j], i); if i * j != 20 then up_args := up_args || ', '; end if; end loop; end loop; cmd := format(cmd, up_args, in_args); --prepare template for main query staop := array[format(fstaop, quote_literal(to_schema_qualified_operator(r.staop1))), format(fstaop, quote_literal(to_schema_qualified_operator(r.staop2))), format(fstaop, quote_literal(to_schema_qualified_operator(r.staop3))), format(fstaop, quote_literal(to_schema_qualified_operator(r.staop4))), format(fstaop, quote_literal(to_schema_qualified_operator(r.staop5)))]; stanum := array[r.stanumbers1::text, r.stanumbers2::text, r.stanumbers3::text, r.stanumbers4::text, r.stanumbers5::text]; for i in 1..5 loop if stanum[i] is null then stanum[i] := 'NULL::real[]'; else stanum[i] := '''' || stanum[i] || '''::real[]'; end if; end loop; if r.stavalues1 is not null then staval[1] := format(arr_in, quote_literal(r.stavalues1), quote_literal( to_schema_qualified_type( anyarray_elemtype(r.stavalues1)))); else staval[1] := 'NULL::anyarray'; end if; if r.stavalues2 is not null then staval[2] := format(arr_in, quote_literal(r.stavalues2), quote_literal( to_schema_qualified_type( anyarray_elemtype(r.stavalues2)))); else staval[2] := 'NULL::anyarray'; end if; if r.stavalues3 is not null then staval[3] := format(arr_in, quote_literal(r.stavalues3), quote_literal( to_schema_qualified_type( anyarray_elemtype(r.stavalues3)))); else staval[3] := 'NULL::anyarray'; end if; if r.stavalues4 is not null then staval[4] := format(arr_in, quote_literal(r.stavalues4), quote_literal( to_schema_qualified_type( anyarray_elemtype(r.stavalues4)))); else staval[4] := 'NULL::anyarray'; end if; if r.stavalues5 is not null then staval[5] := format(arr_in, quote_literal(r.stavalues5), quote_literal( to_schema_qualified_type( anyarray_elemtype(r.stavalues5)))); else staval[5] := 'NULL::anyarray'; end if; --DEBUG --staop := array['{arr}', '{arr}', '{arr}', '{arr}', '{arr}']; --stanum := array['{num}', '{num}', '{num}', '{num}', '{num}']; --staval := array['{val}', '{val}', '{val}', '{val}', '{val}']; result := format(cmd, r.stanullfrac, r.stawidth, r.stadistinct, -- stakind r.stakind1, r.stakind2, r.stakind3, r.stakind4, r.stakind5, -- staop staop[1], staop[2], staop[3], staop[4], staop[5], -- stanumbers stanum[1], stanum[2], stanum[3], stanum[4], stanum[5], -- stavalues staval[1], staval[2], staval[3], staval[4], staval[5], -- first 6 columns format('%s::regclass', relname), format('to_attnum(%s, %s)', relname, attname), '''' || r.stainherit || '''::boolean', r.stanullfrac || '::real', r.stawidth || '::integer', r.stadistinct || '::real', -- stakind r.stakind1, r.stakind2, r.stakind3, r.stakind4, r.stakind5, -- staop staop[1], staop[2], staop[3], staop[4], staop[5], -- stanumbers stanum[1], stanum[2], stanum[3], stanum[4], stanum[5], -- stavalues staval[1], staval[2], staval[3], staval[4], staval[5]); return next result; end loop; return; END; $$ LANGUAGE plpgsql;

我們甚至可以將Oracle數(shù)據(jù)庫的統(tǒng)計(jì)信息,平移到PG數(shù)據(jù)庫,對齊需要的元素即可:

記錄數(shù)、占用多少個(gè)數(shù)據(jù)塊。每列的空值比例、平均列寬、唯一值比例或個(gè)數(shù)、高頻值以及頻率、柱狀圖分布、存儲(chǔ)相關(guān)性、多值列(高頻元素及比例、元素柱狀圖分布)。

好處:在遷移ORACLE數(shù)據(jù)時(shí),可以關(guān)閉autovacuumm(提高導(dǎo)入速度),通過這種方法來導(dǎo)入統(tǒng)計(jì)信息。(只要元素對應(yīng)即可,當(dāng)然有些元素可能是ORACLE中不采集的,比如多值列的統(tǒng)計(jì)信息)。

參考

https://github.com/postgrespro/postgrespro/tree/PGPRO9_6/contrib/dump_stat

總結(jié)

以上是生活随笔為你收集整理的PostgreSQL 统计信息pg_statistic格式及导入导出dump_stat - 兼容Oracle的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日本色小说视频 | 国产精品久久久久久久久婷婷 | 91高清完整版在线观看 | 欧美日韩视频精品 | 免费一级片视频 | 91亚州| 国产在线观看,日本 | 在线观看日韩国产 | 韩国av免费 | 国产亚洲精品中文字幕 | 欧美日韩另类视频 | 国产欧美最新羞羞视频在线观看 | 中文字幕在线看视频国产中文版 | 国产精品久久久久久超碰 | 天天综合天天做天天综合 | 亚洲视频大全 | 国产精品免费视频网站 | 91在线观看欧美日韩 | 国产精品久久久久久久久搜平片 | 99免费在线播放99久久免费 | 国产亚洲精品成人 | 91丝袜美腿| 五月婷婷国产 | 很黄很污的视频网站 | 国产精品热视频 | 蜜桃av久久久亚洲精品 | 综合网av| 国精产品999国精产 久久久久 | 午夜久久网 | 欧美精品久久久久久久久免 | 精品一二三区视频 | 国产午夜精品av一区二区 | 在线观看一区二区视频 | 久久久亚洲麻豆日韩精品一区三区 | 日韩精品在线视频免费观看 | 亚洲激情网站免费观看 | 四虎影视8848dvd | 久久精品91久久久久久再现 | 激情视频区 | 91在线看视频 | 婷婷色九月 | 在线日本看片免费人成视久网 | 久久综合久久综合这里只有精品 | 久久久精品一区二区 | 欧美激情一区不卡 | 黄色av播放 | 久久久久国产一区二区三区四区 | 一区二区久久 | 丁香视频| 中文字幕 二区 | 波多野结衣一区 | 在线国产片 | 夜夜操网 | 久草青青在线观看 | 精品国产欧美一区二区三区不卡 | 手机av资源 | 亚洲高清在线观看视频 | 欧美在线观看小视频 | 在线看成人片 | 蜜桃视频色 | 国产综合久久 | 国产一级精品视频 | 四虎国产精品免费 | www免费在线观看 | 91亚洲狠狠婷婷综合久久久 | 丁香六月激情 | 国产成人精品一区二区三区福利 | 五月天激情视频在线观看 | 中文字幕在线观看视频一区二区三区 | 欧美一区,二区 | 精品在线播放视频 | 精品在线播放视频 | 中文日韩在线视频 | 久久成人国产精品 | 久草在在线 | 成人久久毛片 | av大全在线 | 99久久激情视频 | 亚洲有 在线| 亚洲综合情 | 成人在线一区二区 | 视频一区二区视频 | 91精品国产三级a在线观看 | 国产成人精品a | 日韩精品在线视频 | 欧美日韩综合在线观看 | 成年人毛片在线观看 | av免费看看 | 一本一本久久a久久精品综合 | 国产精品一区二区三区在线 | 亚洲国产丝袜在线观看 | 美女视频黄,久久 | 国产亚洲欧洲 | 亚洲人片在线观看 | 国产色网站 | 日本黄色片一区二区 | 一级片免费观看视频 | 欧美超碰在线 | 三级黄色网址 | 欧美一级片在线免费观看 | 天天操伊人 | 精品一区二区综合 | 一区二区电影在线观看 | 91精彩视频 | 国产不卡在线观看 | 日韩国产精品久久 | 久久久久久国产精品免费 | 久久综合色8888 | 婷婷网站天天婷婷网站 | 97高清视频 | 国产成人精品久久久久 | 97在线观看免费高清完整版在线观看 | 久久婷综合 | 亚洲一区精品二人人爽久久 | 婷婷综合久久 | 成人在线黄色 | 日韩在线观看第一页 | 欧美激情第一页xxx 午夜性福利 | 日日夜夜艹 | 麻豆av一区二区三区在线观看 | 五月婷婷色 | 国产精品6999成人免费视频 | 日韩精品电影在线播放 | 亚洲91精品在线观看 | 日韩毛片在线免费观看 | 精品91 | 在线视频久久 | 免费看片网址 | 亚洲综合爱 | 在线草 | 美女网站在线播放 | 日韩精品一区二区三区水蜜桃 | 免费高清看电视网站 | 五月天婷婷丁香花 | 久久久久久久久久久高潮一区二区 | av中文字幕日韩 | 亚洲九九九在线观看 | 在线精品播放 | 国产欧美在线一区二区三区 | 91精品国产成人www | 亚洲视频 视频在线 | 91麻豆精品国产 | 久久伦理影院 | 欧美日韩一区久久 | 色在线视频网 | 亚洲国产中文字幕在线观看 | 欧美日韩国产在线一区 | 久久中文字幕导航 | www.伊人网| 日日干综合 | 国产在线中文 | 九九久久久久99精品 | 午夜aaaa| 正在播放国产一区 | 91免费看黄色| 久久久久在线 | h视频在线看 | 久草com| 欧美日韩视频在线一区 | 69av视频在线观看 | 天天操导航 | 91精品久久香蕉国产线看观看 | 伊人黄色网 | 91视频免费播放 | 91成人欧美 | 日韩精品视频在线观看网址 | 国产精品久久久久四虎 | 中文字幕亚洲综合久久五月天色无吗'' | 久久首页 | 日本中文字幕在线电影 | 国产男女无遮挡猛进猛出在线观看 | 亚洲欧美视频网站 | 欧美俄罗斯性视频 | 国产黄免费看 | 久久久久久久久久福利 | 欧美日韩一区二区三区不卡 | 婷香五月 | 天天爱天天干天天爽 | 亚洲 欧美 精品 | 国产免费av一区二区三区 | 欧洲精品亚洲精品 | 中文字幕91在线 | 97超碰国产精品女人人人爽 | 午夜美女福利直播 | 国产小视频在线观看 | 欧产日产国产69 | 天天操天天玩 | 人人射人人澡 | 日本免费久久高清视频 | 欧美天堂视频在线 | 97超碰中文字幕 | 91在线日韩 | 欧美午夜性 | 国产精品原创av片国产免费 | 1区2区3区在线观看 三级动图 | 在线成人免费电影 | 99免费观看视频 | 午夜国产福利在线 | 欧美一区成人 | 91黄色影视| 国产精品久久久久久久久久 | 在线观看av小说 | 中文字幕一区在线观看视频 | 午夜性色| 日韩精品短视频 | 国产成人精品日本亚洲999 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产成人一区二 | 国产在线一区二区 | 久久免费视频在线观看 | 免费精品视频在线观看 | 国产视频亚洲视频 | 国产麻豆精品95视频 | 亚洲精品网址在线观看 | 青青看片| 婷婷精品国产一区二区三区日韩 | 亚洲综合在线播放 | 狠狠的干| 久久综合狠狠狠色97 | 免费成人av | 97偷拍视频 | 黄色影院在线免费观看 | 五月激情婷婷丁香 | 中文字幕免费久久 | 久久高清免费观看 | 349k.cc看片app| 91精品国产麻豆国产自产影视 | 婷婷午夜天 | 亚洲综合网站在线观看 | 中文字幕在线观看完整版 | 成人动态视频 | 久久狠狠干 | 欧美精品一区二区性色 | 91污污视频在线观看 | 国产麻豆剧果冻传媒视频播放量 | 午夜精品福利一区二区三区蜜桃 | 国产又粗又猛又黄又爽的视频 | 成人免费在线看片 | 久久夜色精品国产欧美乱极品 | 久久精品伊人 | 亚洲国产免费网站 | 免费69视频 | 超碰免费成人 | 国产资源在线免费观看 | 久久久99精品免费观看乱色 | 97在线观看视频国产 | 成年人在线播放视频 | 成人网大片 | 久久久人人爽 | 婷婷综合av | 日韩高清毛片 | 免费91在线观看 | 日韩美视频 | 人人揉人人揉人人揉人人揉97 | 精品视频国产 | 五月婷婷中文网 | 成人在线免费av | 欧美日韩视频 | 免费在线日韩 | 国产一区二区三区四区在线 | 久久综合狠狠综合久久激情 | 午夜av色 | 成 人 黄 色 视频免费播放 | 精品在线观看一区二区三区 | 久久涩视频 | 久久草草热国产精品直播 | 天堂va在线高清一区 | 91在线中文 | 欧美最新大片在线看 | 伊人狠狠色 | 国产精品久久久久四虎 | 久操视频在线免费看 | 91人人爽人人爽人人精88v | 久草| 久久9精品 | 成人午夜免费福利 | 国产精品嫩草55av | 欧美精品视 | 国内外成人在线 | 激情久久综合网 | 在线观看视频一区二区三区 | 黄网站色视频免费观看 | 国产一级黄色电影 | 91成人免费观看视频 | 国产精品久久久久久久久大全 | 亚洲视频免费在线观看 | 久久精久久精 | 激情婷婷亚洲 | 91亚瑟视频 | 欧美视频xxx | 午夜成人免费电影 | 在线观看岛国av | 国产不卡在线 | 丁香婷五月 | 久久视频这里有久久精品视频11 | 大片网站久久 | 激情电影在线观看 | 午夜视频在线网站 | 激情黄色一级片 | 91麻豆操| 久草在线免费在线观看 | 欧美久久九九 | 综合久久久久久久久 | 国产视频精品久久 | 一级电影免费在线观看 | 亚洲国产人午在线一二区 | 综合国产在线观看 | 四虎国产永久在线精品 | 五月婷婷综合激情网 | 国产高清久久久 | 天天射综合 | 一区二区三区在线观看免费 | 国产白浆在线观看 | 婷婷精品 | av成人免费在线看 | www视频在线播放 | 欧美日韩午夜 | 国内精品中文字幕 | 大胆欧美gogo免费视频一二区 | 免费a视频在线 | 午夜精品一区二区三区可下载 | 综合婷婷丁香 | 日韩精品一区二区三区免费视频观看 | 亚洲高清av | 最近中文字幕在线 | 91大神在线观看视频 | 亚洲成人精品国产 | av东方在线 | 日本久久片 | 国产一区麻豆 | 久久美女电影 | 在线观看中文字幕网站 | 九色视频网址 | 在线观看国产永久免费视频 | 久久人人爽人人爽人人片av软件 | 国产日韩高清在线 | 91亚洲精品国产 | 人人爽人人澡人人添人人人人 | 伊人小视频 | 亚洲精品国精品久久99热一 | 久久综合日 | 亚洲人片在线观看 | 日韩网站在线免费观看 | 特级毛片在线 | 成人动图 | a级国产乱理论片在线观看 特级毛片在线观看 | 午夜神马福利 | 亚州成人av在线 | 中文字幕精品一区二区三区电影 | 最近日本字幕mv免费观看在线 | 国产精品久久久久aaaa | 少妇bbbb揉bbbb日本 | av在线a | 免费在线观看一区 | 成人a级大片| 色网站在线观看 | 亚洲日韩中文字幕在线播放 | 亚洲国产欧美一区二区三区丁香婷 | 91资源在线播放 | 国产精品国产三级国产aⅴ无密码 | 精品一区精品二区 | 三级性生活视频 | 久久久久久久久久久久久久电影 | 亚洲区视频在线 | 91av网站在线观看 | 91精品国产九九九久久久亚洲 | 国内综合精品午夜久久资源 | 久草久视频| 久久免费精品视频 | 国产精品99久久久久久人免费 | 中文字幕av一区二区三区四区 | 久在线观看视频 | 草久草久| 91高清一区 | 亚洲高清视频在线播放 | 天天综合网 天天综合色 | www夜夜 | 美女免费黄网站 | 视频国产在线 | 亚洲理论在线 | 久久a视频| 国产精品美乳一区二区免费 | 国产精品久久久一区二区三区网站 | 亚洲综合色av | 麻豆mv在线观看 | 久久综合色播五月 | 国产一区欧美二区 | 精品国产免费一区二区三区五区 | 五月天九九| 国产免费又爽又刺激在线观看 | 国产理论在线 | 欧美日韩亚洲第一 | 99精品热| 午夜18视频在线观看 | 国产成人精品一区二区三区福利 | 丰满少妇麻豆av | 黄a网 | 高潮久久久久久久久 | 夜色成人av | 国产黄色精品在线观看 | 久久人人爽人人爽人人片av免费 | 97超碰超碰久久福利超碰 | 色操插| 国产在线视频资源 | 亚洲精品97 | 成人免费一级 | 在线免费性生活片 | 日韩在线电影观看 | 国产伦精品一区二区三区高清 | 亚洲欧美国内爽妇网 | 久久精品视频在线观看免费 | 西西444www大胆高清图片 | 在线免费成人 | 久久精品国产久精国产 | 激情婷婷久久 | 中文字幕一区二区三区在线视频 | 国产对白av | 国产精品久久久久四虎 | 国产高清免费视频 | 玖玖视频网 | 久热色超碰| 国产一级a毛片视频爆浆 | 亚洲 欧洲 国产 精品 | 美女福利视频 | 国产第一二区 | 欧美九九九 | 操操操com| 蜜臀aⅴ国产精品久久久国产 | 国产成人久久av977小说 | 天天综合网 天天综合色 | av免费成人| 色婷婷久久一区二区 | 在线观看日韩免费视频 | 国产精品成人久久久久久久 | 91色视频| 九九九热 | 欧美一区免费在线观看 | 91精品视频免费在线观看 | 久久久免费观看 | 日韩中文字幕视频在线观看 | 黄色av三级在线 | 啪啪激情网 | 久草在线资源网 | 精品999在线观看 | 日本黄色免费网站 | 久久国产精品一区二区三区四区 | 日韩视频在线播放 | 狠狠色丁香婷婷综合基地 | 99久久久久免费精品国产 | 免费观看www视频 | 91福利视频在线 | 日韩欧美在线一区 | www.天天干.com | 久久久久久久久电影 | 91在线看视频免费 | 日韩久久久久久久久久 | 欧美一级免费片 | 在线观看免费版高清版 | 亚洲国产成人av网 | 欧美在线aa | 欧美一级艳片视频免费观看 | 日韩视频中文字幕 | 在线观看91av | 久久久久欧美精品999 | 国产护士在线 | 亚洲第一香蕉视频 | av网站有哪些 | 黄色片毛片 | 国产不卡在线 | 亚洲国产精品成人综合 | 精品美女国产在线 | 99色资源 | 一区二区三区四区五区在线 | 亚洲欧美视频 | av888.com | 免费看片成人 | 精品日本视频 | 五月天av在线 | 国产香蕉久久精品综合网 | 最新av中文字幕 | 在线日韩三级 | 中文字幕在线视频网站 | 国产美女视频 | 亚洲国产视频网站 | 香蕉视频在线看 | 国产精品高清一区二区三区 | 国产精品毛片一区二区在线 | 国产一性一爱一乱一交 | 日本高清中文字幕有码在线 | 成年人毛片在线观看 | 天天干一干 | 精品久久久久久久久久久久久久久久久久 | 欧美激情第八页 | 一本之道乱码区 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 在线观看国产高清视频 | 日日摸日日爽 | av在线之家电影网站 | 99久久久国产精品免费99 | 精品美女在线视频 | 成年人免费在线看 | 国产精品国产三级国产aⅴ9色 | 亚洲欧美国产日韩在线观看 | 国产成年免费视频 | 欧美a免费| 天天干天天操天天拍 | 色噜噜在线观看 | 国产精品麻豆免费版 | 久久爱资源网 | 成人欧美一区二区三区在线观看 | 黄色精品久久久 | 99久国产 | 日韩欧美一区二区三区视频 | 婷婷精品国产一区二区三区日韩 | 成人黄大片视频在线观看 | 狠狠亚洲 | 成人黄色在线看 | 久久久久区 | 免费精品国产va自在自线 | av韩国在线| 国产精品久久久久久婷婷天堂 | 免费午夜视频在线观看 | 成人黄色免费在线观看 | 国产h在线播放 | 天天舔天天射天天操 | 亚洲区二区 | 日韩免费在线观看视频 | 精品国产诱惑 | 国产精品99在线播放 | 日本中文字幕在线播放 | 日韩综合视频在线观看 | www.亚洲视频.com | 国产999| 91精品毛片 | 国产精品日韩欧美 | 全黄色一级片 | 久久黄页 | 久久国产精品色婷婷 | 成 人 黄 色 视频播放1 | 国产黄色资源 | 日韩电影一区二区在线观看 | 精品在线观看视频 | 久久精品视频在线免费观看 | 久久爱导航 | 国产精品一区二区在线看 | 欧美xxxxx在线视频 | 97视频播放 | 久久精品二区 | 久草国产精品 | 手机看片中文字幕 | 久久国产二区 | 国产美女精品 | 久久综合色播五月 | 国产真实精品久久二三区 | 四虎影视av | 免费成人av电影 | 黄色一级性片 | 在线免费精品视频 | 综合婷婷| 日韩美av在线 | 亚洲人天堂 | 91精品视频一区 | 久久久久久综合网天天 | 日韩久久精品 | 久久久久北条麻妃免费看 | 奇米影视777四色米奇影院 | 免费观看性生交大片3 | av一区二区三区在线 | 国产美女精品 | 91麻豆国产 | 久久伊人91| 97成人在线| 四虎成人精品在永久免费 | 麻豆免费视频观看 | 日韩欧美在线国产 | 天天操天天干天天爱 | 日韩午夜精品 | 精品91在线 | 99精品视频在线看 | 黄色软件视频大全免费下载 | 久久久精华网 | 五月天激情视频在线观看 | 精品亚洲网 | 国产裸体视频bbbbb | 激情av一区二区 | 亚洲精品国产欧美在线观看 | 免费日韩精品 | 日本午夜在线亚洲.国产 | 亚洲综合视频在线观看 | 久久无码av一区二区三区电影网 | 成人黄在线 | 色婷婷av一区 | 国产成人av网址 | 中文字幕乱码日本亚洲一区二区 | 国产精品18久久久久久久 | 麻豆91网站 | 久久免费视频播放 | 中文字幕视频免费观看 | 激情欧美xxxx | 狠狠色噜噜狠狠 | 欧美性色综合网 | 婷婷色 亚洲 | a级片久久久 | 国产精品一区二区久久精品爱涩 | 成在线播放 | 日韩精品国产一区 | 91精品久久久久久综合乱菊 | 一级黄色片在线播放 | 亚洲视频在线观看 | .国产精品成人自产拍在线观看6 | 久久一区国产 | 亚洲欧洲精品一区二区 | 97超级碰碰 | 波多野结衣综合网 | 久久久久福利视频 | 69精品在线观看 | 国产精品涩涩屋www在线观看 | 国产亚洲精品成人av久久ww | 日韩精品字幕 | 日韩欧美精品在线观看视频 | 免费在线观看国产精品 | 国产精品成人av久久 | 国产专区日韩专区 | 国产精品免费一区二区三区 | 亚洲一级特黄 | 日韩三区在线 | 久久精品国亚洲 | 日韩欧美aaa | 五月婷社区 | 99久久久免费视频 | 欧美天天综合 | 93久久精品日日躁夜夜躁欧美 | 五月天久久综合 | 99在线免费观看视频 | 欧美精品一二三 | 精品一区二区久久久久久久网站 | 久久精品视频免费观看 | 久久视频一区二区 | 久久丝袜视频 | 九九精品视频在线看 | 日韩欧美视频二区 | 久久精品中文字幕一区二区三区 | 黄色日本免费 | 免费三级骚 | 久久综合久久伊人 | 久久66热这里只有精品 | 国产精品久久久久久久久免费 | 中文字幕91视频 | 免费av大片 | 欧美 亚洲 另类 激情 另类 | 四虎影视精品 | 中文字幕视频播放 | 99久高清在线观看视频99精品热在线观看视频 | 国产福利91精品一区 | 亚洲精品黄 | 在线观看不卡视频 | 99久国产| 免费a级观看 | 久久久精品久久日韩一区综合 | 成人免费视频网 | 亚洲精品乱码久久久久久蜜桃不爽 | 三级a视频| 91在线免费观看网站 | 欧美美女一级片 | 国产福利在线免费 | 国产亚洲视频在线免费观看 | 色com网| 中文字幕视频播放 | 天天天天色射综合 | 国产高清视频免费在线观看 | 成人h视频 | 久久久久久久久久国产精品 | 日韩中午字幕 | 在线精品亚洲一区二区 | 手机在线观看国产精品 | 日日日天天天 | 日日摸日日 | 欧美久久久久久久久久久久 | 久久麻豆视频 | 九九免费视频 | 日日夜夜骑 | 亚洲精品黄网站 | 久久久久麻豆 | 国产精品一区二区三区观看 | 国产流白浆高潮在线观看 | 中文字幕丝袜 | 日韩中文字幕在线看 | 天天爱天天草 | 丁香六月在线观看 | 一区二区三区av在线 | 久久久精品 一区二区三区 国产99视频在线观看 | 欧美精品一区二区三区一线天视频 | 久一久久 | 国产精品麻豆91 | 综合铜03| 天天干一干 | 99re8这里有精品热视频免费 | 亚洲高清在线精品 | 久久99热国产 | av三级在线播放 | 99热在线观看免费 | 欧美日韩中字 | 黄色精品一区 | 麻豆超碰| 国产欧美最新羞羞视频在线观看 | 国产精品 久久 | 夜夜躁日日躁狠狠久久av | 四虎在线影视 | 国产精品高清av | 欧美 日韩 视频 | 91色综合| 国产一级在线视频 | 久久免费99 | 在线视频99 | 日韩性网站| 视色网站 | 在线亚洲成人 | 一级片免费在线 | 2022国产精品视频 | 亚洲精品玖玖玖av在线看 | 久久69精品| 久久久久久久毛片 | 国产亚洲精品久久久久久网站 | 久久人人爽人人爽人人片 | 天天插视频 | 天天干天天拍天天操天天拍 | 中文字幕在线播放av | 久久久国产精品一区二区三区 | 99精品系列| 天天干天天操天天干 | 国产一区二区在线观看免费 | www.五月婷婷.com | 色婷婷丁香 | 在线观看视频在线观看 | 国产亚洲日本 | 天天操天天透 | 日本公妇色中文字幕 | 欧美性色黄大片在线观看 | 成人av一区二区兰花在线播放 | 奇米先锋 | 亚洲视频精品在线 | av亚洲产国偷v产偷v自拍小说 | 久久午夜网 | 人人爽人人爽人人片av | 四虎影视8848dvd | 香蕉在线观看 | 日韩综合在线观看 | 亚洲视频免费在线看 | 久久久网| 亚洲精品小视频 | 国产精品igao视频网网址 | 91一区一区三区 | 欧美在线观看小视频 | 亚洲码国产日韩欧美高潮在线播放 | 国产午夜精品一区二区三区在线观看 | 丁香花在线视频观看免费 | 最新国产精品拍自在线播放 | 国内精品久久久久久久影视麻豆 | 91污污| 国产精品毛片久久久久久久久久99999999 | 国产一线天在线观看 | 色多多污污 | 欧美黄污视频 | 婷婷色中文字幕 | 久久在线观看 | 亚洲日日日 | 91香蕉嫩草 | 超碰在线94 | 国产亚洲激情视频在线 | 亚洲精品理论 | 午夜黄色| 日韩免费福利 | 在线观看播放av | 国产精品一区二区三区久久 | 日日碰狠狠添天天爽超碰97久久 | 午夜久久影院 | 欧美色就是色 | 亚洲欧美国产日韩在线观看 | 日韩av图片 | 久久久www成人免费精品 | 免费观看一级特黄欧美大片 | 超碰夜夜 | 精品国产一区二区三区久久 | 久久午夜视频 | 久久视频这里有精品 | 久久精品国产亚洲aⅴ | 国内久久 | 国产精品九九热 | 国产日韩精品一区二区在线观看播放 | 欧美精品在线视频 | 日韩a级免费视频 | 精品在线视频观看 | 婷婷在线色 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 欧美在线18 | 日韩精品在线视频 | av观看久久久 | 国产午夜精品一区二区三区嫩草 | 国产一区网| 日本夜夜草视频网站 | 在线观看欧美成人 | 国产精品麻豆果冻传媒在线播放 | 一区二区精品在线 | 九九久| 一区二区三区www | 99超碰在线观看 | 91精品老司机久久一区啪 | 狠狠躁夜夜躁人人爽视频 | 93久久精品日日躁夜夜躁欧美 | 99久久精品免费看国产四区 | 亚洲精品久久视频 | 亚洲国产精品成人精品 | 国产精品www | 综合久久久久久久久 | 国产亚洲视频在线观看 | 午夜精品久久久久久久久久 | 色播激情五月 | 日韩欧美精品免费 | 亚洲精品资源 | 日批视频国产 | 国产在线观看你懂的 | 丁香九月婷婷综合 | 国产在线1区 | 国产亚洲欧美在线视频 | 尤物九九久久国产精品的分类 | 91视频免费视频 | 久久99亚洲网美利坚合众国 | 日韩激情影院 | 一区二区三区电影在线播 | 国产精品福利在线观看 | 在线视频免费观看 | 九九日韩 | 婷婷性综合| 中文字幕人成一区 | 天天在线视频色 | 91av色| 国产亚洲日 | 国产成人区 | 国产伦精品一区二区三区高清 | 中文一区在线观看 | 91人人揉日日捏人人看 | 亚洲精品字幕在线观看 | 免费看一级特黄a大片 | 一区二区精品国产 | 亚洲一二视频 | 久久免费视频这里只有精品 | 国产精品密入口果冻 | 黄色毛片观看 | 国产探花视频在线播放 | 欧美日韩国产精品一区二区 | 国产不卡高清 | 亚洲欧美国内爽妇网 | 亚洲精品视频一 | 91视频免费看片 | 精品日本视频 | 91传媒在线播放 | 国产午夜麻豆影院在线观看 | 成人精品一区二区三区电影免费 | 91中文字幕永久在线 | 成人精品一区二区三区电影免费 | 少妇搡bbb | 国产精品一区二区吃奶在线观看 | 毛片随便看 | 日韩欧美国产成人 | 天天在线操 | 日日夜夜婷婷 | 日本精品在线视频 | 亚洲精品1区2区3区 超碰成人网 | 99久久激情 | 免费观看黄色av | 五月天丁香综合 | 国产系列精品av | 日韩欧美视频一区 | 9在线观看免费高清完整版在线观看明 | 免费看一及片 | 日日插日日干 | 黄色片亚洲 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产大尺度视频 | 天堂在线一区二区三区 | 国内视频1区 | 天天操偷偷干 | 二区三区在线观看 | 久久这里精品视频 | 伊人开心激情 | 免费观看国产成人 | 91九色网站 | 国产亚洲va综合人人澡精品 | 毛片一级免费一级 | www最近高清中文国语在线观看 | 欧美成人精品欧美一级乱 | 成av在线| 精品福利网 | 色婷婷久久一区二区 | 91精品国产91 | av电影免费在线播放 | 天天综合网久久综合网 | 日本精品视频网站 | 蜜桃av综合网 | 999男人的天堂 | 国产精品中文字幕在线观看 | 天天做天天爱天天综合网 | 在线看片中文字幕 | 9999亚洲 | 天天射成人 | 观看免费av | 亚洲精品999 | 国内精品久久久久久久影视简单 | 亚洲欧美日韩中文在线 | 在线韩国电影免费观影完整版 | 欧美日韩一区二区三区在线免费观看 | 久久人人爽人人爽人人 | 日韩电影在线观看一区二区 | 99热这里有 | 国产精品国产三级国产aⅴ入口 | 在线视频 影院 | 成人综合日日夜夜 | 国产生活一级片 | 久久久久久久久久久久久久免费看 | 欧美精品久久久久久久免费 | 精品一区二区免费视频 | 国产成人综合精品 | 综合网天天色 | 免费黄色一区 | 91人人爱| 国产精品视频永久免费播放 | 国产免费一区二区三区最新 | 国模视频一区二区三区 | 最新成人av | 91自拍视频在线 | 91探花视频| 日韩黄色中文字幕 | 中文字幕国产亚洲 | 片黄色毛片黄色毛片 | 久久久精品久久日韩一区综合 | 国产精品一区二区久久久久 | 视频1区2区| 91在线看免费 | 天天干夜夜操视频 | 亚洲人在线7777777精品 | 在线免费高清 | 在线观看一级 | 亚洲精品国产高清 | 国产视频高清 | 国产高清在线a视频大全 | 国产91亚洲| 久久伦理电影 | 国产成人精品在线播放 | www.av免费| 激情中文字幕 | 综合网伊人 | 日韩大片在线免费观看 | 成人午夜电影在线 | 久久成熟 | av天天澡天天爽天天av | 成人动图 | 91av在线精品| 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 大胆欧美gogo免费视频一二区 | 久久久国产精品免费 | 亚洲综合视频在线播放 | 久久免费在线视频 | 国产在线精品视频 | 黄色小网站在线观看 | 亚洲理论电影网 | 日韩欧美视频免费在线观看 | 精品一二区 | 久久女教师 | 亚洲精品一区二区三区高潮 | 国产精品 中文在线 | 欧美国产视频在线 | 超碰97公开 | 国产精品中文字幕av | 在线视频第一页 | 伊甸园av在线 | 国产精品激情偷乱一区二区∴ | 日韩一区正在播放 | 91在线观 | 国产亚洲情侣一区二区无 | 欧美激情精品久久久 | 日韩黄色av网站 | 成年人网站免费观看 | av一本久道久久波多野结衣 | 91av手机在线观看 | 欧美精品久久久久久久久久久 | 中文字幕在线不卡国产视频 | 久久精品99久久久久久 | 日日夜夜精品免费视频 | 看毛片的网址 | 一区二区三区四区精品 | 国产免费a | 日本中文一级片 | 噜噜色官网 | av免费成人 | 亚洲一区二区三区精品在线观看 | av天天干 | 九九精品视频在线观看 | 91自拍视频在线观看 |