AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[size](dba)

Martin Hope
arthur
Asked: 2021-01-30 01:31:42 +0800 CST

sql server中没有索引的表大小

  • 3

使用以下查询,我可以获得表的索引大小:

SELECT
    i.name              AS IndexName,
    SUM(page_count * 8) AS IndexSizeKB
FROM sys.dm_db_index_physical_stats(db_id(), object_id('schema.table'), NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
GROUP BY i.name
ORDER BY i.name

如果我执行sp_spaceused 'schema.table'没有索引的大小是否对应于data列?

有什么方法可以在 sql server 中获取没有索引的表的大小?(SELECT语句会很好,因为我想将此查询插入到更大的查询中)。

如果我执行Get size of all tables in database,表的大小与索引的大小几乎相同(表明有问题)。

sql-server size
  • 2 个回答
  • 1478 Views
Martin Hope
Anshul Goyal
Asked: 2015-08-21 02:50:32 +0800 CST

如何计算 mysql 中列大小的限制等

  • 0

从 mysql 文档,

1 - 在加入时,

单个连接中可以引用的最大表数为61. 这也适用于在视图定义中可以引用的表的数量。

2 - 行大小

每个表(无论存储引擎如何)的最大行大小为 65,535 字节

3 - 关于列数

每个表有 4096 列的硬性限制

InnoDB 最多允许 1000 列。]

是否解释了如何计算这些数字,或者这些都是在系统设计过程中假设的常量?

mysql size
  • 1 个回答
  • 99 Views
Martin Hope
BlueChippy
Asked: 2014-04-01 22:26:37 +0800 CST

从查询中查找实际数据大小?

  • 3

是否可以找到特定查询将返回的数据大小?

例如,我可以使用以下命令查找每个日期的行数:

select mydatecolumn, count(*) 
from MyTable
where mydatecolumn < '01-JAN-2014'
group by mydatecolumn

但是有没有办法找出这些行中包含的数据的大小?

例如

select mydatecolumn, "sizeofactualdata",
from mytable
where mydatecolumn < '01-JAN-2014'
group by mydatecolumn

即使每个日期只有一个查询,这也不是问题。

t-sql size
  • 1 个回答
  • 17980 Views
Martin Hope
raacer
Asked: 2013-10-21 03:29:02 +0800 CST

为什么 Django 会话表在 PostgreSQL 上增长

  • 7

我在我的 Django 1.4.8 项目中通过 PgBouncer 1.4.2 使用 PostgreSQL 9.1.6。django_session表一直在增长。VACUUM 没有帮助。VACUUM FULL 运行数小时。TRUNCATE通常只会有帮助。

该表包含大约 10KB 的行。每秒更新 40 次。

# SELECT table_name, pg_size_pretty(table_size) AS table_size, pg_size_pretty(indexes_size) AS indexes_size, pg_size_pretty(total_size) AS total_size
FROM (
    SELECT table_name, pg_table_size(table_name) AS table_size, pg_indexes_size(table_name) AS indexes_size, pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables ORDER BY total_size DESC LIMIT 1
) AS pretty_sizes;
        table_name         | table_size | indexes_size | total_size 
---------------------------+------------+--------------+------------
 "public"."django_session" | 35 GB      | 209 MB       | 35 GB
(1 row)

# SELECT COUNT(*) FROM django_session;
 count 
-------
 40196

cron 每晚都会执行一个清理命令。

./manage.py cleanup && echo "vacuum (analyze, verbose);" | ./manage.py dbshell

输出中有一些关于 django_session 的有趣内容。

INFO:  vacuuming "public.django_session"
INFO:  scanned index "django_session_pkey" to remove 5338 row versions
DETAIL:  CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO:  scanned index "django_session_expire_date" to remove 5338 row versions
DETAIL:  CPU 0.10s/0.06u sec elapsed 3.47 sec.
INFO:  "django_session": removed 5338 row versions in 187 pages
DETAIL:  CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO:  index "django_session_pkey" now contains 71568 row versions in 1647 pages
DETAIL:  0 index row versions were removed.
4 index pages have been deleted, 4 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  index "django_session_expire_date" now contains 71568 row versions in 25049 pages
DETAIL:  2785 index row versions were removed.
1804 index pages have been deleted, 1798 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  "django_session": found 0 removable, 71568 nonremovable row versions in 3386 out of 3386 pages
DETAIL:  46699 dead row versions cannot be removed yet.
There were 811150 unused item pointers.
0 pages are entirely empty.
CPU 0.11s/0.10u sec elapsed 16.00 sec.
...
INFO:  analyzing "public.django_session"
INFO:  "django_session": scanned 3460 of 3460 pages, containing 25514 live rows and 288939 dead rows; 25514 rows in sample, 25514 estimated total rows

我想知道46699 个死行版本、811150 个未使用的项目指针和288939 个死行。许多消息来源称问题在于“交易中的闲置”流程。我认为这是我的情况,因为有很多这样的过程:

# SELECT COUNT(*) FROM pg_stat_activity WHERE current_query = '<IDLE> in transaction';
 count 
-------
    30

但是没有真正古老的查询。

# SELECT age(now(), query_start) AS "age" FROM pg_stat_activity ORDER BY query_start LIMIT 1;
       age       
-----------------
 00:00:00.241521

大量的空闲进程可能是由 TransactionMiddleware 引起的。

所以现在我没有任何想法。我手动执行了清理命令,它运行良好,所以我决定问题以某种方式消失并截断了表。但它又长出来了。

表增长图

# select * from pgstattuple('django_session');
-[ RECORD 1 ]------+---------
table_len          | 23003136
tuple_count        | 32139
tuple_len          | 11201544
tuple_percent      | 48.7
dead_tuple_count   | 1729
dead_tuple_len     | 171632
dead_tuple_percent | 0.75
free_space         | 8930044
free_percent       | 38.82

什么可能导致这种奇怪的问题?

更新:

我已删除 TransactionMiddleware 并在 PgBouncer 中切换到事务模式。现在几乎没有“交易中的空闲”流程。但这无济于事。

$ echo $(for i in `seq 100`; do echo "SELECT COUNT(*) FROM pg_stat_activity WHERE current_query = '<IDLE> in transaction';" | sudo -u postgres psql mydb | grep  ' 0'; sleep 0.1; done | wc -l)"% of time there is NO idle in transaction processes"

75% of time there is NO idle in transaction processes
postgresql size
  • 2 个回答
  • 3116 Views
Martin Hope
SQLFox
Asked: 2012-10-03 13:49:51 +0800 CST

堆大小太大,无法显示数据

  • 4

SQL Server 2008 R2 标准版数据库有一个没有索引、八列varchar(50)一varchar(255)列和 162,676 行的临时表。我希望这个表的大小不应该超过 100 MB,但它实际上超过了 7.5 GB。

什么会导致这种情况?我怀疑我可以通过添加聚簇索引或完全重新创建表来解决问题,但我想了解是怎么回事使一个临时表膨胀到如此荒谬的比例。到目前为止,这是我收集的相关数据:

sys.dm_db_index_physical_stats (DETAILED)
    fragment_count = 1056
    page_count = 964392
    forwarded_record_count = 0

sp_spaceused @objname = 'db.schema.table',@updateusage = 'TRUE'
    reserved = 7716888 KB
    data = 7715136 KB
    index_size = 24 KB
    unused = 1728 KB

sys.allocation_units
    total_pages = 964611
    used_pages = 964395
    data_pages = 964392

谁能告诉我为什么这张桌子占用这么多空间?

sql-server size
  • 2 个回答
  • 2000 Views
Martin Hope
BennoDual
Asked: 2012-03-19 09:53:32 +0800 CST

大数据库日志 SQL Server 2008

  • 1

我有一个在 Microsoft SQL Server 2008 下运行的数据库。现在,我看到数据库的日志(.ldf文件)正在增长到很大。数据库文件 ( .mdf) 的大小为 630MB,日志文件的大小为 12GB。我想知道这是什么原因。有没有一个工具可以让我看到我可以看到的日志,这么大的原因是什么?

我该怎么做才能防止日志增长到这么大?

sql-server-2008 size
  • 3 个回答
  • 797 Views
Martin Hope
Confusion
Asked: 2011-12-23 01:31:33 +0800 CST

数据包小于 max_allowed_pa​​cket 的“数据包太大”错误

  • 2

前一段时间,我们开始在 MySQL 数据库中存储序列化数据,并立即遇到众所周知的“数据包太大”错误。我们将 max_allowed_pa​​cket 增加到 64M,一切正常。

今天早上,我突然收到一个too large packet 26814732错误,尽管

mysql> show variables like '%packet%';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 67108864 |
+--------------------+----------+
1 row in set (0.00 sec)

这怎么可能?我找到了这篇相关文章,但我们没有处理 mysqldump,我们没有更改任何其他数据库配置设置,而且我们已经存储了比这个更大的 BLOB。是什么改变导致了这种情况?

mysql size
  • 1 个回答
  • 697 Views
Martin Hope
Martin Cifko Štefček
Asked: 2011-12-17 02:31:24 +0800 CST

在 SQL Server 2008 中重新计算行大小?

  • 5

可以在 SQL Server 2008 中重新计算行大小吗?举个例子:

declare @counter int
declare @statement nvarchar(max)
set @counter=0
drop table kua2
create table kua2(id int)
while @counter<307
begin
    set @statement = N'alter table kua2 add id'+CAST(@counter as nvarchar(max))+N' nvarchar(max)'
    exec (@statement)
    set @statement = N'alter table kua2 drop column id'+CAST(@counter as nvarchar(max))
    exec (@statement)
    set @counter=@counter+1
end

alter index all on kua2 rebuild

dbcc cleantable (0,'kua2',0)

alter table kua2 add id0 int
alter table kua2 add id1 int
alter table kua2 add id2 int
alter table kua2 add id3 int

当我添加 id3 列时,我收到了关于 8060 字节的警告,但该表只有 5 个 int 列,它仍然计算行大小中删除的 nvarchar(max) 列。

唯一有帮助的是重新创建表。但出于几个原因,我不想这样做。有没有办法告诉 SQL Server 以某种方式重新计算行大小?

sql-server-2008 size
  • 3 个回答
  • 1312 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve