source

데이터베이스의 테이블 크기를 결정하기 위한 쿼리?(계속)

manycodes 2023. 8. 29. 20:44
반응형

데이터베이스의 테이블 크기를 결정하기 위한 쿼리?(계속)

"MySQL 데이터베이스 크기 계산 방법" 웹 사이트는 두 가지 쿼리를 제공합니다.

모든 데이터베이스의 크기 결정

SELECT table_schema "Data Base Name", SUM( data_length + index_length) / 1024 / 1024 
"Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;

데이터베이스의 모든 테이블 크기 결정

SELECT TABLE_NAME, table_rows, data_length, index_length, 
round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
FROM information_schema.TABLES WHERE table_schema = "schema_name";

첫 번째 쿼리는 올바르게 작동하지만 두 번째 쿼리는 결과 집합을 생성하지 않습니다.행 없이 필드 이름만 표시됩니다.데이터베이스에 있는 테이블 크기를 올바르게 표시하도록 두 번째 쿼리를 수정하려면 어떻게 해야 합니까?

교체하다"schema_name"당신의 데이터베이스 중 하나의 이름으로.

그리고 문자열 리터럴에는 이중 따옴표가 아닌 단일 따옴표를 사용합니다.

이것은 도움이 되는 스레드였습니다.OP의 두 번째 레시피에 대한 이 약간의 변화는 테이블만 반환하고(보기 없음) 테이블 크기별로 반환된 데이터 세트를 가장 큰 것에서 가장 작은 것으로 정렬합니다.

MySQL:

SELECT 
  TABLE_NAME, table_rows, data_length, index_length,  
  round(((data_length + index_length) / 1024 / 1024),2) 'Size in MB' 
FROM information_schema.TABLES 
WHERE table_schema = 'yourSchemaName' and TABLE_TYPE='BASE TABLE' 
ORDER BY data_length DESC;

PostGRES: 저는 오늘 PostGRES에서 같은 일을 해야 했고, 이 답변에서 약간의 도움을 빌렸습니다. (그리고 브라우저 탭을 닫은 후에 제가 잃어버린 또 다른 답변), 결국 이렇게 되었습니다.다른 사람에게 유용할 경우를 대비하여 여기에 추가합니다.

[편집 9.28.2021: RDS 인스턴스에서 오류가 발생했습니다. 기본적으로 'pg_total_relation_size가 존재하지 않습니다'라는 오류가 발생했습니다. 해결책은 캐스트하는 것이었습니다.t.tbl::text검색할 수 있습니다.]

SELECT 
  t.tbl table_name,
  ct.reltuples row_count,
  pg_total_relation_size(t.tbl::text) size,
  pg_size_pretty(pg_total_relation_size(t.tbl::text)) pretty_size
FROM (
  SELECT 
    table_name tbl
    FROM information_schema.tables
    WHERE 
      table_schema = 'public'
        AND table_type = 'BASE TABLE'
) t
join (
  SELECT 
    relname, reltuples
  FROM pg_class C
    LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE 
    nspname NOT IN ('pg_catalog', 'information_schema') 
      AND relkind='r' 
) ct 
on t.tbl = ct.relname
order by size desc ;

이게 더 나은 것 같아요..http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

show table status from database;

데이터베이스의 각 테이블 크기를 지정하는 데 사용하는 쿼리입니다.

SELECT CASE WHEN (GROUPING(sob.name)=1) THEN 'All_Tables'
   ELSE ISNULL(sob.name, 'unknown') END AS Table_name,
   SUM(sys.length) AS Byte_Length
FROM sysobjects sob, syscolumns sys
WHERE sob.xtype='u' AND sys.id=sob.id
GROUP BY sob.name
WITH CUBE

언급URL : https://stackoverflow.com/questions/8363435/query-to-determine-the-size-of-tables-in-a-database-mysql

반응형