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

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

3
วิธีเพิ่มประสิทธิภาพของ Virgin Query ใน MS SQL Server
ฉันมีเว็บไซต์ ASP.NET ที่เป็นเจ้าของแคชข้อมูลและข้อมูลไม่เปลี่ยนแปลงเป็นเวลานานดังนั้นจึงไม่จำเป็นต้องสืบค้น SQL Server ครั้งที่สองด้วยแบบสอบถามเดียวกัน ฉันต้องปรับปรุงประสิทธิภาพของแบบสอบถามครั้งแรก (บริสุทธิ์) ที่ไปยัง SQL Server นั้น แบบสอบถามบางแห่งประมวลผลข้อมูลมากจนอาจทำให้ SQL Server ใช้งานtempdbได้ ฉันไม่ใช้ตัวแปร temp table หรือ temp tables ดังนั้น SQL Server ตัดสินใจที่จะใช้tempdbด้วยตนเองทุกครั้งที่ต้องการ ขนาดฐานข้อมูลของฉันคือ 16Gb ฉันมี RAM จริง 32Gb อยู่ในเครื่องเซิร์ฟเวอร์ ฉันเข้าใจว่ากลยุทธ์การแคช MS SQL Server พยายามเก็บข้อมูลใน RAM เพื่อเพิ่มความเร็วของการค้นหาที่คล้ายกันหากต้องการโหลดข้อมูลเดียวกันอีกครั้ง นอกจากนั้นมันจะพยายามใช้ RAM ที่มีอยู่แทน tempdb เพื่อเพิ่มความเร็วในการทำงานโดยไม่ทำให้เกิดการเข้าถึงดิสก์ ฉันคิดว่าเมื่อแบบสอบถามที่ต้องการเก็บบางสิ่งใน tempdb SQL Server มาและมี …

2
การแตกแฟรกเมนต์ดัชนีขณะประมวลผลอย่างต่อเนื่อง
SQL Server 2005 ฉันต้องสามารถประมวลผลระเบียน 350M อย่างต่อเนื่องในตารางบันทึก 900M แบบสอบถามที่ฉันใช้เพื่อเลือกระเบียนที่จะดำเนินการจะแยกส่วนอย่างไม่ดีตามที่ฉันดำเนินการและฉันจำเป็นต้องหยุดการประมวลผลเพื่อสร้างดัชนีใหม่ จำลองข้อมูล & คิวรีแบบหลอก ... /**************************************/ CREATE TABLE [Table] ( [PrimaryKeyId] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, [ForeignKeyId] [INT] NOT NULL, /* more columns ... */ [DataType] [CHAR](1) NOT NULL, [DataStatus] [DATETIME] NULL, [ProcessDate] [DATETIME] NOT NULL, [ProcessThreadId] VARCHAR (100) NULL ); …

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

2
วิธีการใช้ชุดรูปแบบกับ SQL Server Management Studio 2008
มีใครบ้างไหมที่ประสบความสำเร็จเช่นใช้ 'dark' กับองค์ประกอบ Text Editor ของ SSMS 2008 มีเคล็ดลับเก่าสำหรับปี 2005 ซึ่งไม่สามารถใช้งานได้อีกต่อไปและยังไม่ได้อัปเกรด http://winterdom.com/2007/10/colorschemesinsql2005managementstudio ดวงตาของฉันจะขอบคุณมาก! ไชโย

3
ทำไม Full Outer Join นี้ไม่ทำงาน?
ฉันเคยใช้ Full Outer Joins มาก่อนเพื่อให้ได้ผลลัพธ์ที่ต้องการ แต่บางทีฉันอาจไม่เข้าใจแนวคิดอย่างเต็มที่เพราะฉันไม่สามารถบรรลุสิ่งที่ควรเข้าร่วมอย่างง่าย ฉันมี 2 ตาราง (ซึ่งฉันจะเรียก t1 และ t2) โดยมี 2 ฟิลด์แต่ละฟิลด์: t1 Policy_Number Premium 101 15 102 7 103 10 108 25 111 3 T2 Policy_Number Loss 101 5 103 9 107 20 สิ่งที่ฉันพยายามทำคือรับผลรวมของพรีเมี่ยมและผลรวมของการสูญเสียจากทั้งสองตารางและ Policy_Number รหัสที่ฉันใช้คือ: select sum(premium) Prem_Sum, sum(Loss) Loss_Sum, t1.policynumber from t1 full …

2
ฐานข้อมูลความจุ 100 TeraBytes - ทรัพยากรและการคาดการณ์เวลา
ฉันกำลังทำงานกับการคำนวณ 'ด้านหลังของซองจดหมาย' สำหรับการตั้งค่าฐานข้อมูลการรายงาน 100TB ฉันกำลังค้นหาความคิดจากผู้เชี่ยวชาญที่นี่ สภาพแวดล้อมที่เสนอ: ความจุ: 100TB ตาราง ~ 200 ขนาดตั้งแต่ 1GB ถึง 5TB ขนาดเฉลี่ยอาจอยู่ระหว่าง 100GB-200GB ETL - งานอาจต้องเข้าร่วมระหว่างตารางที่มี 10 ล้านแถวโดยมีคีย์การเข้าร่วมตั้งแต่ 10 ถึง 500 ไบต์ การเข้าร่วมดังกล่าวควรเสร็จสิ้นภายใน 2-5 นาที Live Selects - เริ่มแรกสนใจเฉพาะความเร็วที่เลือก ควรรองรับ 500 เลือก / วินาที การอัปเดต / วินาทีจะมีจำนวนน้อยกว่ามากและสามารถเพิกเฉยต่อการฝึกหัดนี้ได้ ต้องการความพร้อมในการ 24x7 2 เซิร์ฟเวอร์ฐานข้อมูลอิสระควรพร้อมให้บริการสำหรับการโทรที่เลือก (ด้วยการจำลองข้อมูล) คำถาม: ในปัจจุบันฉันกำลังดู Oracle ประสบการณ์ของคุณเป็นอย่างไรกับการค้าขาย …

2
MySQL ล็อคขณะสร้างตารางตามที่เลือก
ฉันกำลังเรียกใช้แบบสอบถาม (จำลอง) ต่อไปนี้ CREATE TABLE large_temp_table AS SELECT a.*, b.*, c.* FROM a LEFT JOIN b ON a.foo = b.foo LEFT JOIN c ON a.bar = c.bar สมมติว่าแบบสอบถามใช้เวลา 10 นาทีในการเรียกใช้ การพยายามอัปเดตค่าในตาราง a, b หรือ c ในขณะที่มันกำลังทำงานอยู่จะรอให้คิวรีด้านบนทำงานให้เสร็จก่อน ฉันต้องการหลีกเลี่ยงการล็อคนี้ (ความสอดคล้องของข้อมูลไม่เป็นที่สนใจ) ฉันจะบรรลุสิ่งนั้นได้อย่างไร การใช้: MySQL 5.1.41 และตาราง InnoDB ps ชุดแยกธุรกรรมระดับการอ่านไม่ได้รับอนุญาต; ไม่มีการเปลี่ยนแปลงในพฤติกรรม อัปเดต ในขณะที่กำลังดำเนินการค้นหาผลลัพธ์ของ SHOW …
10 mysql  locking  ctas 

3
ฉันจะรักษาค่าศูนย์นำหน้าได้อย่างไรเมื่อฉันใส่ตัวเลขลงในตารางนี้ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน8 ปีที่ผ่านมา ฉันได้แทรกสองระเบียนลงในตาราง create table num(id int) insert into num values(0023) insert into num values(23) select * from num 23เมื่อผมสอบถามพวกเขาพวกเขาทั้งหมดเป็นจอแสดงผล หมายความว่า SQL Server ละเว้น 0s ชั้นนำ กลไกเบื้องหลังคืออะไร ฉันจะให้ SQL Server คืนค่าตามที่ฉันแทรก (เช่น0023และ23) ได้อย่างไร

2
การแทรกดัชนีแบบไม่รวมกลุ่ม
สมมติว่าฉันมีโต๊ะแบบนี้: create table SomeTable ( id int identity(1, 1) not null primary key clustered, SomeString1 varchar(50) not null, SomeString2 varchar(50) not null ) go create nonclustered index IX_SomeString1 on SomeTable(SomeString1) go ถ้าฉันจะทำสิ่งนี้: insert into SomeTable(SomeString1, SomeString2) values('foo', 'bar') go และดูแผนการดำเนินการจริงฉันเห็นเฉพาะการแทรกดัชนีแบบกลุ่ม เหตุใดฉันจึงไม่เห็นการแทรกดัชนีที่ไม่ได้เป็นคลัสเตอร์ในแผนการดำเนินการ
10 sql-server 

2
การใช้หลายคอร์สำหรับเคียวรี MySQL เดี่ยวบน Debian
ฉันใช้เซิร์ฟเวอร์ MySQL สำหรับการทดสอบบน VM (VMWare) กับ Debian ในฐานะแขกของระบบปฏิบัติการ แขกมีคอร์ CPU ที่จำลองสี่แกนดังนั้นฉันจึงตั้งค่า thread_concurrency เป็นสี่ ฉันกำลังทำร่วมราคาแพงบนโต๊ะขนาดใหญ่ซึ่งอาจใช้เวลาหลายนาที แต่ฉันเห็นในระบบปฏิบัติการของแขกว่ามีเพียงหนึ่งคอร์เท่านั้นที่ใช้ในแต่ละครั้ง สิ่งนี้เกิดขึ้นโดยไม่คำนึงถึงเอ็นจิ้นการจัดเก็บที่ใช้สำหรับตารางที่เกี่ยวข้อง (ทดสอบกับ MyISAM และ InnoDB) นอกจากนี้ฐานข้อมูลทั้งหมดดูเหมือนจะถูกบล็อกเมื่อทำการสอบถามขนาดใหญ่เหล่านี้ฉันไม่สามารถทำแบบสอบถามเพิ่มเติมใด ๆ ในแบบคู่ขนาน แสดงว่า htop แปลก ๆ ที่แกนกลางที่ใช้สำหรับคิวรีนั้นเปลี่ยนไปในระหว่างรันไทม์ของคิวรี! ทำไมสิ่งนี้ถึงเกิดขึ้น นี่คือรายการที่เกี่ยวข้องจากSHOW FULL PROCESSLIST;(ไม่มีคำสั่งอื่น ๆ ): | 153 | root | localhost | pulse_stocks | Query | 50 | Copying to tmp …

1
รายการที่ชัดเจนของขั้นตอนสำหรับการทดสอบพื้นฐานของ SQL Server?
ก่อนเรียกใช้การทดสอบประสิทธิภาพ / พื้นฐานสำหรับแอปที่ใช้ SQL Server ฉันต้องการให้สามารถตั้งค่าอินสแตนซ์เป็นสถานะ "ใหม่ทั้งหมด" โดยไม่ต้องเริ่มต้นอินสแตนซ์ใหม่ มีขั้นตอนที่ฉันมักจะทำตาม แต่ฉันต้องการสร้างรายการที่ชัดเจนที่อยู่ในลำดับที่ถูกต้องและไม่มีขั้นตอนซ้ำซ้อน รายการขั้นตอนนี้ทำให้การตั้งค่า SQL Server เป็นสถานะ "สะอาด" หรือไม่ ลำดับลอจิก / ถูกต้องหรือไม่? มีขั้นตอนที่ซ้ำซ้อนหรือไม่? CHECKPOINT -- Write all dirty pages DBCC DROPCLEANBUFFERS -- All should be clean after checkpoint? DBCC FREEPROCCACHE -- Clear the plan cache DBCC FREESYSTEMCACHE -- Is this necessary after FREEPROCCACHE? …

2
อะไรคือความแตกต่างระหว่างการทำมิเรอร์และการทำคลัสเตอร์ที่ล้มเหลวและแต่ละอันที่แนะนำกัน
อะไรคือความแตกต่างที่สำคัญระหว่างการทำมิเรอร์และการเฟลโอเวอร์คลัสเตอร์? ปัญหาประเภทใดที่แต่ละคนแก้ไขได้และในสถานการณ์แบบใดที่แต่ละคนได้รับการแนะนำในอีกสถานการณ์หนึ่ง

3
โครงสร้างฐานข้อมูลสินค้าคงคลังเมื่อรายการสินค้าคงคลังมีแอตทริบิวต์ที่แตกต่างกัน
ฉันกำลังสร้างฐานข้อมูลสินค้าคงคลังเพื่อจัดเก็บข้อมูลฮาร์ดแวร์ขององค์กร อุปกรณ์ที่ฐานข้อมูลติดตามนั้นมีตั้งแต่เวิร์กสเตชันแล็ปท็อปสวิตช์เราเตอร์โทรศัพท์มือถือ ฯลฯ ฉันใช้หมายเลขซีเรียลของอุปกรณ์เป็นคีย์หลัก ปัญหาที่ฉันมีคือคุณสมบัติอื่น ๆ ของอุปกรณ์เหล่านี้แตกต่างกันไปและฉันไม่ต้องการให้มีฟิลด์ในตารางสินค้าคงคลังที่ไม่เกี่ยวข้องกับอุปกรณ์อื่น ด้านล่างคือลิงค์ไปยัง ERD ของส่วนหนึ่งของฐานข้อมูล (ความสัมพันธ์ FK บางอย่างไม่แสดง) ฉันกำลังพยายามตั้งค่าตัวอย่างเช่นอุปกรณ์ที่มีประเภทอุปกรณ์เวิร์กสเตชันไม่สามารถใส่ลงในตารางโทรศัพท์ ดูเหมือนว่าจะต้องมีการใช้ทริกเกอร์จำนวนมากเพื่อตรวจสอบประเภทอุปกรณ์หรือคลาสและตารางใหม่ทุกครั้งที่มีการติดตามอุปกรณ์ที่แตกต่างกันที่มีคุณลักษณะแตกต่างกัน ฉันค้นหาการตั้งค่าตารางคุณลักษณะที่สามารถแมปกับหมายเลขซีเรียลได้ แต่จะอนุญาตให้แอททริบิวที่ไม่ใช้กับประเภทอุปกรณ์ที่จะกำหนดให้กับอุปกรณ์เช่นใครบางคนสามารถกำหนดแอตทริบิวต์หมายเลขโทรศัพท์ให้กับเวิร์กสเตชันได้หากต้องการ . ฉันพบคำอธิบายเกี่ยวกับเว็บไซต์นี้ที่ให้โครงสร้างดังต่อไปนี้: โครงสร้างนี้จะใช้งานได้ดีหากคุณลักษณะทั้งหมดนั้นใช้ได้กับรายการที่ฉันจัดเก็บ ตัวอย่างเช่นหากฐานข้อมูลจัดเก็บเฉพาะโทรศัพท์มือถือแอตทริบิวต์อาจเป็นสิ่งต่าง ๆ เช่นหน้าจอสัมผัสแทร็คแพดคีย์บอร์ด 4G และ 3G ... อะไรก็ได้ ในกรณีนั้นพวกเขาทั้งหมดใช้กับโทรศัพท์ ฐานข้อมูลของฉันจะมีคุณลักษณะเช่นชื่อโฮสต์, circuitType, phoneNumber ซึ่งใช้กับอุปกรณ์ประเภทเฉพาะเท่านั้น ฉันต้องการตั้งค่าเพื่อให้สามารถกำหนดแอททริบิวที่ใช้กับประเภทอุปกรณ์ที่กำหนดให้กับอุปกรณ์ประเภทนั้นเท่านั้น คำแนะนำใด ๆ เกี่ยวกับวิธีการตั้งค่าฐานข้อมูลนี้? ฉันไม่แน่ใจว่านี่เป็นการใช้ความสัมพันธ์แบบหนึ่งต่อหนึ่งหรือไม่หรือถ้ามีวิธีที่ดีกว่าในการทำเช่นนี้ ขอบคุณล่วงหน้าที่สละเวลาในการตรวจสอบเรื่องนี้ นี่คือกระทู้อื่น ๆ ที่ฉันอ่าน พวกเขาให้ข้อมูลเชิงลึกที่ดีแก่ฉัน แต่ฉันไม่คิดว่าพวกเขาจะนำไปใช้จริง: /programming/9335548/how-to-structure-database-for-inventory-of-unlike-items /programming/1249632/database-structure-for-items-with-varying-attributes /programming/5559587/product-inventory-with-multiple-attributes /programming/6613802/question-about-setting-up-inventory-database /programming/514111/how-to-best-represent-items-with-variable-of-attributes-in-a-database

6
SQL Server รันคิวรีแบบขนานหรือไม่
SQL Server รันคิวรีแบบขนานหรือไม่ กล่าวอีกนัยหนึ่งถ้าฉันเรียกใช้การสืบค้นที่หนักที่ใช้เวลา 10 วินาทีในการดำเนินการและในเวลาเดียวกันเริ่มการสอบถามหนักอื่นที่ใช้เวลา 10 วินาทีแบบสอบถามที่สองจะเริ่มจริงหลังจาก 10 วินาทีหรือพวกเขาจะเริ่มทั้งสองในเวลาเดียวกัน ?
10 sql-server 

2
มีวิธีบังคับให้ดัชนีอยู่ในหน่วยความจำด้วย SQL Server 2008 หรือไม่?
ฉันมีตารางที่มีหลายล้านแถวซึ่งฉันต้องเรียกใช้แบบสอบถามบางครั้งบางคราว โดยทั่วไปการสืบค้นแรกจะค่อนข้างช้า (ประมาณ 10 วินาที) และการสืบค้นที่ตามมามักจะเร็วกว่า (ประมาณ 1 วินาที) หลังจากผ่านไปสองสามชั่วโมงวงจรที่ช้า / เร็วจะเริ่มขึ้นอีกครั้ง ฉันได้ตรวจสอบแผนการดำเนินการของฉันว่าดัชนีที่ต้องการทั้งหมดมีอยู่และใช้อย่างเหมาะสมและฉันถือว่าความแตกต่างของประสิทธิภาพนั้นเกิดจากข้อเท็จจริงที่ว่าดัชนีนั้นอยู่ในหน่วยความจำสำหรับการสืบค้นที่ตามมา (ฉันใช่หรือไม่ สาเหตุที่เป็นไปได้หรือไม่) ฉันยังใช้แบบสอบถามอื่น ๆ จำนวนมากโดยใช้ดัชนีเช่นกัน แต่แบบสอบถามเหล่านั้นใช้เวลาน้อยลงและประสิทธิภาพการทำงานนั้นสำคัญน้อยลงดังนั้นฉันจึงกังวลว่าดัชนีเหล่านั้นกำลังผลักดัชนีสำคัญออกจากแคชหน่วยความจำ นอกเหนือจากการแก้ไข 'เพิ่ม RAM เพิ่มเติม' ที่เห็นได้ชัดฉันยังคิดถึงการเขียนสคริปต์คิวรีเพื่อทำงานทุก ๆ ชั่วโมงเพื่อบังคับให้ดัชนีกลับมาอยู่ในหน่วยความจำ มีวิธีที่สง่างามกว่านี้หรือไม่? เช่นเดียวกับวิธีการบอกใบ้ SQLServer ว่าถ้ามันมีหน่วยความจำเพียงพอที่จะเก็บหนึ่งเดียวดัชนีแคชมันควรจะเป็นอย่างนั้น? ฉันรู้ว่าโดยปกติแล้วสิ่งที่ดีที่สุดคือการไม่ยุ่งกับ SQLServer ซึ่งเกี่ยวข้องกับสิ่งต่าง ๆ แต่ลักษณะที่ผิดปกติของข้อความค้นหาของฉัน (ทำงานน้อยมาก แต่ไม่ค่อยสำคัญเวลา) ทำให้ฉันเชื่อว่ามันสมเหตุสมผล . ฉันยังอยากรู้ว่าถ้ามีวิธีที่จะรู้ว่าดัชนีใดถูกแคชในหน่วยความจำในเวลาที่กำหนด?

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