ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

4
SQL“ ตารางที่ว่าง” ช้าลงหลังจากลบระเบียนทั้งหมด (12 ล้าน)?
ฉันมีอินสแตนซ์ SQL Server 2008 ที่มีคอลัมน์ประมาณ 150 คอลัมน์ ก่อนหน้านี้ฉันได้เติมข้อมูลตารางนี้ด้วยรายการประมาณ 12 ล้านรายการ แต่หลังจากนั้นจึงล้างตารางเพื่อเตรียมชุดข้อมูลใหม่ อย่างไรก็ตามคำสั่งที่เคยวิ่งทันทีบนโต๊ะว่างเช่น count(*)และselect top 1000ในSQL Management Studioตอนนี้พามหายุคให้ทำงาน SELECT COUNT(*) FROM TABLE_NAME ใช้เวลามากกว่า 11 นาทีเพื่อส่งคืน 0 และSELECT TOP 1000ใช้เวลาเกือบ 10 นาทีเพื่อส่งคืนตารางเปล่า ฉันยังสังเกตเห็นว่าพื้นที่ว่างบนฮาร์ดไดรฟ์ของฉันได้หายไปอย่างแท้จริง (ลดลงจากประมาณ 100G ถึง 20G) สิ่งเดียวที่เกิดขึ้นระหว่างคือแบบสอบถามเดียวที่ฉันวิ่ง: DELETE FROM TABLE_NAME เกิดอะไรขึ้นในโลกนี้!

4
ฉันต้องเรียกใช้ VACUUM FULL โดยไม่มีพื้นที่ว่างในดิสก์
ฉันมีหนึ่งตารางที่ใช้พื้นที่เกือบ 90% ของ hd พื้นที่บนเซิร์ฟเวอร์ของเรา ฉันตัดสินใจที่จะวางคอลัมน์ไม่กี่คอลัมน์เพื่อเพิ่มพื้นที่ว่าง แต่ฉันต้องคืนพื้นที่ไปยังระบบปฏิบัติการ อย่างไรก็ตามปัญหาคือฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นถ้าฉันเรียกใช้ VACUUM FULL และมีพื้นที่ว่างไม่เพียงพอที่จะทำสำเนาของตาราง ฉันเข้าใจว่าไม่ควรใช้สูญญากาศเต็มรูปแบบ แต่ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุดในสถานการณ์นี้ ความคิดใด ๆ ที่จะได้รับการชื่นชม ฉันใช้ PostgreSQL 9.0.6


4
วิธีการเปลี่ยนการเปรียบเทียบของ SQL Server
ฉันจะเปลี่ยนการเปรียบเทียบค่าเริ่มต้นของ SQL Server 2008 R2 Express สำหรับเซิร์ฟเวอร์ทั้งหมดและฐานข้อมูลเฉพาะได้อย่างไร มีวิธีการใช้อินเทอร์เฟซภาพของ SQL Server Management Studio หรือไม่? ในหน้าต่างคุณสมบัติเซิร์ฟเวอร์ (และในหน้าต่างคุณสมบัติฐานข้อมูลที่สอดคล้องกัน) คุณสมบัตินี้ไม่สามารถแก้ไขได้

2
วิธีใช้ COALESCE กับหลายแถวและไม่มีเครื่องหมายจุลภาคก่อนหน้า
ฉันกำลังพยายามทำสิ่งต่อไปนี้: California | Los Angeles, San Francisco, Sacramento Florida | Jacksonville, Miami น่าเสียดายที่ฉันได้รับ ", Los Angeles, San Francisco, Sacramento, Jacksonville, Miami" ฉันสามารถบรรลุผลลัพธ์ที่ต้องการโดยใช้ฟังก์ชั่น STUFF แต่สงสัยว่ามีวิธีที่สะอาดกว่าในการทำโดยใช้ COALESCE หรือไม่ STATE | CITY California | San Francisco California | Los Angeles California | Sacramento Florida | Miami Florida | Jacksonville DECLARE @col NVARCHAR(MAX); SELECT …
27 sql-server  t-sql 

3
การแก้ปัญหาการใช้งาน CPU สูงจากบริการ postgres และ postmaster
ฉันใช้เครื่องที่ใช้โอเพ่นซอร์ส (RHEL 6.2) ที่ใช้ซอฟต์แวร์ SIEM เมื่อฉันรันtopคำสั่งฉันเห็นpostgresและpostmasterทั้งคู่ด้วยการใช้งาน CPU 96% มีวิธีในการปักหมุดหรือดูว่าอะไรทำให้บริการเหล่านี้ซ้อนกัน?
27 postgresql 

3
ข้อ จำกัด กุญแจต่างประเทศของสมาชิกอาเรย์?
สมมติว่าฉันมีตารางที่มีบทบาทงาน: CREATE TABLE roles ( "role" character varying(80) NOT NULL, CONSTRAINT "role" PRIMARY KEY (role) ); สมมติว่าฉันมีตารางผู้ใช้และแต่ละแถว (ผู้ใช้ที่ระบุ) สามารถมีบทบาทงานได้ตามอำเภอใจ: CREATE TABLE users ( username character varying(12) NOT NULL, roles character varying(80)[] NOT NULL, CONSTRAINT username PRIMARY KEY (username) ); ฉันควรแน่ใจว่าสมาชิกแต่ละคนusers.roles[]มีอยู่ใน role.role สำหรับฉันดูเหมือนว่าสิ่งที่ฉันต้องการคือข้อ จำกัด ที่สำคัญต่างประเทศของสมาชิกแต่ละคนของusers.roles[]สิ่งนั้นหากอ้างอิงถึง role.role ดูเหมือนจะเป็นไปไม่ได้เมื่อใช้ postgres ฉันกำลังดูวิธีนี้ผิดหรือเปล่า? อะไรคือวิธีที่ "ถูกต้อง" …

1
สถิติเก็บอยู่ใน SQL Server อยู่ที่ไหน
สถิติที่ใช้โดยเครื่องมือเพิ่มประสิทธิภาพข้อความค้นหาเก็บอยู่ในไฟล์ฐานข้อมูล SQL Server และบัฟเฟอร์พูลหรือไม่ โดยเฉพาะอย่างยิ่งมีวิธีที่จะคิดออกหน้าใช้สถิติโดยใช้ DMVs และ / หรือ DBCC หรือไม่ ฉันเป็นเจ้าของทั้ง SQL Server 2008 Internals และ SQL Server Internals และการแก้ไขปัญหาหนังสือและไม่มีใครพูดถึงโครงสร้างทางกายภาพของสถิติ หากพวกเขาฉันไม่สามารถค้นหาข้อมูลนี้

2
ปัญหาอะไรที่บ่งบอกถึงความกระตือรือร้น
กำลังทำงานบน SQL Server 2008 R2 ฉันกำลังพยายามเพิ่มประสิทธิภาพของคำสั่ง UPDATE ฉันสังเกตเห็นการทำงานของ Eager Spool ใน showplan โผล่ขึ้นมา ความเข้าใจของฉันเกี่ยวกับการทำสปูลนั้นค่อนข้างธรรมดา - พวกมันสร้างที่เก็บข้อมูลชั่วคราวสำหรับตารางในระหว่างการอัพเดท ฉันยังรู้ว่าในขณะที่พวกเขากำลังป้องกันเวลาการดำเนินการที่เลวร้ายกว่ามาก, spools ความกระตือรือร้นมักจะบ่งบอกถึงปัญหาพื้นฐานของโครงสร้างตารางและ / หรือคำสั่งแบบสอบถาม คำถามของฉันค่อนข้างง่าย: เมื่อคุณเห็น Eager Spool ในแผนคิวรีของคุณคุณพบปัญหาอะไรก่อน ฉันจะวิเคราะห์ทุกส่วนของระบบของเราเพื่อเพิ่มประสิทธิภาพ - ฉันแค่มองหาคำแนะนำว่าควรเริ่มจากตรงไหน

1
การเพิ่มประสิทธิภาพดัชนีพร้อมวันที่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีตารางวัตถุขนาดใหญ่ (แถว 15M +) ใน PostgreSQL 9.0.8 ซึ่งฉันต้องการค้นหาเขตข้อมูลที่ล้าสมัย ฉันต้องการแบ่งคำถามเป็นล้าน ๆ เพื่อความยืดหยุ่นในการปรับขนาดและการทำงานพร้อมกันและฉันต้องการดึงข้อมูลทั้งหมดด้วยฟิลด์ updated_at ด้วยวันที่ไม่กี่วันที่ผ่านมา ฉันได้ลองใช้ดัชนีจำนวนมากและข้อความค้นหาหลายล้านรายการและดูเหมือนว่าฉันจะไม่สามารถทำงานได้ภายใน 100 วินาทีด้วยฮาร์ดแวร์ Ronin ของ Heroku ฉันกำลังมองหาคำแนะนำที่ฉันไม่ได้พยายามทำให้มีประสิทธิภาพมากที่สุด ลอง # 1 EXPLAIN ANALYZE SELECT count(*) FROM objects WHERE (date(updated_at)) < (date(now())-7) AND id >= 5000001 AND id …

2
แหล่งที่มาหลายไฟล์พร้อมกันด้วย psql
ฉันต้องการรันสคริปต์ sql หลาย ๆ ตัวตามลำดับโดยpsqlเป็นธุรกรรมเดียวเพื่อตั้งค่าสคีมาฐานข้อมูลของฉัน วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ในอดีตฉันรู้ว่าฉันมีสคริปต์หลักที่ฉันpsqlพบซึ่งรวมถึงไฟล์อื่น ๆ ด้วย แต่ฉันไม่จำไวยากรณ์ของสคริปต์นี้
27 postgresql  psql 

5
วิธีที่ดีที่สุดในการรับคำสั่งซื้อแบบสุ่มคืออะไร
ฉันมีแบบสอบถามที่ฉันต้องการให้บันทึกผลลัพธ์เป็นแบบสุ่ม มันใช้ดัชนีคลัสเตอร์ดังนั้นถ้าฉันไม่รวมorder byมันก็จะกลับระเบียนในลำดับของดัชนีที่ ฉันจะมั่นใจได้อย่างไรว่าการสั่งซื้อแบบสุ่มแถว ฉันเข้าใจว่ามันอาจจะไม่สุ่ม "จริง" หลอกหลอกก็ดีพอสำหรับความต้องการของฉัน
27 sql-server 

1
บทบาท PostgreSQL กับผู้ใช้ให้สิทธิ์
ขณะนี้ฉันเรียนรู้ความแตกต่างระหว่าง PostgreSQL และ MySQL เนื่องจากฉันมีโครงการใหม่และฉันตั้งใจจะย้ายซอฟต์แวร์ที่มีอยู่จาก MySQL ไปยัง PostgreSQL ฉันเริ่มสร้างตาราง HTML ด้วยการเปรียบเทียบคำสั่ง (สำหรับผู้ใช้ / ฐานข้อมูล / พรอมต์คำสั่ง ฯลฯ ) ระหว่างสองรายการ หลังจากอ่านคำตอบที่นี่ฉันสังเกตเห็นว่าroleดูเหมือนจะใช้เป็นกลุ่ม กับ MySQL ฉันมีสองผู้ใช้ของประชาชนโดยทั่วไป ( DELETE, INSERT, SELECTและUPDATEสิทธิ์) และผู้ดูแลระบบที่มีสิทธิ์เพิ่มเติมคู่ ดังนั้นโดยทั่วไปในพรอมต์คำสั่ง Windows 7 (การพัฒนาท้องถิ่นเท่านั้น) ... บทบาทผู้ใช้กลุ่มหรือคำที่ใช้อย่างหลวม ๆ กับ PostgreSQL หรือไม่? ฉันจะให้สิทธิ์เฉพาะกับผู้ใช้เฉพาะสำหรับทุกตารางในฐานข้อมูลได้อย่างไร ฉันจะให้สิทธิ์ทั้งหมดแก่ผู้ใช้เฉพาะสำหรับตารางทั้งหมดในฐานข้อมูลได้อย่างไร ถ้าเปรียบเทียบบทบาทจะเปรียบเทียบกับผู้ใช้เมื่อใช้GRANTหรือREVOKEเพื่อการอนุญาตของผู้ใช้ได้อย่างไร
27 postgresql  users 

4
มีอะไรดีไปกว่าการเปลี่ยนแปลงตาราง: DELETE และ INSERT ทุกครั้งหรือมีการอัพเดทอยู่
ฉันกำลังทำโปรเจ็กต์ที่ต้องเปลี่ยนระเบียนประมาณ 36K ในหนึ่งตารางทุกวัน ฉันสงสัยว่าอะไรจะทำงานได้ดีกว่า: ลบแถวและแทรกแถวใหม่หรือ อัปเดตแถวที่มีอยู่แล้ว สำหรับฉันมันง่ายกว่าที่จะลบแถวทั้งหมดและแทรกแถวใหม่ แต่ถ้านี่จะแยกส่วนของตารางและดัชนีและผลกระทบต่อประสิทธิภาพการทำงานแล้วฉันอยากจะอัปเดตเมื่อเป็นไปได้และลบ / แทรกเมื่อจำเป็นเท่านั้น นี่จะเป็นการให้บริการทุกคืนและฉันไม่ต้องการปรับปรุงความเร็วของกระบวนการเอง ฉันกังวลมากขึ้นเกี่ยวกับประสิทธิภาพของการสืบค้นเทียบกับตารางนี้โดยทั่วไปซึ่งฉันมี 89 ล้านบันทึกแล้วและกระบวนการคืนนี้จะส่งผลกระทบต่อมันอย่างไร ฉันควรลบ / แทรกบันทึกหรือฉันควรปรับปรุงรายการที่มีอยู่ (หากเป็นไปได้) สำหรับกระบวนการทุกคืน?

1
ทำไม PostgreSQL ของฉันเรียงตามตัวพิมพ์เล็ก - ใหญ่
ฉันมี Postgres 9.4.4 ทำงานบน Debian และฉันได้รับORDER BYพฤติกรรมดังต่อไปนี้: veure_test=# show LC_COLLATE; lc_collate ------------- en_US.UTF-8 (1 row) veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1; regexp_split_to_table ----------------------- a A b c Capacitor CD d D (8 rows) และuname -a: Linux ---- 3.2.0-4-amd64 #1 SMP Debian …

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