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;