Comments (4)
pg会自动对超出2000字节的字段进行压缩, 你可以看一下是不是存储到toast切片表里面了
from blog.
感謝 @digoal 德哥回答 我來看一下 toast 不壓縮是否大小對的上
另外請問一下德哥 是否有辦法查看 複合式Index 的 most_common_vals
,most_common_freqs
.
在SQL Server是對於Index來建立不同的統計資訊跟資料分佈 直方圖
例如此圖 我網路上找的範例圖
可以查看到 複合式Index 組合的密度 還有 下方的資料分佈統計資訊
- pg_stats:存放資料表統計資訊(每個欄位)
- pg_class:統計資料表 Index還有source table目前存儲資訊 (有多少block,tuples...)
想請問是否有辦法查詢到複合式Index 資料分佈的統計資訊 (most_common_vals
,most_common_freqs
)
我查了許多資料都說透過 pg_stats 查看欄位資料分佈並沒有涉及到Index統計分佈
如果此題需要另外開 Issue 我可以再另外處理 謝謝
from blog.
pg会自动对超出2000字节的字段进行压缩, 你可以看一下是不是存储到toast切片表里面了
@digoal 德哥 我查看 t8
資料的確會存在 toast 如果改成 external 就會存在 page 中size也可以對的起來.
但我還是不了解 為什麼 t9 資料表 會使用超過 10 個 page.
因為裡面有 4000 筆 int 資料,理論上是 4000 * 4 byte = 16kb,
大約等於 16kb = 8kb * 2
所以 page 應該只有2個左右 但我看 t9 並沒有存放在 toast 上
select relpages,reltuples,relkind,oid,relfilenode,reltoastrelid
from pg_class where relname in ('t9','ix_t9');
利用上面語法查詢如下圖
CREATE TABLE t9 (id int);
CREATE UNIQUE INDEX ix_t9 on t9(id);
insert into t9 select generate_series(1,2000);
insert into t9 select generate_series(2001,4000);
analyze t9;
select relpages,reltuples,relkind,oid from pg_class where relname in ('t9','ix_t9');
Table "public.t9"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+---------+--------------+-------------
id | integer | | | | plain | |
Indexes:
"ix_t9" UNIQUE, btree (id)
經查詢 http://www.postgres.cn/docs/9.5/pageinspect.html
我透過 bt_page_items
跟 heap_page_items
查看資料存儲資訊 發現每個block 到 row 226 就結束了 我看明明還有空間可以儲存 但資料卻存在另一個 block 中
select *
from heap_page_items(get_raw_page('t9',0));
SELECT *
FROM bt_page_items('ix_t9',1);
from blog.
pg会自动对超出2000字节的字段进行压缩, 你可以看一下是不是存储到toast切片表里面了
@digoal 德哥 我查看
t8
資料的確會存在 toast 如果改成 external 就會存在 page 中size也可以對的起來.但我還是不了解 為什麼 t9 資料表 會使用超過 10 個 page.
因為裡面有 4000 筆 int 資料,理論上是 4000 * 4 byte = 16kb,
大約等於 16kb = 8kb * 2所以 page 應該只有2個左右 但我看 t9 並沒有存放在 toast 上
select relpages,reltuples,relkind,oid,relfilenode,reltoastrelid from pg_class where relname in ('t9','ix_t9');利用上面語法查詢如下圖
CREATE TABLE t9 (id int); CREATE UNIQUE INDEX ix_t9 on t9(id); insert into t9 select generate_series(1,2000); insert into t9 select generate_series(2001,4000); analyze t9; select relpages,reltuples,relkind,oid from pg_class where relname in ('t9','ix_t9'); Table "public.t9" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+---------+-----------+----------+---------+---------+--------------+------------- id | integer | | | | plain | | Indexes: "ix_t9" UNIQUE, btree (id)經查詢 http://www.postgres.cn/docs/9.5/pageinspect.html
我透過
bt_page_items
跟heap_page_items
查看資料存儲資訊 發現每個block 到 row 226 就結束了 我看明明還有空間可以儲存 但資料卻存在另一個 block 中select * from heap_page_items(get_raw_page('t9',0)); SELECT * FROM bt_page_items('ix_t9',1);
@digoal 德哥 這個問題 我找到原因了
我想應該是 Database Page Layout
每個 tuples 都有 HeapTupleHeaderData 導致.
我想原因應該是 樂觀鎖 需要紀錄 row version 狀態,而sqlserver是悲觀鎖 所以不用每筆資料都有metadata.
詳細資料 我有寫一篇文章 整理
https://isdaniel.github.io/postgresql-page-deepknow/
from blog.
Related Issues (20)
- postgresql查询问题请教 HOT 1
- 请教pgsql的json解析类问题 HOT 1
- 请教一个有关pg_class被vacuum full的问题 HOT 2
- wsl2 run docker 跑 PG DB 並 使用 stap HOT 2
- 是否有方法將 Postgresql DB 複製統計資訊並匯入其他 Postgresql DB 裡? HOT 2
- Unique index 如何證明效能比 non Unique index 佳? HOT 2
- 许愿
- 修改storage_parameter参数问题 HOT 1
- circle的半径 1000和米应该怎样换算呢
- 关于pg 的test case HOT 1
- 如何实现Mysql作为OLTP,PG作为OLAP HOT 3
- pg按任意字段搜索不支持排序 HOT 1
- 德哥,为什么现在很少更新pg的东西了 HOT 6
- 关于《德说-第147期, 如何把100块钱变成1万块钱?》 HOT 1
- 基于PostgreSQL创业的公司有那些 HOT 2
- 请问德哥,PG有类似canal的数据同步中间件吗? HOT 1
- 《PostgreSQL+PolarDB开源数据库人才认证培训》实验手册持续建设 HOT 3
- 请教,在网络不通的网闸环境,两端的postgres如何增量同步数据? HOT 1
- 表最大字段数统计有问题,删除表字段后也参与统计 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blog.