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

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

3
วิธีการใช้ UPSERT ใน PostgreSQL
ฉันได้อ่านเกี่ยวกับUPSERTการใช้งานที่แตกต่างกันใน PostgreSQL แต่โซลูชันเหล่านี้ทั้งหมดค่อนข้างเก่าหรือค่อนข้างแปลกใหม่ (โดยใช้CTE ที่เขียนได้ ) และฉันก็ไม่ใช่ผู้เชี่ยวชาญ psql เลยที่จะรู้ได้ทันทีว่าโซลูชันเหล่านี้เก่าหรือไม่เพราะพวกเขาได้รับการแนะนำอย่างดีหรือพวกเขา (ดีเกือบทั้งหมดเป็น) เพียงตัวอย่างของเล่นที่ไม่เหมาะสมกับการใช้งานจริง อะไรคือวิธีที่ปลอดภัยที่สุดในการใช้ UPSERT ใน PostgreSQL

3
เพราะเหตุใดฐานข้อมูลของฉันยังคงกระจัดกระจายหลังจากฉันสร้างและทำดัชนีใหม่ทุกอย่างแล้ว
ฉันมีฐานข้อมูลที่ฉันพยายามจัดระเบียบตารางทั้งหมดในครั้งเดียวโดยใช้ T-SQL นี้: SELECT 'ALTER INDEX all ON ' + name + ' REORGANIZE;' + CHAR(10) + 'ALTER INDEX all ON ' + name + ' REBUILD;' FROM sys.tables จากนั้นคัดลอกและวางผลลัพธ์ไปยังหน้าต่างแบบสอบถามใหม่และเรียกใช้สิ่งนั้น ฉันไม่มีข้อผิดพลาด แต่ฉันยังมีการแยกส่วน ฉันพยายามเรียกใช้ทั้งสองคำสั่งแยกกันด้วยและยังมีการแยกส่วน หมายเหตุ:ฉันทราบว่าREORGANIZEไม่จำเป็นโดย Aaron และฉันรู้ว่าฉันสามารถใช้ไดนามิก sql เพื่อทำสิ่งนี้โดยอัตโนมัติ ฉันรันสิ่งนี้เพื่อพิจารณาว่าฉันยังมีการแยกส่วน: SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, NULL) WHERE …

4
วิธีที่ดีที่สุดในการจัดเก็บที่อยู่อีเมลใน PostgreSQL คืออะไร
ประเภทข้อมูลที่เหมาะสมในการจัดเก็บที่อยู่อีเมลใน PostgreSQL คืออะไร ฉันสามารถใช้varchar(หรือแม้กระทั่งtext) แต่ฉันสงสัยว่ามีประเภทข้อมูลเฉพาะสำหรับอีเมล

5
วิธีแสดงรายการมุมมองทั้งหมดใน SQL ใน PostgreSQL
ฉันจะแสดงรายการมุมมองทั้งหมดสำหรับฐานข้อมูลโดยใช้คำสั่ง SQL ใน PostgreSQL ได้อย่างไร ฉันต้องการบางสิ่งที่คล้ายกับเอาต์พุตของ\dvคำสั่งpsql แต่ควรเป็นเพียงแค่รายการของชื่อมุมมอง เช่น, SELECT ...; my_view_1 my_view_2 my_view_3 ฉันใช้ PostgreSQL v9.1.4 บน Ubuntu Linux

2
โมเดลฐานข้อมูลพร้อมผู้ใช้บทบาทและสิทธิ์
ฉันมีโมเดลฐานข้อมูลพร้อมโต๊ะผู้ใช้และตารางบทบาท ฉันต้องการควบคุมการเข้าถึง (สิทธิ์) ให้มากถึง 10 องค์ประกอบที่แตกต่างกัน การเข้าถึงสามารถได้รับทั้งบทบาทหรือผู้ใช้คนเดียว ด้านล่างนี้เป็นคำจำกัดความของตารางของผู้ใช้บทบาทและรายการ: CREATE TABLE users ( id serial NOT NULL PRIMARY KEY, username character varying UNIQUE, password character varying, first_name character varying, last_name character varying, ... ); CREATE TABLE roles ( id serial NOT NULL PRIMARY KEY, name character varying NOT NULL, description character …

1
ทำไมไฟล์. bacpac จึงเล็กเมื่อเทียบกับไฟล์. bak ของฐานข้อมูลเดียวกัน
ฉันได้รับการทำสำรองข้อมูลของฐานข้อมูลของฉัน SQL Server 2014 Express สำหรับการนำเข้าไปยังเซิร์ฟเวอร์อื่น ๆ และสังเกตเห็นความแตกต่างในขนาดไฟล์ระหว่างและ.bacpac.bak ทำไม.bacpacไฟล์ถึงเล็กมากเมื่อเปรียบเทียบกับ.bakไฟล์ของฐานข้อมูลเดียวกัน ขอบคุณสำหรับข้อมูลเชิงลึกใด ๆ !

6
ทำไมการเพิ่ม TOP 1 ถึงทำให้ประสิทธิภาพแย่ลงอย่างเห็นได้ชัด?
ฉันมีคำถามที่ค่อนข้างง่าย SELECT TOP 1 dc.DOCUMENT_ID, dc.COPIES, dc.REQUESTOR, dc.D_ID, cj.FILE_NUMBER FROM DOCUMENT_QUEUE dc JOIN CORRESPONDENCE_JOURNAL cj ON dc.DOCUMENT_ID = cj.DOCUMENT_ID WHERE dc.QUEUE_DATE <= GETDATE() AND dc.PRINT_LOCATION = 2 ORDER BY cj.FILE_NUMBER นั่นทำให้ฉันมีประสิทธิภาพที่น่ากลัว (อย่างที่ไม่เคยใส่ใจที่จะรอให้มันจบ) แผนแบบสอบถามมีลักษณะดังนี้: อย่างไรก็ตามถ้าฉันลบTOP 1แผนการที่มีลักษณะเช่นนี้ออกและทำงานใน 1-2 วินาที: แก้ไข PK & การทำดัชนีด้านล่าง ความจริงที่ว่าTOP 1แผนการสืบค้นที่เปลี่ยนแปลงนั้นไม่ได้ทำให้ฉันแปลกใจ แต่ฉันก็แปลกใจนิดหน่อยที่มันทำให้แย่ลงไปอีกมาก หมายเหตุ: ฉันได้อ่านผลลัพธ์จากโพสต์นี้และเข้าใจแนวคิดของRow Goalสิ่งอื่น ๆ แล้วสิ่งที่ฉันอยากรู้คือฉันจะเปลี่ยนการสืบค้นอย่างไรเพื่อที่จะใช้แผนการที่ดีกว่า ขณะนี้ฉันกำลังทิ้งข้อมูลลงในตารางชั่วคราวแล้วดึงแถวแรกออกมา …

3
ปริมาณการใช้“ หน่วยความจำเซิร์ฟเวอร์โดยรวม” ของ SQL Server หยุดนิ่งเป็นเดือนโดยมี 64GB + มากกว่านั้น
ฉันพบปัญหาแปลกที่ SQL Server 2016 Standard Edition 64- บิตดูเหมือนว่าได้ปิดตัวเองที่ครึ่งหนึ่งของหน่วยความจำทั้งหมดที่จัดสรรให้อย่างแม่นยำ (64GB 128GB) ผลลัพธ์ของ@@VERSIONคือ: Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 22 ธันวาคม 2017 11:25:00 ลิขสิทธิ์ (c) Microsoft Corporation Standard Edition (64 บิต) บน Windows Server 2012 R2 Datacenter 6.3 ( รุ่น 9600:) (Hypervisor) ผลลัพธ์ของsys.dm_os_process_memoryคือ: เมื่อฉันแบบสอบถามsys.dm_os_performance_countersผมเห็นว่าTarget Server Memory (KB)ที่131072000และเป็นเพียงภายใต้ครึ่งหนึ่งของที่ที่Total Server Memory …

2
วิธีเพิ่มประสิทธิภาพคิวรีที่ทำงานช้าลงบนลูปซ้อน (Inner Join)
TL; DR เนื่องจากคำถามนี้ยังคงได้รับการดูฉันจะสรุปได้ที่นี่เพื่อให้ผู้มาใหม่ไม่ต้องทนทุกข์กับประวัติศาสตร์: JOIN table t ON t.member = @value1 OR t.member = @value2 -- this is slow as hell JOIN table t ON t.member = COALESCE(@value1, @value2) -- this is blazing fast -- Note that here if @value1 has a value, @value2 is NULL, and vice versa ฉันรู้ว่านี่อาจไม่ใช่ปัญหาของทุกคน แต่การเน้นความไวของอนุประโยค …

5
ฉันสามารถเพิ่มข้อ จำกัด ที่ไม่ซ้ำใครเพื่อละเว้นการละเมิดที่มีอยู่ได้หรือไม่?
ฉันมีตารางซึ่งขณะนี้มีค่าซ้ำกันในคอลัมน์ ฉันไม่สามารถลบรายการซ้ำที่ผิดพลาดเหล่านี้ได้ แต่ฉันต้องการป้องกันไม่ให้เพิ่มค่าที่ไม่ซ้ำกันเพิ่มเติม ฉันสามารถสร้างสิ่งUNIQUEที่ไม่ตรวจสอบความสอดคล้องที่มีอยู่ได้หรือไม่ ฉันลองใช้NOCHECKแล้วแต่ไม่สำเร็จ ในกรณีนี้ฉันมีตารางที่ผูกข้อมูลสิทธิ์การใช้งานกับ "CompanyName" แก้ไข:การมีหลายแถวที่มี "CompanyName" เดียวกันนั้นเป็นข้อมูลที่ไม่ดี แต่เราไม่สามารถลบหรืออัปเดตข้อมูลซ้ำเหล่านั้นได้ในขณะนี้ วิธีหนึ่งคือการINSERTใช้ s ที่เก็บไว้ซึ่งจะล้มเหลวในการทำซ้ำ ... ถ้าเป็นไปได้ที่ SQL จะตรวจสอบความเป็นเอกลักษณ์ของตัวเองมันจะดีกว่า ข้อมูลนี้ถูกสอบถามโดยชื่อ บริษัท สำหรับรายการซ้ำที่มีอยู่สองสามรายการนี้จะหมายความว่ามีการส่งคืนและแสดงแถวจำนวนมาก ... แม้ว่าจะเป็นความผิด แต่ก็เป็นที่ยอมรับในกรณีการใช้งานของเรา เป้าหมายคือการป้องกันในอนาคต ดูเหมือนว่าฉันจากความคิดเห็นที่ฉันต้องทำตรรกะนี้ในขั้นตอนการจัดเก็บ

3
ความแตกต่างในแผนการดำเนินการบนเซิร์ฟเวอร์ UAT และ PROD
ฉันต้องการที่จะเข้าใจว่าทำไมมันถึงมีความแตกต่างอย่างมากในการดำเนินการกับเคียวรีเดียวกันบน UAT (ทำงานใน 3 วินาที) เทียบกับ PROD (ทำงานใน 23 วินาที) ทั้ง UAT และ PROD มีข้อมูลและดัชนีอย่างแน่นอน ค้นหา: set statistics io on; set statistics time on; SELECT CONF_NO, 'DE', 'Duplicate Email Address ''' + RTRIM(EMAIL_ADDRESS) + ''' in Maintenance', CONF_TARGET_NO FROM CONF_TARGET ct WHERE CONF_NO = 161 AND LEFT(INTERNET_USER_ID, 6) != 'ICONF-' …

2
การเพิ่ม work_mem และ shared_buffers บน Postgres 9.2 ทำให้การสืบค้นช้าลงอย่างมาก
ฉันมีอินสแตนซ์ PostgreSQL 9.2 ที่ทำงานบน RHEL 6.3, เครื่อง 8-core พร้อม RAM ขนาด 16GB เซิร์ฟเวอร์ทุ่มเทให้กับฐานข้อมูลนี้ เนื่องจาก postgresql.conf เริ่มต้นค่อนข้างอนุรักษ์นิยมเกี่ยวกับการตั้งค่าหน่วยความจำฉันคิดว่าอาจเป็นความคิดที่ดีที่จะอนุญาตให้ Postgres ใช้หน่วยความจำเพิ่มเติม เพื่อประหลาดใจของฉันคำแนะนำต่อไปนี้ในwiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Serverชะลอตัวลงอย่างมากในทางปฏิบัติทุกแบบสอบถามที่ฉันเรียกใช้ ฉันยังลองใช้ pgtune ซึ่งให้คำแนะนำต่อไปนี้พร้อมปรับพารามิเตอร์เพิ่มเติม แต่นั่นก็ไม่ได้เปลี่ยนแปลงอะไรเลย มันแสดงให้เห็น shared_buffers ขนาด 1/4 ของ RAM ซึ่งดูเหมือนจะสอดคล้องกับคำแนะนำที่อื่น (และโดยเฉพาะกับ PG wiki โดยเฉพาะ) default_statistics_target = 50 maintenance_work_mem = 960MB constraint_exclusion = on checkpoint_completion_target = 0.9 effective_cache_size = 11GB work_mem …

6
จะนำเข้าไฟล์. sql ใน MySQL ได้อย่างไร
ฉันกำลังพยายามนำเข้าไฟล์. sql โดยใช้ MySQL Workbench และฉันได้รับข้อผิดพลาดนี้: ERROR 1046 (3D000) at line 28: No database selected ฉันได้สร้างฐานข้อมูลเปล่าก่อนที่มีชื่อเดียวกันกับไฟล์. sql แต่ไม่ได้ผล ฉันได้ลองทำกับไคลเอนต์คำสั่ง mysql โดยใช้: mysqldump -u root database > file.sql แต่มันบอกว่ามีข้อผิดพลาดในไวยากรณ์ SQL ของฉัน นอกจากนี้ฉันไม่ทราบเส้นทางที่ฉันต้องตั้งค่า file.sql

2
การเปลี่ยนความกว้างของคอลัมน์
การเพิ่มความกว้างคอลัมน์ (nvarchar) จำเป็นต้องวางตารางหรือไม่ กล่าวอีกนัยหนึ่งความกว้างสามารถเปลี่ยนแปลงได้ในสภาพแวดล้อมการผลิตกับผู้ใช้ที่ใช้งานอยู่หรือไม่ ฉันคิดว่าถ้าขนาดเพิ่มขึ้น (เมื่อเทียบกับการลดลง) นี่จะไม่เป็นปัญหา
39 sql-server 

3
พื้นฐานการดำเนินการตามแผน - ความสับสนของการจับคู่แฮช
ฉันเริ่มเรียนรู้แผนการดำเนินการและสับสนเกี่ยวกับวิธีการทำงานของแฮชที่ตรงกันและทำไมจึงต้องใช้ในการเข้าร่วมง่ายๆ select Posts.Title, Users.DisplayName From Posts JOIN Users on Posts.OwnerUserId = Users.Id OPTION (MAXDOP 1) ตามที่ฉันเข้าใจแล้วผลลัพธ์ของการสแกนดัชนีสูงสุดจะกลายเป็นแฮชและแต่ละแถวในดัชนีสแกนคลัสเตอร์ด้านล่างจะค้นหา ฉันเข้าใจว่าตารางแฮชทำงานอย่างน้อยในระดับหนึ่ง แต่ฉันสับสนเกี่ยวกับค่าที่ได้รับการแฮชในตัวอย่างเช่นนี้ สิ่งที่จะทำให้ฉันรู้สึกว่าเป็นเขตข้อมูลทั่วไประหว่างพวกเขารหัสถูกแฮช - แต่ถ้าเป็นกรณีนี้ทำไมจำนวนแฮช?

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