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

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

3
CXPACKET สูงและ LATCH_EX กำลังรอ
ฉันมีปัญหาด้านประสิทธิภาพกับระบบประมวลผลข้อมูลที่ฉันกำลังทำงานอยู่ ฉันได้รวบรวมสถิติการรอจากเวลาหนึ่งชั่วโมงที่แสดง CXPACKET และ LATCH_EX รอเหตุการณ์จำนวนมาก ระบบประกอบด้วยการประมวลผล SQL เซิร์ฟเวอร์ 3 เครื่องซึ่งมีจำนวนการกระทืบและการคำนวณจำนวนมากจากนั้นป้อนข้อมูลลงในเซิร์ฟเวอร์คลัสเตอร์กลาง เซิร์ฟเวอร์ประมวลผลสามารถมีงานได้ถึง 6 งานในแต่ละครั้ง สถิติการรอเหล่านี้มีไว้สำหรับคลัสเตอร์กลางซึ่งฉันคิดว่าเป็นสาเหตุของปัญหาคอขวด เซิร์ฟเวอร์คลัสเตอร์ส่วนกลางมี 16 คอร์และ 64GB RAM MAXDOP ถูกตั้งค่าเป็น 0 ฉันเดาว่า CXPACKET นั้นมาจากการสืบค้นหลายขนานที่ทำงานอยู่ แต่ฉันไม่แน่ใจว่าสิ่งที่ LATCH_EX รอเหตุการณ์ระบุไว้ จากสิ่งที่ฉันได้อ่านนี้อาจเป็นการรอแบบไม่บัฟเฟอร์? ทุกคนสามารถแนะนำสาเหตุของการรอคอยสถิติเหล่านี้ได้อย่างไรและฉันควรดำเนินการอย่างไรเพื่อตรวจสอบสาเหตุที่แท้จริงของปัญหาประสิทธิภาพการทำงานนี้ ผลลัพธ์ข้อความค้นหายอดนิยมคือสถิติการรอคอยทั้งหมดและผลลัพธ์ข้อความค้นหาด้านล่างคือสถิติในช่วงเวลา 1 ชั่วโมง

5
ตารางคำสั่งอีคอมเมิร์ซ ประหยัดราคาหรือใช้ตารางการตรวจสอบ / ประวัติ?
ฉันออกแบบคีมาอีคอมเมิร์ซแรกของฉัน ฉันได้อ่านเรื่องนี้มาระยะหนึ่งแล้วและสับสนเล็กน้อยเกี่ยวกับความสัมพันธ์ระหว่างorder_line_itemกับproduct productสามารถรับการสั่งซื้อ มันมีรายละเอียดที่แตกต่างกัน unit_priceแต่ที่สำคัญที่สุดคือ order_line_itemมีคีย์ต่างประเทศไปproduct_idซื้อที่quantityซื้อและunit_priceที่จุดในเวลาลูกค้าที่ซื้อสินค้า สิ่งที่ฉันได้อ่านส่วนใหญ่บอกว่าควรเพิ่มunit_priceon order_line_item(อย่างชัดเจนโดยไม่อ้างอิงผ่านproduct_id) สมเหตุสมผลเนื่องจากร้านค้าสามารถเปลี่ยนแปลงราคาในอนาคตซึ่งจะทำให้การรายงานคำสั่งซื้อการติดตามความสมบูรณ์และอื่น ๆ สิ่งที่ฉันไม่เข้าใจคือทำไมบันทึกโดยตรงunit_priceไปยังค่าorder_line_itemหรือไม่ การสร้างตารางการตรวจสอบ / ประวัติจะเป็นการดีกว่าการสร้างตารางการunit_priceเปลี่ยนแปลงproductหรือไม่? เมื่อมีการorder_line_itemสร้างคีย์ต่างประเทศของproduct_auditตารางจะถูกเพิ่มและสามารถดึงราคา (โดยอ้างอิง) จากที่นั่น ดูเหมือนว่าฉันจะมีข้อดีหลายอย่างในการใช้วิธีนี้ (การทำซ้ำของข้อมูลน้อยลง, ประวัติการเปลี่ยนแปลงราคาเป็นต้น) ดังนั้นทำไมจึงไม่ใช้บ่อยกว่านี้ ฉันยังไม่เจอตัวอย่างของสคีมาอีคอมเมิร์ซที่ใช้วิธีการนี้ฉันทำอะไรหายหรือเปล่า UDPATE: ดูเหมือนว่าคำถามของฉันที่เกี่ยวข้องกับการเปลี่ยนแปลงอย่างช้าๆมิติ ฉันยังคงสับสนอยู่ว่าในขณะที่การเปลี่ยนมิติช้าเกี่ยวข้องกับคลังข้อมูลและ OLAP ดังนั้นชนิดการเปลี่ยนแปลงมิติช้าสามารถนำไปใช้กับฐานข้อมูลธุรกรรมทางธุรกิจหลักของฉัน (OLTP) ได้หรือไม่ ฉันสงสัยว่าฉันกำลังรวมแนวคิดจำนวนมากเข้าด้วยกันหรือไม่

1
คอลัมน์ sys.partition.rows มีความแม่นยำเพียงใด
มุมมองระบบsys.partitionsมีคอลัมน์ "แถว" ที่เป็นจำนวนแถวทั้งหมดในพาร์ติชันที่กำหนด สำหรับตารางที่ไม่ได้แบ่งพาร์ติชัน (หรือมีพาร์ติชันเดียวขึ้นอยู่กับวิธีที่คุณดู) คอลัมน์นี้ให้จำนวนแถวในตาราง SELECT COUNT(1) FROM TableNameฉันอยากรู้วิธีที่ถูกต้องคือคอลัมน์นี้และถ้าผมสามารถใช้มันแทน ฉันได้ทำการทดลองที่สร้างตารางและเพิ่มสองสามพันแถวลบสองสามร้อยเพิ่มอีกสองสามพัน ฯลฯ และจำนวนนั้นตายเสมอ อย่างไรก็ตามฉันมีตารางหนึ่งตารางที่มีประมาณ 700 ล้านแถวและดัชนีหลายรายการ แถวในsys.partitionsสำหรับดัชนีคลัสเตอร์นั้นตายไปแล้วอีกครั้งอย่างไรก็ตามดัชนีอื่น ๆ แสดงความแตกต่างเล็กน้อย (+ -20k) ไม่มีใครรู้วิธีคำนวณแถวนี้และถ้ามันถูกต้องตามที่ปรากฏ?

3
SQL Server ตัดค่า varchar โดยอัตโนมัติในการเปรียบเทียบเท่ากัน แต่ไม่เหมือนกับการเปรียบเทียบ
ฉันเจอพฤติกรรมที่น่าสนใจใน SQL Server (สังเกตในปี 2005 และ 2012) วันนี้ที่ฉันหวังว่าจะมีคนอธิบาย เคียวรีที่ทำการเปรียบเทียบโดยใช้=ในเขตข้อมูล NVARCHAR จะละเว้นพื้นที่ต่อท้ายในสตริง (หรือตัดค่าอัตโนมัติก่อนการเปรียบเทียบ) แต่แบบสอบถามเดียวกันโดยใช้ตัวlikeดำเนินการไม่ได้เพิกเฉยพื้นที่ การจัดเรียงที่ใช้คือ Latin1_General_CI_AS ในปี 2012 พิจารณาซอ Fiddle นี้: http://sqlfiddle.com/#!6/72262/4 โปรดสังเกตว่าตัวlikeดำเนินการไม่ส่งคืนผลลัพธ์สำหรับสตริงช่องว่างต่อท้าย แต่ตัว=ดำเนินการทำ ทำไมนี้ คะแนนโบนัส: ฉันไม่สามารถทำซ้ำสิ่งนี้ในเขตข้อมูล VARCHAR ฉันคิดว่าพื้นที่จะได้รับการจัดการในลักษณะเดียวกันในทั้งสองประเภทข้อมูล - จริงหรือไม่

3
ตาราง MEMORY ชั่วคราวจะคงอยู่นานแค่ไหนถ้าฉันไม่ทำมัน (MySQL)
ฉันใช้โพรซีเดอร์ที่จัดเก็บแบบเรียกซ้ำใน MySQL เพื่อสร้างตารางชั่วคราวที่เรียกว่าid_listแต่ฉันต้องใช้ผลลัพธ์ของโพรซีเดอร์นั้นในแบบสอบถามแบบติดตามผลดังนั้นฉันจึงไม่สามารถDROPใช้ตารางชั่วคราวภายในโพรซีเดอร์ ... BEGIN; /* generates the temporary table of ID's */ CALL fetch_inheritance_groups('abc123',0); /* uses the results of the stored procedure in the WHERE */ SELECT a.User_ID FROM usr_relationships r INNER JOIN usr_accts a ON a.User_ID = r.User_ID WHERE r.Group_ID = 'abc123' OR r.Group_ID IN (SELECT * FROM …

2
อะไรคือข้อเสียของการใช้ Galera Cluster แทน Master / Slave Replication
อะไรคือข้อเสียของการใช้ Galera Cluster แทน Master / Slave Replication ปกติ? เวลาหน่วง 0 ทาสของ Galera, การจำลองแบบซิงโครนัสและไม่มีจุดความล้มเหลวจุดเดียวจึงน่าดึงดูดใจมากแล้วทำไมกลุ่ม Galera ถึงไม่ธรรมดา

1
ใช้มาตรฐาน SQL Server 2012 ด้วย Bitlocker
เรากำลังพยายามใช้ Bitlocker เพื่อรักษาความปลอดภัยฐานข้อมูล SQL Server 2012 เราไม่มีปัญหาใด ๆ ในการทำให้ bitlocker ทำงาน ... ปัญหาที่เรามีคือเมื่อไดรฟ์ถูกล็อค SQL Server จะไม่สามารถอ่านข้อมูลได้อีกต่อไป เรายินดีที่จะใช้ TDE อย่างชัดเจน แต่เนื่องจาก จำกัด รุ่น Enterprise จึงไม่ต้องไป เราเปิดใช้งาน TPM บนเซิร์ฟเวอร์แล้ว นี่เป็นโดเมน Windows และเราใช้การรับรองความถูกต้องของ Windows ... แต่เมื่อไดรฟ์ได้รับการเข้ารหัสเราจะไม่สามารถเข้าถึงฐานข้อมูลด้วยอะไรก็ได้ ฉันหายไปนี่อะไร

2
การเพิ่มดัชนีไปยังตาราง mysql ขนาดใหญ่
ฉันมีโต๊ะ | base_schedule_line_items | สร้างตารางbase_schedule_line_items( idint (10) unsigned NOT NULL AUTO_INCREMENT, installmentint (10) unsigned NOT NULL, on_dateวันที่ NOT NULL, actual_dateวันที่ DEFAULT NULL, payment_typeint (11) NOT NULL, scheduled_principal_outstandingทศนิยม (65,0) NOT NULL, scheduled_principal_dueทศนิยม (65,0) ไม่เป็น NULL, scheduled_interest_outstandingทศนิยม (65,0) ไม่เป็น NULL, scheduled_interest_dueทศนิยม (65,0) ไม่เป็น NULL, currencyint (11) ไม่เป็น NULL, วันที่และเวลา updated_atไม่เป็นค่าเริ่มต้น '2013-01-06 14:29:16', …

3
ฉันต้องการเป็นผู้ดูแลฐานข้อมูล - ฉันจะเริ่มได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันเพิ่งเรียนหลักสูตรฐานข้อมูลในวิทยาลัยของฉันและพบว่ามันน่าสนใจ ฉันต้องการเรียนรู้เพิ่มเติมในสาขานี้ แต่ฉันรู้สึกว่าหายไปเล็กน้อยกับวิธีการเริ่มต้น ฉันจะเป็นผู้ดูแลระบบฐานข้อมูลได้อย่างไร มีเคล็ดลับและกลเม็ดอะไรบ้างในการเข้าสู่สายอาชีพ ฉันเห็นการโพสต์งานมากมายที่ขอประสบการณ์ 5 ปีขึ้นไปและไม่แน่ใจว่าจะเริ่มอย่างไร ฉันควรมองหางานระดับเริ่มต้นหรือไม่ ทักษะลักษณะหรือใบรับรองประเภทใดที่จะช่วยฉันออกหรือช่วยให้ฉันได้รับประสบการณ์มากขึ้น ฉันสนใจ MySQL เป็นส่วนใหญ่

3
ฉันสามารถสร้างประเภทตารางที่ผู้ใช้กำหนดและใช้ในธุรกรรมเดียวกันได้หรือไม่?
เมื่อฉันดำเนินการต่อไปนี้ (ในสตูดิโอการจัดการ GO จะแยกคำสั่งออกเป็นแบทช์) use tempdb begin tran go CREATE TYPE dbo.IntIntSet AS TABLE( Value0 Int NOT NULL, Value1 Int NOT NULL ) go declare @myPK dbo.IntIntSet; go rollback ฉันได้รับข้อความแจ้งข้อผิดพลาดการหยุดชะงัก กระบวนการของฉันหยุดชะงักด้วยตัวเอง ฉันเคยเห็นพฤติกรรมนี้ในปี 2008, 2008R2 และ 2012 มีวิธีใช้ประเภทที่สร้างขึ้นใหม่ของฉันภายในธุรกรรมเดียวกันกับที่สร้างขึ้นหรือไม่

1
วิธีการประเมินการดำเนินงาน I / O ที่ดำเนินการโดยแบบสอบถาม MySQL?
ใน RDS ของ Amazon คุณต้องจ่ายประมาณ $ 0.10 ต่อ 1 ล้านคำขอ I / O ฉันสังเกตเห็นคำขอ I / O จำนวนมาก (เป็นแสน) สำหรับฐานข้อมูลปริมาณการใช้งานที่ต่ำมาก เมื่อเห็นสิ่งนี้ฉันได้ทำการวิจัยเพิ่มเติมและพบคำถามนี้ซึ่งอธิบายว่าสำหรับเว็บไซต์ผู้ใช้ 6,000 แห่งเขาได้สร้างคำขอ I / O 800 ล้านต่อเดือนซึ่งจะทำให้เขาต้องเสียเงินราว ๆ $ 80 / เดือน ดังนั้นฉันต้องการทราบล่วงหน้าว่าจะมีการดำเนินการแบบสอบถาม I / O MySQL จำนวนเท่าใดและจะเพิ่มประสิทธิภาพ / ย่อเล็กสุดได้อย่างไร มีวิธีใดที่จะประมาณจำนวนการดำเนินการของ I / O ที่แบบสอบถามจะดำเนินการและกฎทั่วไปที่ฉันสามารถปฏิบัติตามเพื่อให้ต่ำที่สุดเท่าที่เป็นไปได้
13 mysql 

7
ทำไม PostgreSQL 9.3 จะไม่เริ่มทำงานบน Ubuntu
ฉันได้ติดตั้ง PostgreSQL 9.3 สำเร็จแล้วจากที่เก็บ APT บน Ubuntu 12.04 และ 13.04 ที่รันบน VM 2 อย่างไรก็ตามฉันไม่สามารถติดตั้งบนเครื่องโฮสต์ที่ใช้ Ubuntu 12.04 ได้ ดูเหมือนว่าการติดตั้ง (ในครั้งนี้) จะใช้ได้ แต่อาจมีข้อผิดพลาดที่ฉันไม่เข้าใจ: * No PostgreSQL clusters exist; see "man pg_createcluster" Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ... Creating new cluster 9.3/main ... config /etc/postgresql/9.3/main data /var/lib/postgresql/9.3/main locale en_US.UTF-8 port 5432 update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz …

2
sp_executesql รีเฟรชแผนแบบสอบถามเมื่อใด
คุณจะต้องให้อภัยความไร้เดียงสาของฉันเพราะฉันไม่ใช่ DBA แต่ความเข้าใจของฉันคือเมื่อเวลาผ่านไปสถิติของการเปลี่ยนแปลงฐานข้อมูลและกระบวนการจัดเก็บจะต้องถูกคอมไพล์ใหม่เพื่อให้แผนแบบสอบถามเป็นปัจจุบันด้วยสถิติล่าสุด สมมติว่าฉันมีโพรซีเดอร์ที่เก็บไว้ในฐานข้อมูลของฉันซึ่งถูกคอมไพล์กับสถิติล่าสุดในบางช่วงเวลาปกติความหมายของอินไลน์ซับโพรซีเดอร์ที่เก็บในโค้ดและล้อมรอบในsp_executesqlคำสั่งคืออะไร? ฉันจะสูญเสียการรีเฟรชแผนแบบสอบถามที่เคยเกิดขึ้นเป็นส่วนหนึ่งของการคอมไพล์ใหม่ของขั้นตอนหรือไม่ หากมีสิ่งอื่นใด (นอกเหนือจากสิทธิ์) ที่ฉันต้องพิจารณาก่อนที่จะทำการเปลี่ยนแปลงนี้แล้วฉันขอขอบคุณข้อมูลเชิงลึกของคุณ ฉันอ่านสิ่งนี้ใน MSDN: ความสามารถของเครื่องมือเพิ่มประสิทธิภาพการสืบค้น SQL Server เพื่อจับคู่สตริง Transact-SQL ใหม่กับแผนการดำเนินการที่มีอยู่ถูกขัดขวางโดยค่าพารามิเตอร์ที่เปลี่ยนแปลงตลอดเวลาในข้อความของสตริงโดยเฉพาะอย่างยิ่งในงบ Transact-SQL ที่ซับซ้อน ดังนั้นสมมติว่ากระบวนการที่เก็บไว้ฉันพยายาม in-line และ wrap ในsp_executesqlนั้นมีพารามิเตอร์บางอย่างแน่นอนนี่คือการบอกว่าแม้ว่าแผนการดำเนินการของฉันจะถูกแคชฉันทำให้ SQL Server สามารถค้นหาและนำกลับมาใช้ใหม่ได้ยากขึ้นหรือไม่

1
การกำหนดค่า Cassandra multidatacenter พร้อม 1 ip ภายนอก
ฉันกำลังพยายามตั้งค่าคลัสเตอร์ Cassandra หลายศูนย์ข้อมูล ปัญหาคือดาต้าเซ็นเตอร์ของฉันมีเพียง 1 IP ภายนอก (wan IP) ฉันสามารถตั้งค่าการส่งต่อพอร์ตบนสวิตช์ของศูนย์ข้อมูลเพื่อเข้าถึงแต่ละโหนดจากโลกภายนอกโดยใช้พอร์ตที่แตกต่างกัน แต่ฉันไม่รู้วิธีตั้งค่าคาสซานดรา ไฟล์. yaml อย่างถูกต้อง มีวิธีการตั้งค่าคลัสเตอร์ Cassandra หลายศูนย์ในสถานการณ์นี้หรือไม่? ขอบคุณล่วงหน้า!
13 cassandra 

2
PostgreSQL แตกต่างระหว่าง VACUUM FULL และ CLUSTER
ฉันมีตารางที่มีข้อมูลขนาด 200 GB และมีขนาด 180 GB โดยดัชนี 6 รายการ มันบวม 30% ดังนั้นฉันต้องการเรียกคืนพื้นที่ที่ไม่ต้องการครอบครอง มันเป็นคลัสเตอร์ในjob_id_idดัชนี x ดังนั้นเพื่อเรียกคืนพื้นที่ฉันต้องใช้clusterคำสั่งหรือvacuum fullคำสั่ง? ความแตกต่างระหว่างสองคำสั่งนี้คืออะไร? คือvacuum fullการสั่งซื้อตามคอลัมน์บางเช่นเดียวกับclusterคำสั่ง? ดัชนีถูกสร้างขึ้นใหม่ทั้งในคำสั่งหรือไม่? ในกรณีของฉันอันไหนจะเร็วกว่ากัน? เวอร์ชันของฐานข้อมูล PostgreSQL คือ 9.1

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