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

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

5
ความแตกต่างระหว่างมุมมองอินไลน์และด้วยคำสั่งย่อย?
มุมมองอินไลน์ช่วยให้คุณสามารถเลือกจากแบบสอบถามย่อยราวกับว่ามันเป็นตารางที่แตกต่างกัน: SELECT * FROM /* Selecting from a query instead of table */ ( SELECT c1 FROM t1 WHERE c1 > 0 ) a WHERE a.c1 < 50; ฉันเคยเห็นสิ่งนี้อ้างถึงโดยใช้คำต่าง ๆ : มุมมองอินไลน์, พร้อมด้วยข้อ, CTE และตารางที่ได้รับ สำหรับฉันดูเหมือนว่าพวกเขาเป็นไวยากรณ์เฉพาะของผู้ขายที่แตกต่างกันสำหรับสิ่งเดียวกัน นี่เป็นข้อสันนิษฐานที่ผิดหรือเปล่า? มีความแตกต่างทางเทคนิค / ประสิทธิภาพระหว่างสิ่งเหล่านี้หรือไม่?

4
ฉันจะเพิ่มการอ่านหลังจากที่ได้ทำรายการระดับการยุติการทำรายการแล้วหรือไม่?
ภายในโพรซีเดอร์ที่เก็บฉันมีดังต่อไปนี้: (sql server 2008) SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRANSACTION getStuff BEGIN TRY /* some selects, updates, etc, etc. */ .... COMMIT TRANSACTION getStuff END TRY BEGIN CATCH ... END CATCH เนื่องจากนี่คือธุรกรรมตามความคิดของฉันคือการเชื่อมต่อฐานข้อมูลส่วนที่เหลือจะไม่ได้รับผลกระทบจาก SERIALIZABLE ฉันต้องตั้งระดับการแยกโดยปริยายเพื่ออ่านความมุ่งมั่นหลังจากที่ส่งมอบหรือไม่? สิ่งนี้จะส่งผลกระทบต่อการเชื่อมต่ออื่น ๆ ระหว่างแอพพลิเคชันเซิร์ฟเวอร์และเซิร์ฟเวอร์ฐานข้อมูลของฉันหรือไม่

1
ฉันควรคาดหวังอะไรจากข้อ จำกัด ขนาดใหญ่ของเซิร์ฟเวอร์ SQL ที่เชื่อมโยง
ผลิตภัณฑ์ของเราใช้ Microsoft SQL Server ขณะนี้เรากำลังใช้ฐานข้อมูลสามฐานและปรับใช้กับฐานข้อมูล SQL Server เดียวเสมอ ฐานข้อมูลที่สามคือ OLTP, OLAP และการตรวจสอบ ฐานข้อมูล OLAP มีข้อมูลขาเข้าขนาดใหญ่บน EOD จากทั้ง OLTP และการตรวจสอบโดยใช้การสืบค้นข้ามฐานข้อมูล คำถาม หากเราต้องปรับใช้ฐานข้อมูลทั้งสามนี้ไปยังอินสแตนซ์ Standard Edition สามแยกภายในเซิร์ฟเวอร์จริงและผูกเข้าด้วยกันโดยใช้คุณสมบัติเซิร์ฟเวอร์ที่เชื่อมโยงของ SQL Server: รหัสสมัครจะโปร่งใสแค่ไหน? ฉันควรคาดหวังการเปลี่ยนแปลงมากแค่ไหน? ข้อมูลขาเข้าของ OLAP มีจำนวนแถว 50k-100k, น้ำหนักบรรทุก 200-500MB ต่อ EOD ฉันควรคาดหวังว่าจะมีประสิทธิภาพลดลงเท่าใด สิ่งที่ฉันควรคาดหวังมาก ๆ พื้นหลัง ขณะนี้เรากำลังทอยลูกค้ารายแรกที่มีผู้ใช้มากกว่า 500 คนพร้อมกัน เรากำลังร่างข้อกำหนดเซิร์ฟเวอร์ซึ่งรวมถึง 64 คอร์และ RAM 256GB สำหรับ SQL …

4
ปัญหาในการรับรหัสไปรษณีย์ในรัศมีผ่าน MySQL
ฉันมีตารางรหัสไปรษณีย์ซึ่งมี lat lat ตรงกลาง lng สำหรับรหัสไปรษณีย์แต่ละอัน ฉันใช้มันเพื่อรับรายการรหัสไปรษณีย์ภายในรัศมีไมล์ที่กำหนดจากจุดใด ๆ มันเกิดขึ้นกับฉันว่าเพียงเพราะจุดศูนย์กลางของซิปไม่ได้อยู่ในรัศมีที่กำหนดไม่ได้หมายความว่าซิปนั้นไม่ได้อยู่ในรัศมี ฉันใช้ทักษะศิลปะขั้นสูงขั้นสูงของฉันเพื่อแสดงจุดที่นี่ Blobs Stripy สีเขียวแสดงรหัสไปรษณีย์ A, B และ C รอยเปื้อนสีแดงเป็นศูนย์กลางทางภูมิศาสตร์สำหรับรหัสไปรษณีย์แต่ละอัน จุดสีแดงม่วงคือตำแหน่งเป้าหมายและ .. วงกลมสีน้ำเงินที่เป็นก้อนนั้นมีรัศมี 1 ไมล์จากตำแหน่งเป้าหมาย หากฉันเรียกใช้แบบสอบถามสำหรับรหัสไปรษณีย์ทั้งหมดที่อยู่ในรัศมี 1 ไมล์จากรอยเปื้อนสีชมพูรหัสไปรษณีย์ B และ C เท่านั้นที่จะถูกส่งคืนเนื่องจากจุดศูนย์กลางสำหรับรหัสไปรษณีย์ A ไม่ได้อยู่ในรัศมีหนึ่งไมล์แม้ว่ารอยเปื้อนสีชมพูจะเกิดขึ้นเอง ชัดเจนในรหัสไปรษณีย์ A. SELECT *, p.distance_unit * DEGREES(ACOS(COS(RADIANS(p.latpoint)) * COS(RADIANS(z.y)) * COS(RADIANS(p.longpoint) - RADIANS(z.x)) + SIN(RADIANS(p.latpoint)) * SIN(RADIANS(z.y)))) AS …

2
ครอบครัวคอลัมน์คืออะไร?
ผมเคยเห็นว่าระบบฐานข้อมูล NoSQL เช่นRocksDBเสนอคุณสมบัติที่เรียกว่าครอบครัวคอลัมน์ ฉันเชื่อว่าฉันเข้าใจว่าแนวคิดนี้หมายถึงอะไร แต่ประโยชน์ที่แท้จริงของการใช้พวกเขาคืออะไร ฉันคิดว่าพวกเขาสามารถปรับปรุงประสิทธิภาพการค้นหาในบางกรณีหรือตำแหน่งพื้นที่ของคีย์ - ค่าเริ่มต้นอย่างน้อยที่สุด? ดูเหมือนจะไม่ส่งผลกระทบต่อความหมายที่แท้จริงของการเข้าถึงฐานข้อมูลอย่างไรก็ตามเท่าที่ฉันเข้าใจ ถูกต้องหรือไม่ มีบางอย่างที่ฉันขาดหายไปหรือไม่?
9 nosql 

3
สร้างค่าคงที่ระดับฐานข้อมูล (การแจงนับ) โดยไม่ใช้ CLR หรือไม่
ฉันมีวัตถุ SQL หลายอย่างที่ต้องดำเนินการทางเลือกอื่นตามสถานะที่ต้องการของคำขอ มีวิธีในการสร้างค่าคงที่ระดับฐานข้อมูล (การแจงนับ) ที่สามารถส่งผ่านไปยังกระบวนงานที่เก็บไว้ฟังก์ชันค่าตารางและใช้ในแบบสอบถาม (โดยไม่ต้องใช้ CLR) หรือไม่ CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumValue myEnumType) AS ...; แล้วใช้มัน: EXEC doSomeWork 85, ..., (myEnumType.EnumValue1 + myEnumType.EnumValue2); ไหนmyEnumTypeจะเก็บค่าการแจงนับไม่กี่ ในขั้นตอนที่ฉันจะสามารถใช้@EnumValueและทดสอบกับค่าในmyEnumTypeการทำงานที่จำเป็น ฉันจะทำให้ค่าของmyEnumTypebitmask สำหรับกรณีที่ฉันกำลังพิจารณา สำหรับตัวอย่างง่ายๆให้พิจารณากระบวนการที่มีราคาแพงซึ่งใช้ชุดข้อมูลขนาดใหญ่และลดลงเป็นชุดข้อมูลที่มีขนาดเล็กลง แต่ยังคงมีขนาดใหญ่มาก ในกระบวนการนี้คุณต้องทำการปรับเปลี่ยนบางอย่างในระหว่างกระบวนการที่จะมีผลต่อผลลัพธ์ สมมติว่านี่เป็นตัวกรองสำหรับ (หรือต่อ) บันทึกบางประเภทตามสถานะของการคำนวณระดับกลางภายในการลดลง @EnumValueชนิดmyEnumTypeสามารถนำมาใช้ในการทดสอบสำหรับการนี้ SELECT ... FROM ... WHERE (@EnumValue & myEnumType.EnumValue1 = myEnumType.EnumValue1 AND ...) OR …

1
สถิติของดัชนีในพาร์ติชั่นที่ไม่ได้ใช้ในการสืบค้นบนตารางทั้งหมด
การเข้าร่วมต่อไปนี้มีการประมาณการแถวแตกต่างกันมากเมื่อทำการเข้าร่วมในพาร์ทิชันเทียบกับเมื่อเข้าร่วมในตารางทั้งหมด: CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system TEXT ); สำหรับพาร์ติชันทั้งหมด: CREATE TABLE IF NOT EXISTS m_data.ga_session_20170127 ( CHECK (day_id = 20170127) ) INHERITS (m_data.ga_session); …

1
คอลัมน์ที่คำนวณอย่างต่อเนื่องทำให้เกิดการสแกน
การแปลงคอลัมน์ปกติเป็นคอลัมน์ที่คำนวณแล้วยังคงเป็นสาเหตุให้แบบสอบถามนี้ไม่สามารถค้นหาดัชนีได้ ทำไม? ทดสอบกับ SQL Server หลายเวอร์ชันรวมถึง 2016 SP1 CU1 Repros ด้วยคอลัมน์ที่คำนวณ ด้วยคอลัมน์ปกติ ปัญหาคือมี,table1col7 ตารางและแบบสอบถามเป็นต้นฉบับบางส่วน (และง่าย) ของต้นฉบับ ฉันทราบว่าคำถามอาจถูกเขียนใหม่แตกต่างกันและด้วยเหตุผลบางอย่างหลีกเลี่ยงปัญหา แต่เราจำเป็นต้องหลีกเลี่ยงการสัมผัสรหัสและคำถามที่ว่าทำไมtable1ไม่สามารถค้นหายังคงยืนอยู่ ดังที่ Paul White แสดงให้เห็น (ขอบคุณ!) การแสวงหานั้นจะเกิดขึ้นหากถูกบังคับดังนั้นคำถามคือ: ทำไมเครื่องมือเพิ่มประสิทธิภาพจึงไม่ได้ถูกเลือกโดยเครื่องมือเพิ่มประสิทธิภาพและไม่ว่าเราจะสามารถทำสิ่งที่แตกต่างออกไป รหัส? เพื่อชี้แจงส่วนที่มีปัญหานี่คือการสแกนที่เกี่ยวข้องในแผนการดำเนินการที่ไม่ดี:

1
COALESCE ไม่สามารถระบุได้ในตอนนี้
หนึ่งในนักพัฒนาของฉันกำลังโต้เถียงกันว่าCOALESCE(column, default value) = default valueตอนนี้ขายได้แล้ว นั่นถูกต้องใช่ไหม? ฉันรันการทดสอบต่อไปนี้แล้วและคิดว่าเป็นนัยที่COALESCEไม่สามารถโต้แย้งได้ USE tempdb; SELECT @@VERSION; -- Microsoft SQL Server 2016 (RTM-CU3-GDR) (KB3194717) - 13.0.2186.6 (X64) Oct 31 2016 18:27:32 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 14393: ) (Hypervisor) CREATE TABLE Test ( ID int primary …

4
เหตุผลอะไรที่ทำให้ SQL Server หยุดทำงาน?
สิ่งที่ฉันได้อ่านมาคือความเสียหายที่จะหยุด SQL Server เพราะมันสร้างแคชเย็นและดูดหน่วยความจำ เหตุใดจึงมีคนต้องการหยุด SQL Server หากคุณสามารถให้ลิงค์ไปยังบทความเพื่อที่ฉันจะได้อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ฉันจะขอบคุณมันจริงๆ! ครูของฉันตั้งคำถามนี้ นอกจากว่าจะเป็นคำถามที่หลอกลวงก็ทำให้ฉันนิ่งงันอย่างแน่นอน คำถามที่แน่นอนของเขาคือ: ดำเนินการวิจัยโดยใช้อินเทอร์เน็ตและเรียนรู้ว่าทำไมบางคนต้องการหยุด SQL Server อธิบายคำตอบของคุณ. นี่เป็นบริบทของการสำรวจวิธีใช้ SQL Server 2008 R2 ฉันไม่แน่ใจว่าเขาขอคำตอบที่ชัดเจนหรือไม่หรือมีบางสิ่งที่ฉันขาดหายไป

4
ฉันจะสร้างอนุกรมเวลาใน PostgreSQL ได้อย่างไร
หากคุณต้องการสร้างชุดข้อมูลวันที่ให้ดูคำถามนี้ สมมติว่าฉันต้องการสร้างชุดข้อมูลทุก 5 นาทีเป็นเวลา 24 ชั่วโมง ฉันจะทำเช่นนั้นใน PostgreSQL ได้อย่างไร PostgreSQL สามารถgenerate_series()จากแต่ไม่ได้มาจากtimestamptime มันจะดีกว่าถ้าเลือก timestamp ตามอำเภอใจหรือมีวิธีอื่นในการสร้างซีรีส์?

3
ฉันสามารถจับคู่จดหมายตัวแรกที่สามารถอ้างอิงได้ในสองตารางได้หรือไม่?
select value from persons p join persons2 p2 on left(p.lastname,1) = left(p2.lastname,1) เซิร์ฟเวอร์ SQL มีวิธีใดที่ทำให้ SARGable นี้ / ทำงานได้เร็วขึ้น? ฉันไม่สามารถสร้างคอลัมน์ในตารางบุคคล แต่ฉันสามารถสร้างคอลัมน์ใน person2

3
การย้ายข้อมูลจาก SQL Server 2005 ถึง 2016
ฉันยังใหม่กับการจัดการ SQL Server แต่ฉันพอใจกับภาษา SQL และสร้างแพ็คเกจ SSIS ฉันต้องการย้ายข้อมูลจาก SQL Server 2005 ถึง 2016 คำถามของฉันคือฉันต้องกังวลเกี่ยวกับฐานข้อมูลระบบและวัตถุอื่น ๆ เช่นดัชนีขั้นตอนการจัดเก็บมุมมองความปลอดภัยและการอนุญาต เข้าสู่ระบบหรือฉันสามารถย้ายข้อมูล ซึ่งจะเป็นขั้นตอนที่แนะนำในกรณีนี้

2
คำแนะนำเกี่ยวกับเซิร์ฟเวอร์ SQL สำหรับแฮ็กเก่า [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน3 ปีที่ผ่านมา ยามเย็นฉันหวังว่าตำนานของพวกคุณบางคนอาจจะช่วยฉันได้ที่นี่ :) ฉันใช้ SQL Server ครั้งล่าสุดในเวอร์ชัน 7 ย้อนกลับไปในยุคมืด ตอนนี้ฉันอยู่ที่นี่ในศตวรรษที่ 21 และต้องการกลับมาทำงาน DBA อีกครั้ง ฉันต้องการตั้งค่าเครื่องเสมือน & ราคาถูกที่จะเล่นด้วยแล้วทำตามการรับรองใหม่ล่าสุด (ฉันเห็นใหม่ล่าสุดจะเริ่มเดือนเมษายน 2560 ซึ่งเป็นเวลาที่ดีสำหรับฉันฉันคิดว่า) ฉันสนใจเป็นพิเศษในเรื่องของ BI ทุกคนสามารถแนะนำผู้ให้บริการโฮสต์ที่ดีสำหรับเครื่องเสมือนได้หรือไม่? ฉันจะได้รับ Windows Server และไปจากที่นั่นหรือฉันจะได้รับแพคเกจที่ไหนสักแห่ง? สีฟ้าที่ฉันคิดหรือที่อื่น ๆ ? ฉันสงสัยว่ามีตัวเลือกมากมายหวังว่าคุณจะสามารถแบ่งปันสิ่งดีๆได้ :) นอกจากนี้ยังมีเคล็ดลับที่เป็นประโยชน์อื่น ๆ ยินดีต้อนรับมากที่สุดไชโย!

4
ฟอร์มปกติแรก: คำจำกัดความที่ชัดเจน
ฉันกำลังพยายามรับรุ่นที่ชัดเจนของแบบฟอร์มปกติที่หนึ่งคืออะไร ทุกสิ่งที่ฉันอ่านมีการหมุนที่แตกต่างกันเล็กน้อย เจ้าหน้าที่หลายคนเช่นวันที่บอกว่าตามคำจำกัดความความสัมพันธ์อยู่ในรูปแบบปกติครั้งแรกในขณะที่คนอื่น ๆ ให้รายการข้อกำหนด ซึ่งหมายความว่ามีตั้งแต่ศูนย์ถึงข้อกำหนดจำนวนมากสำหรับ 1NF ฉันคิดว่าความแตกต่างคือระหว่างตารางและความสัมพันธ์: ตารางสามารถเป็นระเบียบสมบูรณ์ในขณะที่ความสัมพันธ์ตามข้อ จำกัด บางอย่าง ข้อเท็จจริงที่ว่าความสัมพันธ์นั้นแสดงเป็นตารางใน SQL จึงสร้างความสับสนบางอย่าง ฉันมุ่งเน้นไปที่ 1NF โดยเฉพาะเนื่องจากเกี่ยวข้องกับฐานข้อมูล SQL คำถามคือ: คุณสมบัติใดที่จำเป็นเพื่อให้แน่ใจว่าตารางที่อยู่ในรูปแบบปกติครั้งแรก? เจ้าหน้าที่หลายคนแนะนำว่าหากตารางแสดงถึงความสัมพันธ์แสดงว่าเป็น 1NF แล้ว สิ่งนี้จะผลักดันความหมายของ 1NF กลับไปที่ความหมายของความสัมพันธ์ นี่คือคุณสมบัติบางส่วนของตารางใน 1NF: ลำดับคอลัมน์ไม่มีความสำคัญ [1] ลำดับแถวไม่มีนัยสำคัญ แถวทั้งหมดมีความยาวเท่ากัน (เช่นข้อมูลแถวตรงกับส่วนหัวของคอลัมน์) ไม่มีแถวที่ซ้ำกัน (สามารถรับประกันได้โดยใช้คีย์หลักของตัวแทนตัวแทน แต่ไม่จำเป็นต้องใช้ PK เอง) ไม่มีคอลัมน์ซ้ำกัน แต่ละคอลัมน์มีค่าเดียว (อะตอมมิก) [1] แอททริบิวต์ทางเทคนิคไม่ได้เรียงลำดับ แต่ในตารางข้อมูลแถวจะต้องอยู่ในลำดับเดียวกับส่วนหัวของคอลัมน์ อย่างไรก็ตามคำสั่งซื้อที่แท้จริงนั้นไม่มีนัยสำคัญ ในหลายข้อมูล : แนวคิดของข้อมูลอะตอมคือไอเท็มไม่สามารถแยกย่อยได้อีก แนวคิดนี้ได้รับการมีคุณสมบัติในการว่าถึงแม้ในทางเทคนิคทุกอย่างได้ถูกทำลายลงnauseum โฆษณาข้อมูลในคำถามที่ไม่สามารถจริงเสียลงเพิ่มเติมใด …

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