คำถามติดแท็ก disk-space

สำหรับคำถามเกี่ยวกับพื้นที่จัดเก็บที่ใช้โดยฐานข้อมูลหรือวัตถุฐานข้อมูล

4
วัดขนาดของแถวตาราง PostgreSQL
ฉันมีตาราง PostgreSQL select *ช้ามากในขณะที่select idดีและรวดเร็ว ฉันคิดว่าอาจเป็นไปได้ว่าขนาดของแถวนั้นใหญ่มากและใช้เวลาในการขนส่งสักครู่หรืออาจเป็นปัจจัยอื่น ฉันต้องการฟิลด์ทั้งหมด (หรือเกือบทั้งหมด) ดังนั้นการเลือกเฉพาะเซ็ตย่อยไม่ใช่การแก้ไขด่วน การเลือกเขตข้อมูลที่ฉันต้องการยังคงช้า นี่คือคีคีโต๊ะของฉันลบชื่อ: integer | not null default nextval('core_page_id_seq'::regclass) character varying(255) | not null character varying(64) | not null text | default '{}'::text character varying(255) | integer | not null default 0 text | default '{}'::text text | timestamp with time zone …

5
เมื่อใดที่ตกลงเพื่อลดขนาดฐานข้อมูล
ฉันรู้ว่าหดตัวเป็นปีศาจ: มันกลับคำสั่งหน้าและรับผิดชอบต่อโรคมะเร็งผิวหนัง, การกระจายตัวของข้อมูลและภาวะโลกร้อน รายการไปที่ ... ที่กล่าวว่าฉันมีฐานข้อมูล 100 GB และฉันลบข้อมูล 50 GB - ไม่ได้อยู่ในตารางเดียว แต่ pruning ทั่วไปของข้อมูลเก่าในระดับกว้างฐานข้อมูลครอบคลุม 90% ของ ตาราง - นี่เป็นกรณีการใช้งานที่เหมาะสมสำหรับลดขนาดฐานข้อมูลหรือไม่? หากไม่เป็นเช่นนั้นขั้นตอนที่เหมาะสมในการทำความสะอาดบ้านหลังจากลบข้อมูลที่มีเปอร์เซ็นต์สูงจากฐานข้อมูลคืออะไร ฉันสามารถนึกถึงสอง: สร้างดัชนีและอัปเดตสถิติใหม่ มีอะไรอีกบ้าง?

6
แบบสอบถามเพื่อรายงานการจัดสรรพื้นที่ดิสก์และพื้นที่ใช้งาน
เรากำลังใช้ฐานข้อมูลทั้งหมด 6 รายการสำหรับแอปพลิเคชันและเราสามารถแบ่งปันพื้นที่ 4TB ในฐานข้อมูลที่เติบโตอัตโนมัติทั้ง 6 รายการ (ผ่านที่เก็บข้อมูล SAN) ฉันต้องการเขียนแบบสอบถาม (รายงาน) สำหรับฐานข้อมูลเดียวที่ระบุแอตทริบิวต์ "พื้นที่ที่จัดสรรในปัจจุบัน" และ "พื้นที่ว่างที่มีอยู่" ภายใต้ตัวเลือกงาน> ลดขนาด> ฐานข้อมูลใน Studio จัดการเซิร์ฟเวอร์ SQL จากนั้นฉันต้องการแปลงตัวเลขเหล่านี้เป็น TB และรวมแต่ละฐานข้อมูลเพื่อให้ได้ประมาณคร่าวๆว่ามีพื้นที่เหลืออยู่เท่าใด สามารถเข้าถึงฟิลด์เหล่านี้ผ่านการสืบค้น T-SQL ได้หรือไม่? ถ้าเป็นเช่นนั้นแบบสอบถามจะมีลักษณะอย่างไร

1
วิธีการเรียกคืนพื้นที่ดิสก์บน PostgreSQL
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 5 ปีที่ผ่านมา ฉันมีการติดตั้งฐานข้อมูลท้องถิ่น 9.1 กับตารางน้อยซึ่งมี cca บันทึก 300 mio และฐานข้อมูลเพิ่มขึ้นเป็นประมาณ 20 GB หลังจากนั้นฉันออกdelete fromคำสั่งให้ลบระเบียนทั้งหมดจากมัน (ฉันควรจะใช้truncateแต่ฉันก็ไม่รู้) ดังนั้นฉันจึงสูญญากาศเต็มในฐานข้อมูลของฉันเพื่อเรียกคืนพื้นที่ดิสก์ แต่ก็ไม่ได้ช่วย ปัญหาของฉันดูเหมือนกับปัญหานี้แต่ไม่มีวิธีแก้ไข ฉันได้ตรวจสอบเธรดและเอกสารนี้แล้วใน"การกู้คืนพื้นที่ว่างในดิสก์"แต่ยังหาวิธีแก้ปัญหาไม่ได้ ฉันใช้รหัสนี้เพื่อรับขนาดของตารางทั้งหมด SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = …

2
ฉันจะลดขนาดไฟล์ innodb ibdata1 โดยไม่ต้องทิ้งฐานข้อมูลทั้งหมดได้อย่างไร
InnoDB เก็บตารางทั้งหมดไว้ในไฟล์ibdata1เดียว หลังจากวางตารางขนาดใหญ่ไฟล์จะรักษาขนาดของมันไม่ว่าโต๊ะจะใหญ่แค่ไหน ฉันจะลดขนาดไฟล์นั้นโดยไม่ต้องถ่ายโอนข้อมูลและนำเข้าฐานข้อมูลทั้งหมดอีกครั้ง (ซึ่งมีทั้งหมดหลายร้อย GB) ฉันคิดว่าเหตุผลก็เพราะคุณยังสามารถย้อนกลับไปลดลง ในกรณีของฉันฉันไม่จำเป็นต้อง

1
VACUUM ส่งคืนพื้นที่ดิสก์ไปยังระบบปฏิบัติการ
VACUUMมักจะไม่คืนพื้นที่ว่างในดิสก์ไปยังระบบปฏิบัติการยกเว้นในบางกรณีพิเศษ จากเอกสาร: รูปแบบมาตรฐานของการVACUUMลบเวอร์ชันของแถวที่ตายแล้วในตารางและดัชนีและทำเครื่องหมายพื้นที่ที่มีอยู่สำหรับการใช้ซ้ำในอนาคต อย่างไรก็ตามมันจะไม่คืนพื้นที่ไปยังระบบปฏิบัติการยกเว้นในกรณีพิเศษที่หนึ่งหรือหลายหน้าท้ายตารางกลายเป็นอิสระทั้งหมดและสามารถล็อคตารางแบบเอกสิทธิ์ได้อย่างง่ายดาย ในทางตรงกันข้ามVACUUM FULLบีบอัดตารางอย่างแข็งขันด้วยการเขียนไฟล์ตารางเวอร์ชันใหม่ที่สมบูรณ์โดยไม่มีพื้นที่ว่าง สิ่งนี้จะลดขนาดของตาราง แต่จะใช้เวลานาน นอกจากนี้ยังต้องการพื้นที่ดิสก์เพิ่มเติมสำหรับสำเนาใหม่ของตารางจนกว่าการดำเนินการจะเสร็จสมบูรณ์ คำถามคือจะทำอย่างไรเมื่อฐานข้อมูลนี้one or more pages at the end of a table become entirely freeสำเร็จ? สิ่งนี้สามารถทำได้ผ่านVACUUM FULLแต่ฉันมีพื้นที่ไม่เพียงพอที่จะใช้มัน มีความเป็นไปได้อื่นอีกไหม?

3
เหตุใดพื้นที่ข้อมูลของตารางจึงอาจมีขนาดเท่ากับข้อมูลดิบถึง 4x
ฉันมีตารางที่มีแถว 490 M และพื้นที่ตาราง 55 GB ดังนั้นประมาณ 167 ไบต์ต่อแถว ตารางมีสามคอลัมน์: กVARCHAR(100)เป็นและDATETIME2(0) SMALLINTความยาวเฉลี่ยของข้อความในVARCHARฟิลด์คือประมาณ 21.5 ดังนั้นข้อมูลดิบควรอยู่ที่ประมาณ 32 ไบต์ต่อแถว: 22 + 2 สำหรับVARCHAR, 6 สำหรับDATETIME2, และ 2 สำหรับจำนวนเต็ม 16 บิต โปรดทราบว่าพื้นที่ด้านบนเป็นข้อมูลเท่านั้นไม่ใช่ดัชนี ฉันใช้ค่ารายงานภายใต้คุณสมบัติ | จัดเก็บข้อมูล | ทั่วไป | พื้นที่ข้อมูล แน่นอนว่าต้องมีค่าใช้จ่ายอยู่บ้างแต่ดูเหมือนว่า 135 ไบต์ต่อแถวดูเหมือนจะเยอะมากโดยเฉพาะกับโต๊ะตัวใหญ่ เหตุใดจึงเป็นเช่นนี้ มีคนอื่นเห็นตัวคูณที่เหมือนกันหรือไม่ ปัจจัยใดที่สามารถส่งผลต่อปริมาณพื้นที่เพิ่มเติมที่ต้องการ สำหรับการเปรียบเทียบฉันพยายามสร้างตารางที่มีสองINTฟิลด์และ 1 M แถว พื้นที่ข้อมูลที่ต้องการคือ 16.4 MB: 17 ไบต์ต่อแถวเมื่อเปรียบเทียบกับข้อมูลดิบ …


1
จะขยายปริมาณออกในกล่อง SQL Server ได้อย่างไร
นี่คือคำถามสำหรับ sys เลือกที่นั่น (หรือผู้ที่เคยผ่านประสบการณ์นี้มาก่อน) บริษัท ของฉันต้องการจัดสรรพื้นที่ดิสก์เพิ่มเติมในกล่อง SQL Server ที่มีอยู่ในการผลิต เรากำลังสงสัยว่าการขยายไดรฟ์ข้อมูล ("ขยายระดับเสียง ... " ในการจัดการดิสก์) สามารถทำได้ออนไลน์หรือไม่หรือบริการ SQL Server นั้นจำเป็นต้องปิดตัวลงหรือไม่ เหตุผลใดที่บริการเซิร์ฟเวอร์ SQL ควรหยุดทำเช่นนี้หรือไม่ก็เป็นเพียงการดำเนินการนี้ในระหว่างวัน? ในกรณีที่รายละเอียดของระบบมีความเกี่ยวข้อง นี่คือกล่องจริง (ไม่มีการจำลองเสมือน) ที่ใช้ Windows 2012 R2 และ SQL Server 2008 R2 ขอบคุณ!

2
ผลกระทบใดที่จะลดขนาดของคอลัมน์ varchar ที่มีต่อไฟล์ฐานข้อมูล
เรามีตารางจำนวนหนึ่งในฐานข้อมูลของเราที่มีVARCHAR(MAX)คอลัมน์ที่VARCHAR(500)(หรือบางสิ่งที่เล็กกว่ามาก) จะพอเพียง โดยธรรมชาติฉันต้องการทำความสะอาดสิ่งเหล่านี้และทำให้ขนาดลงไปถึงระดับที่สมเหตุสมผลยิ่งขึ้น 'วิธีการ' ที่จะทำสิ่งนี้ฉันเข้าใจ: คำถามของฉันคือสิ่งที่จะแก้ไขคอลัมน์เหล่านี้ทำในหน้าและที่มีอยู่ในดิสก์? (มีข้อมูลมากมายเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณขยายคอลัมน์ แต่มีปัญหาในการค้นหาข้อมูลเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณย่อขนาด) ตารางบางตัวมีจำนวนแถวน้อยมากดังนั้นฉันจึงไม่กังวลเกี่ยวกับค่าใช้จ่ายในการเปลี่ยนแปลง แต่บางตารางมีขนาดค่อนข้างใหญ่และฉันกังวลว่าอาจมีการจัดระเบียบใหม่และทำให้การบล็อก / การหยุดทำงานเป็นจำนวนมาก ในทางปฏิบัติฉันต้องการวิธีประมาณหน้าต่างการบำรุงรักษา โดยทั่วไปฉันต้องการทำความเข้าใจให้ดีขึ้นว่าเอ็นจิ้นฐานข้อมูลทำงานอย่างไรในกรณีนี้ ขอบคุณล่วงหน้า! แก้ไข: ฉันมีตาราง 20 ตารางที่ฉันดู แต่มีเพียงครึ่งหนึ่งเท่านั้นที่มีจำนวนแถวมากกว่า 1,000 ใหญ่ที่สุดมีเกือบล้านแถว ผู้กระทำความผิดที่เลวร้ายที่สุดคือตารางที่มี 350,000 แถวและสี่VARCHAR(MAX)คอลัมน์ที่สามารถหดได้ถึงVARCHAR(500)ระดับ

1
Postgres: ตรวจสอบพื้นที่ดิสก์ที่ถ่ายโดยมุมมอง materialized?
ฉันรู้วิธีตรวจสอบขนาดของดัชนีและตารางใน Postgres (ฉันใช้เวอร์ชัน 9.4): SELECT relname AS objectname, relkind AS objecttype, reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size FROM pg_class WHERE relpages >= 8 ORDER BY relpages DESC; แต่สิ่งนี้จะไม่แสดงมุมมองที่ปรากฏ ฉันจะตรวจสอบจำนวนเนื้อที่ดิสก์ที่ใช้ไปได้อย่างไร

2
วิธีเพิ่มพื้นที่ว่างในดิสก์ บันทึก / ไดเรกทอรีใดบ้างที่ควรทำความสะอาด
ฉันต้องการเพิ่มพื้นที่ว่างในเครื่อง Linux ของฉัน ฉันเจาะลึกการใช้พื้นที่และพบว่าไดเรกทอรีต่อไปนี้มีขนาดใหญ่ /u01/app/11.2.0/grid/cv/log /u01/app/11.2.0/grid/log/diag/tnslsnr/r1n1/listener_scan2/alert (Contains xml files) /u01/app/11.2.0/grid/rdbms/audit(Contains .aud files) /home/oracle/oradiag_oracle/diag/clients/user_oracle/host_XXXXXXXXXX/alert(Contains xml files) /u01/app/oracle/diag/rdbms/crimesys/crimesys1/alert (Contains xml files) ฉันสามารถลบเนื้อหาจากไดเรกทอรีเหล่านี้ได้หรือไม่ หมายเหตุ: ฉันหมายถึงเนื้อหาไม่ใช่ไดเรกทอรี

2
วิธีการกู้คืนตาราง InnoDB ซึ่งไฟล์ถูกย้ายไปมา
ดังนั้นฉันมีเซิร์ฟเวอร์ทดสอบ db ที่ติดตั้งในกระแสการจำลอง โดยชื่อการเพิ่มประสิทธิภาพผ่านมาซึ่งเต็มพื้นที่อย่างรวดเร็วบนทาสข้อมูล Mysql ตามหน้าที่กำลังรอพื้นที่เพิ่มขึ้น datadir นี้เป็นระบบไฟล์ที่ใช้เป็น datadir ของ mysql เท่านั้นดังนั้นจึงไม่มีสิ่งอื่นใดที่จะทำให้ว่าง ฉันมีตารางการทดสอบขนาด 4 กิ๊กที่ไม่ได้เป็นส่วนหนึ่งของกระแสข้อมูลการจำลองดังนั้นฉันจึงคิดว่าฉันลองทำบางสิ่งเพื่อดูว่ามันใช้งานได้หรือไม่และการเป็นสภาพแวดล้อมการทดสอบ นี่คือขั้นตอนที่ฉันทำ ล้างตารางที่ฉันกำลังจะย้าย วางล็อกการอ่านไว้ (แม้ว่าจะไม่มีอะไรถูกเขียนลงไปและไม่ได้อยู่ในสตรีมการจำลองแบบ) คัดลอก. frm และ. ibd ไปยังระบบไฟล์ที่มีห้องว่าง ปลดล็อกตาราง ตัดทอนตารางนั้น - ทำให้มีพื้นที่ว่างเพียงพอสำหรับการปรับให้เสร็จสมบูรณ์เมื่อการเรพลิเคทเริ่มต้นการสับอีกครั้ง หยุดทาส / ปิด mysql คัดลอกไฟล์จาก tmp กลับไปยัง data dir รีสตาร์ท mysql ไม่มีสิ่งใดปรากฏในบันทึก .err สิ่งต่าง ๆ ดูดี ฉันเชื่อมต่อและใช้ mydb; และดูตารางที่ฉันเล่นด้วยในตารางแสดง แต่ถ้าฉันลอง select * …

2
การใช้พื้นที่บน sys.allocation_units และ sp_spaceused
มันเป็นความจริงที่รู้จักกันว่า DMVs ไม่ได้เก็บข้อมูลที่ถูกต้องเกี่ยวกับจำนวนหน้าและจำนวนแถว อย่างไรก็ตามเมื่อคุณอัปเดตสถิติฉันไม่สามารถเห็นได้ว่าทำไมพวกเขาถึงไม่ทำ ฉันกำลังทำงานกับเครื่องมือตรวจสอบ, ต้องการทราบขนาดดิสก์ของแต่ละดัชนีและข้อมูล ฯลฯ ในที่สุดฉันต้องการค้นหาปัจจัยเติมที่เหมาะสมและสิ่งอื่น ๆ เป็นต้น พื้นที่ที่ใช้โดยฟังก์ชั่นของฉันและ sp_spaceused เก่าแตกต่างกันเล็กน้อยในการใช้พื้นที่ แต่ไม่ได้อยู่ในการบันทึก คุณเห็นหรือไม่ว่ามีอะไรขาดหายไปในการเลือกของฉัน นี่คือ sp_spaceused (จากนั้นฉันแปลงตัวเลขเป็น MB): sp_spaceused 'tblBOrderRelationship' go select 318008/1024.00 AS reserved, 140208/1024.00 AS data, 177048/1024.00 AS index_size, 752/1024.00 AS unused แต่เมื่อฉันเลือกตัวเลือกโค้ดด้านล่าง \ ภาพด้านล่างฉันได้รับตัวเลขที่แตกต่างกันเล็กน้อย SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT schema_name(t.schema_id) as SchemaName, t.NAME AS …

2
การเพิ่มพื้นที่ว่างในดิสก์หลังจากฐานข้อมูลตก
ฉันกำลังทำงานกับระบบ dev และฉันได้รับการกู้คืนไปยังฐานข้อมูลพูดว่า "foo" ซึ่งฉันใช้เพื่อจุดประสงค์ด้านการพัฒนา ขณะที่ฉันกำลังทำงานผ่าน kinks ฉันเพิ่งเรียกใช้ DROP DATABASE foo อย่างไรก็ตามฉันรู้ได้อย่างรวดเร็วว่าฉันกินพื้นที่ทั้งหมดในดิสก์ของฉัน อึ. VACUUM FULL จากฐานข้อมูลแบบลอจิคัลอื่นหรือไม่เพิ่มพื้นที่ว่างจากฐานข้อมูลที่ฉันทิ้งไว้ก่อนหน้านี้ (foo) ฉันลองสิ่งนี้จากฐานข้อมูลเชิงตรรกะที่แตกต่างกันและมีการเรียกคืนพื้นที่ว่าง แต่ฉันไม่คิดว่ามันเพียงพอที่จะอธิบายการเรียกฐานข้อมูล CREATE DATABASE / DROP DATABASE ทั้งหมดที่ฉันทำ มันอาจมีเพียง VACUUM'ed ฐานข้อมูลเชิงตรรกะที่ฉันวิ่งมา จะต้องมีวิธีในการเรียกคืนพื้นที่นั้นโดยไม่ต้องดำเนินการฐานข้อมูลทั้งหมดหรือไม่ แก้ไข ดังนั้นผมจึง reinitialized ฐานข้อมูลจากการสำรองข้อมูลประมาณต่อไปนี้ขั้นตอนเหล่านี้ หลังจากการคืนค่าฉันได้เรียกคืนพื้นที่ว่างบนดิสก์เป็นตัน! วิธีนี้ใช้ได้ผลในตอนนี้ แต่ความช่วยเหลือใด ๆ เกี่ยวกับวิธีล้างฐานข้อมูลที่ถูกทิ้งจะยังคงมีประโยชน์ แก้ไข 2 ดังนั้นฉันจึงพยายามรวบรวมข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ ... นี่คือสิ่งที่ฉันคิดขึ้นมาเป็นตัวอย่าง: Initial partition size: Size Used Avail Use% …

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