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

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

1
mysqldump ดัชนีการส่งออกเป็นค่าเริ่มต้นหรือไม่
ผมเล่นไปรอบ ๆ เล็ก ๆ น้อย ๆ ที่มี mysqldump และผมสงสัยว่าถ้ามันไม่ดัชนีการส่งออก ( FULLTEXT, INDEX, ... ) โดยค่าเริ่มต้น ฉันอ่านมันและฉันพบตัวเลือกนี้ : --disable-keys, -K ซึ่งแสดงว่ามันส่งออกดัชนีจริง ๆ หรือไม่ แต่ฉันไม่ต้องการที่จะเชื่อใจการตีความของฉันและฉันต้องการให้แน่ใจว่าฉันเข้าใจถูก (หรือผิด ;-)) มีใครยืนยันได้บ้าง

4
เหตุใด Postgres จึงสร้างค่า PK ที่ใช้ไปแล้ว
ฉันใช้ Django และทุกครั้งที่ฉันได้รับข้อผิดพลาด: IntegrityError: ค่าคีย์ที่ซ้ำกันละเมิดข้อ จำกัด ที่ไม่ซ้ำกัน "myapp_mymodel_pkey" ราย ละเอียด: Key (id) = (1) มีอยู่แล้ว จริง ๆ แล้วฐานข้อมูล Postgres ของฉันมีวัตถุmyapp_mymodel ที่มีคีย์หลักเป็น 1 เหตุใด Postgres จะพยายามใช้คีย์หลักนั้นอีกครั้ง หรือนี่เป็นไปได้มากว่าแอปพลิเคชันของฉัน (หรือ ORM ของ Django) เป็นสาเหตุให้เกิดปัญหานี้ ปัญหานี้เกิดขึ้น 3 ครั้งติดต่อกันตอนนี้ สิ่งที่ฉันได้พบก็คือว่าเมื่อมันไม่เกิดขึ้นมันเกิดขึ้นหนึ่งครั้งหรือมากกว่าในแถวในตารางที่ระบุนั้นไม่ได้อีกครั้ง ดูเหมือนว่าจะเกิดขึ้นสำหรับทุกตารางก่อนที่จะหยุดอย่างสมบูรณ์สำหรับวันที่เกิดขึ้นเป็นเวลาอย่างน้อยหนึ่งนาทีหรือดังนั้นต่อตารางเมื่อมันเกิดขึ้นและจะเกิดขึ้นเป็นระยะ ๆ เท่านั้น (ไม่ตารางทั้งหมดทันที) ความจริงที่ว่าข้อผิดพลาดนี้เป็นระยะ ๆ (เกิดขึ้นเพียง 3 ครั้งหรือมากกว่านั้นใน 2 สัปดาห์ - ไม่มีการโหลดอื่น ๆ บนฐานข้อมูลเพียงฉันทดสอบใบสมัครของฉัน) …

3
ฉันจะรีเซ็ตตาราง mysql โดยอัตโนมัติเพิ่มขึ้นเป็น 1 ใน phpMyAdmin ได้อย่างไร
ฉันรู้ว่าใน MySQL ที่บรรทัดคำสั่งฉันสามารถรีเซ็ตเขตข้อมูลที่เพิ่มขึ้นอัตโนมัติของตารางเป็น 1 ด้วยสิ่งนี้: ALTER TABLE tablename AUTO_INCREMENT = 1 ฉันอยากรู้ว่ามีวิธีการทำเช่นนี้จากภายใน phpMyAdmin มีบางอย่างเช่นกล่องกาเครื่องหมายเพื่อรีเซ็ตการเพิ่มอัตโนมัติหรืออย่างอื่นตามบรรทัดเหล่านั้นหรือไม่ ไม่ใช่ว่ามีอะไรผิดปกติกับแนวทางบรรทัดคำสั่ง อีกหนึ่งสิ่งที่อยากรู้อยากเห็นที่ฉันคิด ... ขอขอบคุณล่วงหน้า!

1
MySQL นับแถวจากตารางอื่นสำหรับแต่ละระเบียนในตาราง
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID ฉันกำลังพยายามนับแถวสุดท้าย แต่แทนที่จะนับผลลัพธ์ทั้งหมดและส่งกลับผลลัพธ์เดียว ฉันได้รับสิ่งที่ต้องการ เนื่องจากมีหลายระเบียนเนื่องจากมีสองรายการใน ID ผู้เข้าร่วมสำหรับ K1052280 ฉันต้องการนับและส่งคืนหมายเลข สิ่งที่ต้องการ
20 mysql  select  count 

2
จะเพิ่มปุ่ม Debug ใน SSMS v18 ได้อย่างไร?
Debugปุ่มเป็นปัจจุบันอยู่กับรุ่นของ SSMS นี้: แต่มันไม่ได้อยู่ในรุ่น 18 แสดงตัวอย่าง 4: ฉันลองหลายวิธีเพื่อเพิ่มDebugปุ่มลงใน SSMS ของฉัน แต่ไม่ประสบความสำเร็จ มีวิธีเพิ่มDebugปุ่มใน SSMS v18 หรือไม่
20 sql-server  ssms 

6
SQL Server รองรับ GREATEST และ LEAST หรือไม่หากไม่ใช่วิธีแก้ไขปัญหาทั่วไป
การตรวจสอบคำถามนี้ดูเหมือนว่าเป็นงานที่ไม่ควรทำ พวกเขากำลังพยายามขยายช่วงด้วยวันที่ ในฐานข้อมูลอื่นคุณจะใช้greatestและleast.. least(extendDate,min), greatest(extendDate,max) เมื่อฉันพยายามใช้สิ่งเหล่านี้ฉันก็จะได้ 'least' is not a recognized built-in function name. 'greatest' is not a recognized built-in function name. ที่จะครอบคลุมนามสกุลในทิศทางใดทิศทางหนึ่ง สำหรับวัตถุประสงค์ของคำถามคุณยังคงต้องทำการเปลี่ยนช่วงพิเศษ ฉันแค่สงสัยว่าผู้ใช้ SQL Server ใช้รูปแบบแบบสอบถามเพื่อเลียนแบบleastและการgreatestทำงานได้อย่างไร PostgreSQL GREATEST/LEAST MySQL GREATEST/LEAST MariaDB GREATEST LEAST DB2 GREATEST LEAST คำพยากรณ์ GREATEST LEAST คุณคลายเงื่อนไขลงในCASEข้อความสั่งหรือมีส่วนเสริม, โปรแกรมเสริมของบุคคลภายนอกหรือใบอนุญาตจาก Microsoft ที่เปิดใช้งานฟังก์ชันนี้หรือไม่?

2
SQL INDEX - มันทำงานอย่างไร?
ความรู้เกี่ยวกับฐานข้อมูลและSQLของฉันขึ้นอยู่กับชั้นเรียนของมหาวิทยาลัยเป็นส่วนใหญ่ อย่างไรก็ตามฉันใช้เวลาสองสามเดือน (เกือบปี) ใน บริษัท ที่ฉันทำงานกับฐานข้อมูล ฉันได้อ่านหนังสือไม่กี่เล่มและผมได้มีส่วนร่วมในไม่กี่ฝึกอบรมเกี่ยวกับฐานข้อมูลเช่นMySQL, PostgreSQL, SQLite, Oracleและไม่กี่nonSQL dbวินาทีเช่นเราMongoDB, Redis, ElasticSearchฯลฯ เช่นเดียวกับที่ฉันพูดฉันเป็นคนขอทานด้วยความรู้มากมาย แต่วันนี้มีคนบอกอะไรบางอย่างกับสิ่งที่เป็นความรู้ของผู้ขอทานของฉัน ให้ฉันอธิบาย ลองใช้ฐานข้อมูลSQLและสร้างตารางง่ายๆPersonโดยมีเรคคอร์ดไม่กี่ตัวที่อยู่ภายใน: id | name | age ----------------- 1 | Alex | 24 2 | Brad | 34 3 | Chris | 29 4 | David | 28 5 | Eric | 18 6 | …
19 index 

1
เหตุใดการวนซ้ำอย่างง่ายใน ASYNC_NETWORK_IO จึงรออยู่
T-SQL ต่อไปนี้ใช้เวลาประมาณ 25 วินาทีในเครื่องของฉันด้วย SSMS v17.9: DECLARE @outer_loop INT = 0, @big_string_for_u VARCHAR(8000); SET NOCOUNT ON; WHILE @outer_loop < 50000000 BEGIN SET @big_string_for_u = 'ZZZZZZZZZZ'; SET @outer_loop = @outer_loop + 1; END; มันสะสม 532 มิลลิวินาทีของASYNC_NETWORK_IOรอตามทั้งสองและsys.dm_exec_session_wait_stats sys.dm_os_wait_statsเวลารอทั้งหมดจะเพิ่มขึ้นตามจำนวนการวนซ้ำที่เพิ่มขึ้น เมื่อใช้wait_completedเหตุการณ์ที่ขยายออกไปฉันจะเห็นว่าการรอเกิดขึ้นประมาณทุกๆ 43 มิลลิวินาทีโดยมีข้อยกเว้นบางประการ: นอกจากนี้ฉันจะได้รับสแต็คการโทรที่เกิดขึ้นก่อนASYNC_NETWORK_IOรอ: sqldk.dll!SOS_DispatcherBase::GetTrack+0x7f6c sqldk.dll!SOS_Scheduler::PromotePendingTask+0x204 sqldk.dll!SOS_Task::PostWait+0x5f sqldk.dll!SOS_Scheduler::Suspend+0xb15 sqllang.dll!CSECCNGProvider::GetBCryptHandleFromAlgID+0xf6af sqllang.dll!CSECCNGProvider::GetBCryptHandleFromAlgID+0xf44c sqllang.dll!SNIPacketRelease+0xd63 sqllang.dll!SNIPacketRelease+0x2097 sqllang.dll!SNIPacketRelease+0x1f99 sqllang.dll!SNIPacketRelease+0x18fe …
19 sql-server  ssms 

3
มันเรียกว่าอะไรเมื่อคุณค้นหาตรงกลางของสตริงแทนที่จะเป็นจุดเริ่มต้น
ฉันพยายามขัดคำศัพท์ของฉันเพื่อสื่อสารกับนักพัฒนาเพื่อนของฉันให้ดีขึ้น เรามีสถานที่หลายแห่งในเว็บไซต์ที่เรากำลังถกเถียงกันว่าเราควรค้นหาสตริงจากจุดเริ่มต้น'running%'เทียบกับตำแหน่งใด ๆ ในสตริง'%running%เทียบกับที่ใดก็ได้ในสตริง ฉันเรียกการค้นหากึ่งกลางว่า "ฟัสซี"ซึ่งฉันรู้ว่าไม่ถูกต้องเนื่องจากฟัซซี่หมายถึงการเปลี่ยนรูปแบบของคำว่า "รัน", "รัน" [sic], "รัน" [sic] คำศัพท์ที่ถูกต้องสำหรับการค้นหาจุดเริ่มต้นของสตริงและค้นหาตรงกลางของสตริงคืออะไร?

2
Quantum ของ Windows OS เทียบกับ Quantum ของ SQL OS
คำถามง่าย ๆ SQL Server Quantum (4 ms) มีการซิงโครไนซ์กับ Quantum Server OS อย่างไร (ปกติ: 187.5 ms) อธิบายคำถามง่าย ๆ หลังจากที่ใช้ควอนตัม OS 184 ms (ซึ่งสอดคล้องกับควอนตัม SQL แบบเต็ม 46) ควอนตัม OS นั้นมีเวลา 3.5 มิลลิวินาทีก่อนที่มันจะต้องส่งมอบตารางเวลาให้กับกระบวนการอื่น SQL OS เริ่มต้นควอนตัม (4 ms) และหลังจาก 3.5 ms, ควอนตัม OS ได้ตัดสินใจที่จะหยุดเธรด SQL OS ปัจจุบันซึ่งยังคงมี 0.5 มิลลิวินาทีก่อนที่มันจะให้ผลตามกำหนดเวลา เกิดอะไรขึ้น? Dive Deep บน …
19 sql-server 

4
การเรียกใช้ SQL ซ้ำใช้งานได้จริงอย่างไร
เมื่อมาถึง SQL จากภาษาการเขียนโปรแกรมอื่นโครงสร้างของเคียวรีแบบเรียกซ้ำจะค่อนข้างแปลก เดินผ่านทีละขั้นตอนและดูเหมือนว่าจะกระจุย ลองพิจารณาตัวอย่างง่ายๆดังต่อไปนี้: CREATE TABLE #NUMS (N BIGINT); INSERT INTO #NUMS VALUES (3), (5), (7); WITH R AS ( SELECT N FROM #NUMS UNION ALL SELECT N*N AS N FROM R WHERE N*N < 10000000 ) SELECT N FROM R ORDER BY N; ลองเดินดูกัน ขั้นแรกสมาชิกจุดยึดดำเนินการและชุดผลลัพธ์ถูกใส่ใน R ดังนั้น R …

1
จะปลอดภัยหรือไม่ที่จะพึ่งพาคำสั่งของส่วนคำสั่งเอาท์พุทของ INSERT?
รับตารางนี้: CREATE TABLE dbo.Target ( TargetId int identity(1, 1) NOT NULL, Color varchar(20) NOT NULL, Action varchar(10) NOT NULL, -- of course this should be normalized Code int NOT NULL, CONSTRAINT PK_Target PRIMARY KEY CLUSTERED (TargetId) ); ในสองสถานการณ์ที่แตกต่างกันเล็กน้อยฉันต้องการแทรกแถวและคืนค่าจากคอลัมน์ข้อมูลประจำตัว สถานการณ์ 1 INSERT dbo.Target (Color, Action, Code) OUTPUT inserted.TargetId SELECT t.Color, t.Action, …

4
ค้นหา ID จากรายการที่ไม่มีอยู่ในตาราง
ว่าฉันมีคีมาและข้อมูลต่อไปนี้: create table images( id int not null ); insert into images values(1), (2), (3), (4), (6), (8); ฉันต้องการที่จะทำการค้นหาเช่น: select id from images where id not exists in(4, 5, 6); แต่มันไม่ได้ผล กรณีข้างต้นควรกลับมา5เนื่องจากไม่มีอยู่ในระเบียนในตาราง

1
การเรียกใช้ VACUUM บนโต๊ะที่รับเฉพาะ INSERT นั้นคุ้มค่าหรือไม่
ในปี 2558 เรื่องการประดิษฐ์คิดค้น AWS กล่าวว่าเครื่องดูดฝุ่นควรทำงานไม่เพียง แต่หลังจากการปรับปรุงหรือลบ แต่ยังหลังจากการแทรก นี่คือส่วนที่เกี่ยวข้องของการพูดคุย: http://www.youtube.com/watch?v=tZXp19q8RFo&t=16m2s สมมุติว่ามีการล้างข้อมูลที่ต้องทำบนบล็อกแม้ว่าจะได้รับการแทรกเท่านั้นและการล้างข้อมูลนี้สามารถทำได้ทั้งในครั้งแรกที่มีการเลือกบล็อก (ชะลอการอ่าน) หรือระหว่างการดูด สิ่งนี้เป็นจริงหรือไม่และหากเป็นเช่นนั้นการล้างข้อมูลต้องทำอย่างไร

3
เพิ่มประสิทธิภาพการแทรกภายใต้ภาระ: ทำไม?
ฉันมีโค้ดที่ทำหน้าที่แทรกลงในตารางที่มีความผิดปกติอย่างมาก ตารางมีจำนวนคอลัมน์ตั้งแต่ ~ 100 ถึง 300+ นี่คือ SQL Server 2008 R2 ทำงานบน Windows Server 2008 แต่ละแทรกประกอบด้วยการแทรกจำนวนตารางภายใต้การทำธุรกรรมเดียวกัน เม็ดมีดบางรุ่นจะถูกแบตช์โดย NHibernate แต่บางอันไม่สามารถทำได้ แต่ทั้งหมดนั้นอยู่ภายใต้ธุรกรรมเดียวกันอย่างไรก็ตาม เมื่อฉันทำการแทรกประมาณ 500 ครั้งโดยการเรียกรหัสที่มีการแทรกซ้ำหลายครั้งฉันจะได้รับค่าเฉลี่ย ~ 360 ms บิตแปลกคือเมื่อฉันเรียกใช้รหัสทดสอบพร้อมกันโดยใช้ 4 กระบวนการ (exe เดียวกันทำงานจาก 4 พร้อมรับคำสั่งที่แตกต่างกันภายใต้ windows server 2008) ประสิทธิภาพการแทรกต่อการโทรดีขึ้นมาก ฉันเห็นการระเบิดที่ความเร็ว 90 มิลลิวินาที (เกือบ X4 เร็วขึ้น) ฉันวัดเวลาการแทรกจากโค้ด เนื่องจากกระบวนการทั้งสี่ไม่รู้อะไรเกี่ยวกับกันและกันฉันจึงสมมติว่ามันมีบางอย่างที่เกี่ยวข้องกับ SQL Server แต่ฉันไม่รู้ว่าทำไม ฉันต้องการทราบว่าทำไมสิ่งนี้ถึงเกิดขึ้นและหากมีการกำหนดค่าใด ๆ …

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