PostgreSQL“ ขนาดของไฟล์ชั่วคราว”


13

ฉันได้นำเข้าข้อมูลไปยังฐานข้อมูลใหม่ (ประมาณ 600m แถวของการประทับเวลา, จำนวนเต็ม, สองเท่า) จากนั้นฉันสร้างดัชนีบางส่วนและพยายามแก้ไขบางคอลัมน์ (มีปัญหาพื้นที่บางส่วน) ฐานข้อมูลถูกทำให้เป็นสุญญากาศ

ตอนนี้ pgAdmin III บอกฉันว่า " ขนาดไฟล์ชั่วคราว " คือ 50G ~ +

  1. ไฟล์ชั่วคราวเหล่านี้คืออะไร? เหล่านี้เป็นบันทึกธุรกรรม SQL Server หรือไม่
  2. ฉันจะกำจัดพวกเขาได้อย่างไรดูเหมือนว่าฐานข้อมูลใหญ่กว่าที่ควรจะเป็น (ขนาดรวมของฐานข้อมูลคือ 91 GB)

การใช้Posgres 9.4.1บนเซิร์ฟเวอร์ Windows 2012

สกรีนช็อตของแท็บสถิติฐานข้อมูล:

สกรีนช็อตของแท็บสถิติฐานข้อมูล


ค่าคอลัมน์ "ขนาดไฟล์ชั่วคราว" หมายถึงอะไร
Ofiris

คำตอบ:


12

ฉันไม่พบสิ่งใดในเอกสาร pgAdmin แต่ซอร์สโค้ดเปิดเผยข้อความค้นหาที่อยู่เบื้องหลังรายการเหล่านี้ (เพิ่มสำหรับ Postgres 9.2+):

มันเดือดลงไปที่:

SELECT temp_files AS "Temporary files"
     , temp_bytes AS "Size of temporary files"
FROM   pg_stat_database db;

และคู่มือ Postgres มีรายละเอียดสำหรับpg_stat_database :

tmp_files bigint จำนวนไฟล์ชั่วคราวที่สร้างโดยเคียวรีในฐานข้อมูลนี้ ไฟล์ชั่วคราวทั้งหมดจะถูกนับโดยไม่คำนึงถึงสาเหตุที่สร้างไฟล์ชั่วคราว (เช่นการเรียงลำดับหรือการแฮช) และคำนึงถึงการตั้งค่าlog_temp_files

temp_bytes bigint จำนวนข้อมูลทั้งหมดที่เขียนไปยังไฟล์ชั่วคราวโดยการสืบค้นในฐานข้อมูลนี้ ไฟล์ชั่วคราวทั้งหมดจะถูกนับโดยไม่คำนึงถึงสาเหตุที่สร้างไฟล์ชั่วคราวและคำนึงถึงการตั้งค่าlog_temp_files

โปรดทราบว่าค่าเหล่านี้ไม่ได้มีส่วนทำให้ขนาดของฐานข้อมูลของคุณ แต่พวกเขาระบุว่าการตั้งค่าของคุณwork_memอาจต่ำเกินไปดังนั้นการดำเนินการเรียงลำดับหลายครั้งจึงรั่วไหลไปยังดิสก์ (ซึ่งช้ามากเมื่อเทียบกับ RAM เพียงอย่างเดียว)

ที่เกี่ยวข้อง:

หากต้องการกระชับขนาดฐานข้อมูลของคุณจริง:

ในการวัดขนาด:

นอกเหนือ: WAL (Write Ahead Log)จะเทียบเท่าใน Postgres สำหรับบันทึกธุรกรรมใน SQL Server คำอธิบายที่ดีในคำตอบที่เกี่ยวข้องกับ SO:


10

ตาม:

http://www.postgresql.org/message-id/BLU0-SMTP179B92C5102247CD961A4B3CF2A0@phx.gbl

ตัวนับ temp (ไฟล์และพื้นที่ที่ใช้) แสดงจำนวนไฟล์ temp ทั้งหมดที่ใช้เนื่องจากอาจเป็นการสร้างคลัสเตอร์ มันไม่ได้สะท้อนพื้นที่ปัจจุบันที่ใช้โดยไฟล์ temp

ตัวอย่างเช่นระบบของฉันแสดงไฟล์ temp เกือบ 700GB ที่ใช้ แต่พื้นที่จริงที่ถ่ายโดยไฟล์ temp ใน /var/lib/pgsql/9.3/data/base/pgsql_tmp ปัจจุบันมีเพียง 53MB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.