1. pg一張表在不影響頻繁的訪問性能情況下,最多能存儲多少條數據
按照上面的理論,那麼我們計算一下bigint為主鍵表的最大理論行數
公式1 : (16KB -200) / 8 = 2023 行
公式2 : 當然,也可以這么算:(16KB)/8 - 200 = 1848行
因為mysql最高的索引樹為三層(表為第一層),那行最大的行數應該為 2023 * 2023= 4092529 行 或 1848 * 1848 = 3415104 行
因為筆者自己也沒有本身測試過,都只是五百萬行一分表,聽圈裡人都說500W是經驗值所以筆者也就沒有深入的去研究過了。等筆者有時間空了,好好的測試一下,呵呵~
2. postgresql 查看有哪些表
1. 查詢表名稱
在psql狀態下查詢表名稱:dt
SQL方式查看錶名稱:
SELECTtablenameFROMpg_tables;
SELECT viewname FROM pg_views
WHERE schemaname ='public'
PostgreSQL獲取資料庫中所有view名視圖
SELECT viewname FROM pg_views
WHERE schemaname ='public'
2. 查詢表結構
在psql狀態下查詢表結構 dtablename
SQL方式查看錶結構
SELECT a.attnum,
a.attname AS field,
t.typname AS type,
a.attlen AS length,
a.atttypmod AS lengthvar,
a.attnotnull AS notnull,
b.description AS comment
FROM pg_class c,
pg_attribute a
LEFT OUTER JOIN pg_description b ON a.attrelid=b.objoid AND a.attnum = b.objsubid,
pg_type t
WHERE c.relname = 'udoc_saldiscount'
and a.attnum > 0
and a.attrelid = c.oid
and a.atttypid = t.oid
ORDER BY a.attnum;
(2)pg資料庫查看錶有多少條數據擴展閱讀:
PostgreSQL存儲系統是由以下幾個子模塊所構成的:
1)頁面管理子模塊:對PostgreSQL緩沖區頁面的組織結構進行定義以及提供頁面操作的方法。
2)緩沖區管理子模塊:管理PostgreSQL的緩沖區,包括本地緩沖區和共享緩沖區。
3)存儲設備管理子模塊:資料庫記錄是存儲在存儲介質上的,存儲設備管理子模塊將屏蔽不同物理存儲設備(塊設備,流設備)介面函數的差異,向上層緩沖區管理子模塊提供統一的訪問介面函數。
4)文件管理子模塊:一般的操作系統對一個進程允許打開的文件數是有限制的,而PostgreSQL伺服器有些時候需要打開的文件數是很多的,因此PostgreSQL文件管理子模塊自身為了突破這個瓶頸,封裝了文件的讀寫操作。
3. 資料庫數據量有多大
查詢一張表的總大小(單位MB,包含表的索引和數據,假設表的模式為<schemaname>,表名為<tablename>):
select pg_size_pretty(pg_total_relation_size('<schemaname>.<tablename>'));
查詢表的數據大小(單位MB,不包括索引,假設表的模式為<schemaname>,表名為<tablename>):
select pg_size_pretty(pg_relation_size('<schemaname>.<tablename>'));
查詢分區表所有分區的總大小(單位MB,包含表的索引和數據,假設表的模式為<schemaname>,表名為<tablename>):
select schemaname,tablename,round(sum(pg_total_relation_size(schemaname || '.' || partitiontablename))/1024/1024) "MB" from pg_partitions where schemaname='<schemaname>' and tablename='<tablename>' group by 1,2;
查詢一個Schema下面的所有表的總大小(單位MB,包括索引和數據,假設模式為<schemaname>):
select schemaname ,round(sum(pg_total_relation_size(schemaname||'.'||tablename))/1024/1024) "Size_MB" from pg_tables where schemaname='<schemaname>' group by 1;
查詢每個資料庫的大小(單位 MB):
select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;