ANALYZE 문은 PostgreSQL에서 테이블의 통계 데이터를 수집하는 데 사용할 수 있습니다. 그러나 실제로 이러한 데이터를 테이블에 삽입하고 싶지는 않습니다. 일부 쿼리의 비용을 평가하기 만하면 실제로 데이터를 넣지 않고 PostgreSQL의 테이블 통계 데이터를 수동으로 지정해야합니까?PostgreSQL에서 테이블의 통계 데이터를 수동으로 업데이트하는 방법
답변
ANALYZE
과 EXPLAIN ANALYZE
을 혼동하고 있다고 생각합니다. 다른 것들이 있습니다.
변경 사항을 적용하지 않고 쿼리 비용과 타이밍을 원할 경우 유일한 실제 옵션은 EXPLAIN ANALYZE
, ROLLBACK
에서 쿼리를 실행하는 것입니다.
이 여전히 의미하는 쿼리를 실행한다 :
- CPU 시간과
- 잠금 여전히
- 새로운 행이 실제로 테이블에 기록됩니다 기간 동안 촬영 및 개최 소비되는 I/O 및 인덱스가 있지만 표시되지 않습니다. 그들은
VACUUM
에서 정리됩니다.
삽입 된 데이터가없는 경우에도 쿼리를 이미 설명 할 수 있으므로 실행 계획을 느끼는 데 도움이됩니다.
실제 데이터와 같은 것이 없습니다. 해결 방법으로 트랜잭션을 시작하고 일부 데이터를 INSERT하고 EXPLAIN으로 쿼리를 분석 한 다음 거래를 ROLLBACK 처리 할 수 있습니다.
예 :
mydatabase=# BEGIN;
BEGIN
mydatabase=# INSERT INTO auth_message (user_id, message) VALUES (1, 'foobar');
INSERT 0 1
mydatabase=# EXPLAIN ANALYSE SELECT count(*) FROM auth_message;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Aggregate (cost=24.50..24.51 rows=1 width=0) (actual time=0.011..0.011 rows=1 loops=1)
-> Seq Scan on auth_message (cost=0.00..21.60 rows=1160 width=0) (actual time=0.007..0.008 rows=1 loops=1)
Total runtime: 0.042 ms
(3 lignes)
mydatabase=# ROLLBACK;
ROLLBACK
mydatabase=# EXPLAIN ANALYSE SELECT count(*) FROM auth_message;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Aggregate (cost=24.50..24.51 rows=1 width=0) (actual time=0.011..0.011 rows=1 loops=1)
-> Seq Scan on auth_message (cost=0.00..21.60 rows=1160 width=0) (actual time=0.009..0.009 rows=0 loops=1)
Total runtime: 0.043 ms
(3 lignes)
1 회가되었다고 표시를 분석 EXPLAIN 일부 "임시"데이터 (행 = 1)
이 엄격히 "거짓"아니지만 적어도 PostgreSQL을 계획 실행 (및 할 수있는 다양한 최적화), IMHO, 데이터가없는 것보다 가장 좋습니다 (면책 조항 : 순전히 직관적 인)
아 ... 그리고 ROLLBACK 이후에 VACUUM ANALYZE your_table을 추가하면 실행 계획에 사용되는 통계에서 잠재적 수정 사항을 정리하는 데 도움이 될 수 있습니다. 그러나 PostgreSQL 전문가가 아니기 때문에 롤백 된 트랜잭션도 테이블 통계를 롤백하는지 확신 할 수 없습니다 . –
- 1. 다른 테이블의 데이터를 사용하여 테이블을 업데이트하는 방법
- 2. GridView - EntityDataSource를 수동으로 업데이트하는 방법?
- 3. PostgreSQL에서 이동하는 날씨 통계 계산하기
- 4. postgresql에서 행을 수동으로 삭제하고 현재 ActiveRecord가 깨졌습니다.
- 5. 큰 테이블의 프로세스 통계
- 6. 수동으로 멀티 바인딩을 업데이트하는 방법
- 7. 수동으로 CakePHP에서 jointable을 업데이트하는 방법
- 8. UITableView에서 데이터를 업데이트하는 방법?
- 9. HBase에서 데이터를 업데이트하는 방법
- 10. Kibana의 Postgresql에서 데이터를 시각화하는 방법?
- 11. postgresql에서 테이블의 행을 선택하고 평균하는 방법
- 12. PostgreSQL에서 테이블의 속성 이름 만 나열하는 방법
- 13. 테이블의 DML 통계
- 14. PostgreSQL에서 다른 테이블의 특정 두 열의 데이터를 계산하는 방법은 무엇입니까?
- 15. 테이블의 특정 데이터를 업데이트하는 방법은 무엇입니까?
- 16. 테이블의 모든 날짜를 업데이트하는 방법
- 17. RoR 테이블의 데이터를 검색 한 다음 해당 데이터를 기반으로 다른 테이블의 다른 열을 업데이트하는 방법
- 18. 테이블의 선택된 셀의 데이터를 읽고 C#에서 업데이트하는 방법
- 19. 다른 데이터 테이블의 데이터 테이블에서 데이터를 효율적으로 업데이트하는 방법
- 20. 두 번째 테이블의 데이터를 사용하여 하나의 테이블을 업데이트하는 방법
- 21. 다른 테이블 (MYSQL)의 데이터를 사용하여 테이블의 필드를 업데이트하는 방법
- 22. PostgreSQL에서 데이터베이스 테이블의 광범위한보기 만들기
- 23. postgreSQL에서 다른 테이블의 데이터 사용
- 24. 의 PostgreSQL에서 다른 테이블의 데이터에 대한 쿼리 결과에서 데이터를 비교
- 25. 하이브에있는 테이블의 일부 열을 다른 테이블의 데이터로 업데이트하는 방법
- 26. UIDocument 데이터를 업데이트하는 방법
- 27. detailsview에서 데이터를 업데이트하는 방법
- 28. DataGrid에서 데이터를 업데이트하는 방법
- 29. 봇용 데이터를 업데이트하는 방법
- 30. 배열의 데이터를 업데이트하는 방법
안녕하세요, 귀하의 회신에 감사드립니다. 글쎄, 아마도 내 진술은 약간 불분명하다. 나는 테이블의 통계를 수동으로 지정하는 방법을 찾고 싶다. 테이블 A에는 증서에 데이터가 없다고하지만, PostgreSQL이 거기에 있다고 생각하게 만들고 싶다. 그 테이블에 1000 행이 있으므로 모의 통계를 사용하여 쿼리를 평가할 수 있습니다. – yingzhox
@ user1780833 예, 매우 불분명합니다! 이 시점에서 매우 중요한 세부 사항 및 기타 관련 상황을 포함하는 새로운 게시를 고려하십시오. –