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

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

2
ดัชนีต้องครอบคลุมคอลัมน์ที่เลือกทั้งหมดเพื่อให้ ORDER BY ใช้หรือไม่
เมื่อเร็ว ๆ นี้ที่บางคนถามว่าทำไมไม่สั่งโดยใช้ดัชนี? สถานการณ์เกี่ยวข้องกับตาราง InnoDB อย่างง่ายใน MySQL ประกอบด้วยสามคอลัมน์และ 10k แถว หนึ่งในคอลัมน์เป็นจำนวนเต็มถูกทำดัชนี - และ OP พยายามดึงตารางทั้งหมดของเขาที่เรียงลำดับในคอลัมน์นั้น: SELECT * FROM person ORDER BY age เขาแนบEXPLAINเอาท์พุทแสดงว่าแบบสอบถามนี้ได้รับการแก้ไขด้วยfilesort(แทนที่จะเป็นดัชนี) และถามว่าทำไมจึงเป็นเช่นนั้น แม้จะมีคำใบ้ FORCE INDEX FOR ORDER BY (age) ที่ก่อให้เกิดดัชนีที่จะใช้ , คนตอบ (กับการสนับสนุนความเห็น / upvotes จากคนอื่น ๆ ) ว่าดัชนีจะใช้เฉพาะสำหรับการเรียงลำดับเมื่อคอลัมน์ที่เลือกจะอ่านทั้งหมดจากดัชนี (เช่นเป็นปกติจะระบุโดยUsing indexในExtraคอลัมน์ ของEXPLAINเอาท์พุท) คำอธิบายที่ได้รับในภายหลังว่าภายในดัชนีแล้วเรียกคอลัมน์จากผลตารางในการสุ่ม I / O filesortซึ่งมุมมองที่เป็นราคาแพงกว่า สิ่งนี้ดูเหมือนจะปรากฏในหน้าของบทที่เกี่ยวกับORDER …
15 mysql  index  innodb  order-by 

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

1
ทางเลือกของวิธีการรับรองความถูกต้องสำหรับแอพทางการเงินใน PostgreSQL
ก่อนอื่นให้พื้นหลัง โครงการ LedgerSMB เป็นโครงการซอฟต์แวร์บัญชีการเงินที่ทำงานบน PostgreSQL เราใช้ตรรกะทางธุรกิจจำนวนมากในฟังก์ชั่นที่ผู้ใช้กำหนดซึ่งทำหน้าที่เป็นเครื่องมือการแมปหลักระหว่างวิธีการวัตถุของโปรแกรมและพฤติกรรมฐานข้อมูล ขณะนี้เราใช้ผู้ใช้ฐานข้อมูลเป็นผู้ใช้การพิสูจน์ตัวตนส่วนหนึ่งเป็นตัวเลือก (สิ่งนี้อนุญาตให้ตรรกะความปลอดภัยส่วนกลางเพื่อให้เครื่องมืออื่น ๆ สามารถเขียนและใช้สิทธิ์ที่ให้แก่ผู้ใช้) และอีกส่วนตามความจำเป็น (หลังจากเราแยกจาก SQL-Ledger ไม่มีตัวเลือกมากมายสำหรับการปรับเปลี่ยนการรักษาความปลอดภัยไปยัง codebase นั้น) วิธีนี้ทำให้เราสามารถเข้าถึงตัวเลือกการลงชื่อเข้าใช้เพียงครั้งเดียวที่ PostgreSQL สามารถเข้าถึงได้ตั้งแต่ LDAP ไปจนถึง Kerberos 5. เราสามารถใช้ PAM ที่เกี่ยวข้องกับรหัสผ่าน นอกจากนี้ยังช่วยให้เราสามารถใช้สิทธิ์อีกครั้งเมื่อรวมกับแอปพลิเคชันอื่นหรืออนุญาตให้ส่วนต่อประสานลูกค้าอื่น ๆ สำหรับแอปพลิเคชันการบัญชีการเงินดูเหมือนว่าจะชนะสุทธิ มีค่าใช้จ่ายที่เกี่ยวข้องอย่างชัดเจน สำหรับเว็บแอปพลิเคชันเรา จำกัด ประเภท http auth ที่สามารถรองรับได้มาก ตัวอย่างเช่น DIGEST นั้นหมดไปแล้ว การทำงานพื้นฐานและเราสามารถใช้ KRB5 ได้ง่ายพอ (ฉันวางแผนว่าจะให้การสนับสนุนและทำงานนอกกรอบสำหรับ 1.4) มาตรการการรับรองความถูกต้องที่แข็งแกร่งมากไม่สามารถจัดการได้อย่างถูกต้องโดยตรงแม้ว่าเราอาจจะสามารถกำหนดมาตรการเหล่านี้ได้ในกรณีที่จำเป็น (ตัวอย่างเช่นใบรับรอง SSL BASIC + ฝั่งไคลเอ็นต์ที่มี …

3
การลดขนาดบันทึกการทำธุรกรรมตกลงเพื่อทำบนฐานข้อมูลจริงหรือไม่?
ใน Microsoft SQL Server 2005 ตกลงเพื่อลดขนาดไฟล์บันทึกของฐานข้อมูลออนไลน์หรือไม่หรือจะทำให้การบริการหยุดชะงักหรือไม่

2
การออกแบบโมดูลการควบคุมอัตโนมัติของผู้ใช้ (บทบาทและสิทธิ์)
ฉันพยายามสร้างโมเดลโมดูลการพิสูจน์ตัวตนผู้ใช้สำหรับฐานข้อมูล MS SQL Server ที่จะเป็นแบ็คเอนด์ไปยังแอปพลิเคชัน Delphi UI โดยทั่วไปฉันต้องการมีบัญชีผู้ใช้ที่ผู้ใช้อยู่ในกลุ่มเดียวเท่านั้น กลุ่มสามารถมีจำนวนสิทธิ์ "n" ฉันต้องการเพิ่มประวัติรหัสผ่านในฐานข้อมูลเนื่องจากผู้ใช้จะต้องเปลี่ยนรหัสผ่านตามการตั้งค่าแอปพลิเคชัน (ตัวอย่างเช่นทุก ๆ 90 วัน) ฉันต้องการบันทึกกิจกรรมในแต่ละครั้งที่ผู้ใช้ลงชื่อเข้าและออก ฉันอาจขยายสิ่งนี้ไปยังกิจกรรมเพิ่มเติมในอนาคต ด้านล่างคุณจะพบรอยแตกครั้งแรกของฉันที่มัน โปรดแจ้งให้ฉันทราบข้อเสนอแนะเพื่อปรับปรุงตามนี้เป็นครั้งแรกของฉันทำเช่นนี้ คุณเห็นความต้องการคุณลักษณะเพิ่มเติมสำหรับการรักษาความปลอดภัยตามบทบาทและข้อ จำกัด สำหรับกฎรหัสผ่าน / รอบระยะเวลาหมดอายุหรือไม่?

7
วิธีค้นหาฐานข้อมูล MySQL ด้วยฟิลด์ที่เข้ารหัส
สมมติว่าฉันต้องเข้ารหัสเขตข้อมูลตารางของฐานข้อมูลMySQL นอกจากนี้ฉันต้องค้นหาบางช่องที่ฉันเข้ารหัส เราจะค้นหาช่องเหล่านั้นได้อย่างไร การถอดรหัสแต่ละระเบียนทีละขั้นตอนไม่มีตัวเลือก:สมมติว่าฉันมีหลายพันรายการ จะใช้เวลาและเนื้อที่มากเกินไปในการถอดรหัสแต่ละระเบียนและตรวจสอบว่าแต่ละระเบียนเดี่ยวตรงกับการค้นหาหรือไม่ อัพเดท 2012-09-07 การเพิ่มรายละเอียดเพิ่มเติมไปยังสคีมาฐานข้อมูลจะเป็นไปได้เนื่องจากฉันกำลังจะใช้แอปพลิเคชันใหม่ นอกจากนี้ฉันต้องขยายแอปพลิเคชันที่กำลังทำงานอยู่ในปัจจุบัน แต่สำหรับแอปพลิเคชั่นเหล่านั้นการเพิ่มรายละเอียดเพิ่มเติมก็ถือว่าใช้ได้ อัพเดท 2012-09-08 การเข้ารหัสเป็นเคอร์เนลของคำถามนี้ ข้อ จำกัด การเข้าถึงตามที่เสนอโดยคำตอบบางข้อได้นำไปใช้แล้ว แต่ไม่ตรงกับข้อกำหนดที่เป็นทางการในการเข้ารหัสข้อมูล ข้อกำหนดอย่างเป็นทางการนี้ไม่ใช่ มาตรฐานความปลอดภัยของข้อมูลอุตสาหกรรมบัตรชำระเงิน [PCI]
15 mysql 

2
ดูอย่างรวดเร็วว่ามีการจัดสรร RAM ไปยัง SQL Server เท่าใด
ด้วย SQL Server 2005 คุณสามารถดูที่ Task Manager และอย่างน้อยให้ดูคร่าวๆว่าหน่วยความจำจัดสรรให้กับ SQL Server เท่าใด ด้วย SQL Server 2008 ชุดการทำงานหรือขนาดการส่งมอบจะไม่สูงเกินกว่า 500 MB แม้ว่า SQLServer: ตัวนับหน่วยความจำ / เซิร์ฟเวอร์รวมหน่วยความจำเซิร์ฟเวอร์ (KB) จะแสดงสถานะ 16,732,760 มีการตั้งค่าที่จะแสดงหน่วยความจำเซิร์ฟเวอร์จริง ๆ ใน Task Manager หรือไม่? หรือเป็นผลมาจากพวกเขาเปลี่ยนวิธีการใช้หน่วยความจำใน SQL Server

1
มีเหตุผลที่ฉันไม่ควรตั้งเจ้าของ db เป็น [sa] หรือไม่?
เมื่อวานนี้ฉันถามคำถามนี้เกี่ยวกับการเปลี่ยน dbo ของหลายฐานข้อมูลที่ฉันมี การเปลี่ยนแปลงนั้นสมเหตุสมผล แต่ฉันต้องการชัดเจน มีเหตุผลหรือสถานการณ์ที่ดีว่าทำไมฉันไม่ควรตั้งค่า dbo ของฐานข้อมูลเป็น [sa]?

1
SQL Server รู้ว่าภาคแสดงมีความสัมพันธ์กันอย่างไร
ในขณะที่การวิเคราะห์แบบสอบถาม SQL Server 2008 R2 ด้วยการประมาณค่า cardinality ที่ไม่ดี (แม้จะมีการทำดัชนีอย่างง่ายสถิติที่ทันสมัย ​​ฯลฯ ) และด้วยเหตุนี้แผนการสืบค้นที่ไม่ดีฉันพบบทความ KB ที่เกี่ยวข้องบางที: การ แก้ไข: ประสิทธิภาพแย่เมื่อคุณเรียกใช้แบบสอบถาม ที่ประกอบด้วยสหสัมพันธ์และเพรดิเคตใน SQL Server 2008 หรือใน SQL Server 2008 R2 หรือใน SQL Server 2012 ฉันสามารถเดาได้ว่าบทความ KB หมายถึงอะไรโดย "มีความสัมพันธ์" เช่นภาคแสดงข้อ 2 และภาคส่วน # 1 ส่วนใหญ่กำหนดเป้าหมายไปที่แถวเดียวกัน แต่ฉันไม่รู้ว่า SQL Server รู้เกี่ยวกับสหสัมพันธ์เหล่านี้อย่างไร ตารางต้องการดัชนีหลายคอลัมน์ที่มีคอลัมน์จากเพรดิเคตทั้งสองหรือไม่ SQL ใช้สถิติเพื่อตรวจสอบว่าค่าจากคอลัมน์หนึ่งมีความสัมพันธ์กับอีกคอลัมน์หนึ่งหรือไม่? หรือมีวิธีอื่นที่ใช้? ฉันขอสิ่งนี้ด้วยสองเหตุผล: เพื่อกำหนดว่าตารางและแบบสอบถามใดของฉันอาจได้รับการปรับปรุงโดยใช้โปรแกรมแก้ไขด่วนนี้ …

3
สร้างฟังก์ชั่นใหม่ด้วยรหัสถ้ามันไม่มีอยู่
ฉันต้องการสร้างฟังก์ชั่นใหม่ตามสคริปต์ในฐานข้อมูลของฉัน รหัสสคริปต์ด้านล่าง: IF Exists(Select * From sys.sysobjects A Where A.name =N'fn_myfunc' and xtype=N'FN') return; CREATE FUNCTION fn_myfunc () returns varchar(10) AS Begin ... End แต่เมื่อฉันรันสคริปต์ข้างต้น SQL Server จะส่งคืนข้อผิดพลาด: 'CREATE FUNCTION' must be the first statement in a query batch.

2
ชนิดข้อมูลสำหรับเก็บอาร์เรย์ของแฟล็ก (อาเรย์บิตแมป / บิต)
ฉันต้องการจัดเก็บบิตอาร์เรย์สำหรับแต่ละระเบียนของตารางสนับสนุนการดำเนินการต่อไปนี้: ทดสอบว่าตั้งบิตไว้หรือไม่และตั้งค่าบิต (โดยใช้ SQL) การสืบค้นและการตั้งค่าโดยใช้ ADO 2.8 (ไม่ใช่ ADO.NET) การจัดทำดัชนี (เพื่อรับประโยชน์จากคุณสมบัติ "ครอบคลุมดัชนี") จำนวนสูงสุดของบิตจะถูกเก็บไว้ในอาร์เรย์นี้ได้รับการแก้ไขแต่อาจเกิน 32 นั่นคือคอลัมน์intแบบง่าย ๆไม่ได้ผลเสมอไป จากสิ่งที่ฉันเห็นมาจนถึงตอนนี้ตัวเลือกของฉันคือ: ใช้คอลัมน์intหลายรายการ ใช้bigint (ทำงานตราบเท่าที่จำนวนบิตคือ <= 64) ใช้เลขฐานสอง ? ตัวเลือกแรกจะใช้งานได้ แต่ต้องการการรีแฟคเตอร์เล็กน้อยในรหัสที่เข้าถึงข้อมูล ตัวเลือกที่สองเป็นการผ่อนปรนชั่วคราวเท่านั้นและจากการค้นหาของฉันจนถึงตอนนี้ฉันไม่แน่ใจว่า ADO ทำงานได้ดีกับbigintหรือไม่ ฉันไม่มีประสบการณ์กับไบนารีและฉันไม่ได้ตระหนักถึงตัวเลือกอื่น ๆ คุณต้องการเลือกชนิดข้อมูลแบบใดตามข้อกำหนด

4
เรียงลำดับที่ระบุในคีย์หลัก แต่การเรียงลำดับจะถูกดำเนินการบน SELECT
ฉันจัดเก็บข้อมูลเซ็นเซอร์ในตารางSensorValues ตารางและคีย์หลักมีดังนี้: CREATE TABLE [dbo].[SensorValues]( [DeviceId] [int] NOT NULL, [SensorId] [int] NOT NULL, [SensorValue] [int] NOT NULL, [Date] [int] NOT NULL, CONSTRAINT [PK_SensorValues] PRIMARY KEY CLUSTERED ( [DeviceId] ASC, [SensorId] ASC, [Date] DESC ) WITH ( FILLFACTOR=75, DATA_COMPRESSION = PAGE, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY …

2
ตารางคิว FIFO สำหรับพนักงานหลายคนใน SQL Server
ฉันพยายามตอบคำถาม stackoverflow ต่อไปนี้: ฉันควรใช้วิธีการล็อค SQL Server 2005/2008 แบบใดในการประมวลผลแถวของตารางแต่ละแถวในหลาย ๆ กรณีของแอพพลิเคชันเซิร์ฟเวอร์ หลังจากโพสต์คำตอบที่ไร้เดียงสาฉันคิดว่าฉันจะเอาเงินของฉันไปที่ปากของฉันและทดสอบสถานการณ์จริง ๆที่ฉันแนะนำเพื่อให้แน่ใจว่าฉันไม่ได้ส่ง OP ออกไปในการไล่ล่าห่านป่า มันกลายเป็นว่าหนักกว่าที่ฉันคิดไว้มาก (ไม่แปลกใจสำหรับทุกคนฉันแน่ใจ) นี่คือสิ่งที่ฉันได้ลองและคิดเกี่ยวกับ: ครั้งแรกที่ฉันพยายาม TOP 1 UPDATE กับ ORDER BY ROWLOCK, READPASTภายในตารางมาใช้ สิ่งนี้ทำให้เกิดการหยุดชะงักและยังประมวลผลรายการที่ผิดปกติ จะต้องใกล้เคียงกับ FIFO เท่าที่จะทำได้ยกเว้นข้อผิดพลาดที่ต้องพยายามประมวลผลแถวเดียวกันมากกว่าหนึ่งครั้ง ฉันก็พยายามเลือก QueueID ถัดไปต้องการลงในตัวแปรโดยใช้ชุดต่างๆของREADPAST, UPDLOCK, HOLDLOCKและROWLOCKเพื่อรักษาเฉพาะแถวสำหรับการปรับปรุงโดยเซสชั่นที่ รูปแบบทั้งหมดที่ฉันลองใช้นั้นประสบปัญหาเดียวกันกับที่เคยมีมาก่อนและสำหรับการรวมกันบางอย่างกับREADPAST: คุณสามารถระบุล็อค READPAST ในระดับการแยก READ COMMITTED หรือ REPEATABLE READ สิ่งนี้ทำให้เกิดความสับสนเพราะเป็นข้อผูกมัดที่ต้องอ่าน ฉันเคยพบเจอสิ่งนี้มาก่อนและมันน่าหงุดหงิด ตั้งแต่ฉันเริ่มเขียนคำถามนี้ Remus Rusani โพสต์คำตอบใหม่สำหรับคำถาม …

3
ทรัพยากร NoSQL มาตรฐานของ Canonical สำหรับผู้ที่ไม่เคยใช้เทคโนโลยีนี้คืออะไร
ฉันได้รับความสนใจมากขึ้นเรื่อย ๆ จากเทคโนโลยี NoSQL และฉันสามารถอ่านบทความหลายเรื่องเกี่ยวกับการทำงานของ SE และผลิตภัณฑ์ที่แตกต่างกันได้ อย่างไรก็ตามฉันสงสัยว่ามีตัวอย่างหนังสืออ้างอิงหรือบทความที่เป็นที่ยอมรับซึ่งเราสามารถใส่ไว้ในรายงานการวิจัยได้หรือไม่และเราสามารถอ่านเพื่อให้ได้ภาพรวมที่ดีของ: ประโยชน์ / ข้อเสียคืออะไร? มันทำงานอย่างไร?
15 nosql 

4
การเปิดและปิดการเชื่อมต่อฐานข้อมูลมีค่าใช้จ่ายเท่าใด
ซีพียูเข้มข้นเปิดและปิดการเชื่อมต่อฐานข้อมูล (สำหรับเว็บแอป) ใน MySQL อย่างไร ... เมื่อซอฟต์แวร์ DB อยู่บน localhost ... เมื่อซอฟต์แวร์ DB อยู่ในเครื่องอื่น

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