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

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

3
การนำเข้าการถ่ายโอนข้อมูล mysql ช้ามากบนเครื่องของนักพัฒนาของฉัน
ฉันมี SQL dump มันใหญ่มาก (411 MB) และใช้เวลา 10 นาทีในการนำเข้าบนเซิร์ฟเวอร์ A การนำเข้าเดียวกันบนเวิร์กสเตชัน B ของฉันมีการประเมิน (pipeviewer) 8 ชั่วโมงเพื่อนำเข้า (มันนำเข้า 31 MB ใน 40 นาที ) นี่คือปัจจัย 53 ที่ช้ากว่า รายละเอียด: Server A: MySQL Version: 5.5.30-1.1 (Debian) 2 GB RAM 1 core QEMU Virtual CPU version 1.0 - cpu MHz: 3400.020 Workstation B: MySQL …

1
ขีด จำกัด ขนาดของอักขระต่างกันไป Postgresql
ขีด จำกัด ขนาดของประเภทข้อมูลต่างๆใน postgresql คือเท่าไหร่ ผมเห็นบางที่สำหรับcharacter varying(n), varchar(n) nต้องอยู่ระหว่าง 1 ถึง 10485760. ว่าเป็นความจริง? อะไรคือขนาดที่ถูกต้องสำหรับcharacter(n), char(n)และtext?

1
ใน SQL Server เหตุใดการสแกนย้อนหลังของดัชนีคลัสเตอร์จึงไม่สามารถใช้การขนานได้
ฉันอ่านเกี่ยวกับ SQL Server internals และหนังสือหรือบล็อกทุกฉบับที่กล่าวถึงเรื่องการสแกนย้อนหลัง การสแกนย้อนหลังของดัชนีคลัสเตอร์ไม่สามารถใช้การขนาน โพสต์เดียวที่กล่าวถึงบางสิ่งอยู่ด้านล่างนี้ โพสต์บอกว่าทีม SQL Server ไม่ได้ใช้การปรับให้เหมาะสมที่จำเป็นสำหรับการสแกนย้อนหลัง https://www.itprotoday.com/sql-server/descending-indexes เนื่องจากเพจระดับลีฟนั้นถูกเชื่อมโยงโดยใช้ลิสต์ที่มีการลิงก์ซ้ำกันสองครั้งฉันไม่เข้าใจว่าทำไมการสแกนย้อนหลังจึงแตกต่างจากการสแกนไปข้างหน้า การชี้แจงใด ๆ ที่ชื่นชมจริง ๆ

5
เป็นการดีที่สุดที่จะหลีกเลี่ยงการใช้พอร์ตเริ่มต้นสำหรับ SQL Server หรือไม่
ในอดีตนั้นไม่แนะนำให้ใช้พอร์ตเริ่มต้นสำหรับการเชื่อมต่อกับ SQL Server ซึ่งเป็นส่วนหนึ่งของแนวปฏิบัติด้านความปลอดภัยที่ดีที่สุด บนเซิร์ฟเวอร์ที่มีอินสแตนซ์เริ่มต้นเดียวจะใช้พอร์ตต่อไปนี้เป็นค่าเริ่มต้น: บริการ SQL Server - พอร์ต 1433 (TCP) บริการเบราว์เซอร์เซิร์ฟเวอร์ SQL - พอร์ต 1434 (UDP) การเชื่อมต่อผู้ดูแลระบบเฉพาะ - พอร์ต 1434 (TCP) คำถาม: คำแนะนำนี้ยังเกี่ยวข้องหรือไม่? ควรเปลี่ยนพอร์ตด้านบนทั้งหมดหรือไม่

1
จำนวนการเชื่อมต่อที่ใช้งานและการเชื่อมต่อที่เหลือ
ฉันต้องการรับสถิติเกี่ยวกับจำนวนการเชื่อมต่อสูงสุดในช่วงระยะเวลาหนึ่ง ฉันรู้ว่าpg_stat_activityมุมมองชอบselect count(*) from pg_stat_activityแต่ฉันคิดว่าวิธีนี้ไม่ฉลาดมาก มีมุมมองหรือตารางอื่น ๆ ที่สามารถให้ข้อมูลที่ฉันต้องการได้หรือไม่?

6
การฉีด SQL Server - ความเสียหายเท่าไหร่ใน 26 ตัวอักษร?
ฉันกำลังทดสอบความยืดหยุ่นจากการโจมตีของการฉีดในฐานข้อมูล SQL Server ชื่อตารางในฐานข้อมูลเป็นกรณีที่ต่ำกว่าและการเปรียบเทียบเป็นกรณีที่มีความไวLatin1_General_CS_AS สตริงที่ฉันสามารถส่งถูกบังคับให้พิมพ์ใหญ่และสามารถมีความยาวสูงสุด 26 อักขระ ดังนั้นฉันไม่สามารถส่งเป็นตาราง DROP ได้เนื่องจากชื่อตารางจะเป็นตัวพิมพ์ใหญ่และดังนั้นคำสั่งจะล้มเหลวเนื่องจากการเปรียบเทียบ ดังนั้น - ความเสียหายสูงสุดที่ฉันสามารถทำได้ใน 26 ตัวละครคืออะไร? แก้ไข ฉันรู้ทั้งหมดเกี่ยวกับข้อความค้นหาที่กำหนดพารามิเตอร์และอื่น ๆ - ลองจินตนาการว่าบุคคลที่พัฒนาส่วนหน้าที่สร้างคิวรีเพื่อส่งไม่ได้ใช้พารามิเตอร์ในกรณีนี้ ฉันยังไม่ได้พยายามทำอะไรชั่วร้ายนี่เป็นระบบที่สร้างโดยคนอื่นในองค์กรเดียวกัน

4
เพราะเหตุใด INSERT BULK จึงถือว่าเป็นอันตราย
คำถามนี้ถูกย้ายจากการแลกเปลี่ยนความปลอดภัยข้อมูลกองซ้อนเนื่องจากสามารถตอบได้ในการแลกเปลี่ยนผู้ดูแลฐานข้อมูล อพยพ 2 ปีที่แล้ว ฉันต้องการที่จะเข้าใจว่าทำไมทีมรักษาความปลอดภัยทางไซเบอร์โดยทั่วไป (มากกว่าหนึ่งองค์กรที่ฉันจัดการ) ถูกตั้งค่าให้ตายต่อการให้สิทธิ์BULK INSERT(เช่น TSQL) กับแอปพลิเคชันและโปรแกรมเมอร์ฐานข้อมูล ฉันไม่อยากจะเชื่อข้อแก้ตัว "เติมดิสก์ที่ไม่เหมาะสม" เว้นแต่ฉันจะพลาดบางสิ่งเนื่องจากผลลัพธ์ที่ได้ไม่ต่างจากแอพพลิเคชั่นที่ทำสิ่งต่อไปนี้: for (long i = 0; i < LONG_MAX; ++i) executeSQL("INSERT INTO table VALUES(...)"); และINSERTเป็นคำสั่ง DML ทั่วไปที่ทุกคนที่มีสิทธิ์เขียนขั้นพื้นฐานสามารถดำเนินการได้ เพื่อประโยชน์ของแอปพลิเคชันBULK INSERTมีประสิทธิภาพมากขึ้นเร็วขึ้นและบรรเทาความต้องการโปรแกรมเมอร์ในการแยกวิเคราะห์ไฟล์นอก SQL แก้ไข: เดิมฉันถามคำถามนี้ในเว็บไซต์ความปลอดภัยของข้อมูลด้วยเหตุผล - ไม่ใช่ DBA ที่ขัดกับการใช้ BULK INSERT มันคือ "การรับรองข้อมูล" (IA สำหรับย่อ - กลุ่มความปลอดภัยทางไซเบอร์) ที่บังคับให้ออก ฉันจะปล่อยให้คำถามนี้ตุ๋นอีกหนึ่งหรือสองวัน แต่ถ้าการดำเนินการเป็นกลุ่มทำผ่านข้อ จำกัด …

6
วิธีการพิสูจน์การขาดคำสั่งโดยนัยในฐานข้อมูลหรือไม่
เมื่อเร็ว ๆ นี้ฉันอธิบายให้เพื่อนร่วมงานทราบถึงความสำคัญของการมีคอลัมน์ที่จะเรียงลำดับข้อมูลในตารางฐานข้อมูลหากจำเป็นต้องทำเช่นสำหรับข้อมูลที่เรียงตามลำดับเวลา สิ่งนี้พิสูจน์ได้ค่อนข้างยากเพราะพวกเขาสามารถเรียกใช้คิวรีของพวกเขาอีกครั้งโดยไม่สิ้นสุดและจะส่งคืนชุดของแถวเดียวกันในลำดับเดียวกันเสมอ ฉันได้สังเกตสิ่งนี้มาก่อนและสิ่งที่ฉันทำได้จริงๆคือยืนยันว่าพวกเขาเชื่อใจฉันและไม่เพียงแค่คิดว่าตารางฐานข้อมูลจะทำตัวเหมือนไฟล์ CSV หรือ Excel แบบดั้งเดิม ตัวอย่างเช่นการดำเนินการแบบสอบถาม (PostgreSQL) create table mytable ( id INTEGER PRIMARY KEY, data TEXT ); INSERT INTO mytable VALUES (0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'), (7, 'h'), (8, 'i'), (9, 'j'); จะสร้างตารางที่มีลำดับความคิดที่ชัดเจน การเลือกข้อมูลเดียวกันด้วยวิธีที่ง่ายที่สุดคือ: SELECT * …

1
การสแกนค่าคงที่และการเข้าร่วม Outer Left มาจากที่ใดในแผนคิวรี SELECT ที่สำคัญ
ฉันมีตารางนี้: CREATE TABLE [dbo].[Accounts] ( [AccountId] UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWID(), -- WHATEVER other columns ); GO CREATE UNIQUE CLUSTERED INDEX [AccountsIndex] ON [dbo].[Accounts]([AccountId] ASC); GO แบบสอบถามนี้: DECLARE @result UNIQUEIDENTIFIER SELECT @result = AccountId FROM Accounts WHERE AccountId='guid-here' ดำเนินการกับแผนแบบสอบถามประกอบด้วยดัชนีแสวงหาเดียว - ตามที่คาดไว้: SELECT <---- Clustered Index Seek แบบสอบถามนี้ไม่เหมือนกัน: DECLARE @result …

7
MariaDB ไม่สามารถเริ่มบันทึก tc
ฉันได้ลองวิธีแก้ปัญหาทุกอย่างบนอินเทอร์เน็ตแล้ว แต่เซิร์ฟเวอร์ MariaDb ของฉันยังคงล้มเหลวทรยศต่อให้ฉันทำลายโลก DevOps เล็ก ๆ ของฉันต่อไป ความพยายามของฉันในการทำให้สถานการณ์ราบรื่นขึ้นรวมถึงความพึงพอใจทุกประเภท: การเปลี่ยนการอนุญาตการกำหนดค่าการลบไฟล์บันทึกการอัปเกรด / การติดตั้งใหม่การย้ายไฟล์ภายในของเธอขึ้น ๆ แล้วย้าย DBMS อื่น ๆ ต่อต้านมากมานาน ความหวังสุดท้ายและข้อเดียวของฉันสำหรับพวกคุณที่จะให้แสงสว่างผ่านช่วงเวลาที่สำคัญเช่นนี้ในความสัมพันธ์ของเรา ฉันกำลังใช้คนจรจัดและปัญหาคือdatadirตัวเลือก - เมื่อฉันใช้เส้นทางเริ่มต้นทุกอย่างก็โอเค แต่เมื่อฉันเปลี่ยนเป็นโฟลเดอร์แชร์ที่คนจรจัดมาเรียก็ไม่ได้เริ่มเลย ฉันได้คัดลอกไฟล์ / var / lib / mysql ทั้งหมดไปยังโฟลเดอร์ใหม่แล้ว ฉันมีโฮสต์ Windows แขกของ Centos และการกำหนดค่าของฉันคือ: รุ่น MariaDb: mysql Ver 15.1 Distrib 10.1.17-MariaDB, for Linux (x86_64) using readline 5.1 Vagrantfile: …
21 mariadb  centos 

1
ชุดข้อมูลสถิติ IO- โต๊ะทำงาน / ไฟล์งาน
ฉันกำลังดำเนินการแบบสอบถามที่สร้างแผน: สถิติ IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads …

1
สิ่งใดที่ SQL Server 2014 สามารถใช้งานได้ในโหมดแบตช์
เมื่อมีการใช้ดัชนี columnstore ในแบบสอบถาม SQL Server จะสามารถใช้โหมดแบตช์ เอกสารมีความบางในสิ่งที่สามารถทำงานในโหมดแบทช์และสิ่งที่ไม่สามารถทำได้ โปรดดูแผนแบบสอบถาม (สร้างแรงบันดาลใจ) ต่อไปนี้ซึ่งมีสิ่งน่าแปลกใจจำนวนหนึ่งที่ดำเนินการในโหมดแบทช์ (สีเขียว) (นี่เป็นแผนโดยประมาณฉันใช้แผนจริงเพื่อตรวจสอบว่าโหมดการปฏิบัติจริงเป็นแบทช์จริง ๆ ) โปรดทราบว่าเฉพาะด้านบิลด์ของ T1 เท่านั้นที่ใช้ดัชนี columnstore โพรบอินพุตทั้งหมด (T2 และ T3) เป็นแถว ข้อมูลของพวกเขาดูเหมือนจะเปลี่ยนเป็นโหมดแบทช์ ฉันคิดเสมอว่ามีการใช้งานโหมดแบตช์สำหรับกระแสข้อมูลที่ไหลผ่านด้านโพรบเท่านั้น ดูเหมือนว่าข้อมูลสามารถเปลี่ยนเป็นโหมดแบตช์แม้ว่าจะไม่ได้มาจากดัชนีของคอลัมน์ นั่นทำให้เกิดคำถาม: ทำไม SQL Server ถึงไม่ใช้โหมดแบตช์สำหรับการสืบค้นแบบแถวเรียงเท่านั้นเช่นกัน อาจเป็นประโยชน์สำหรับบางคน การใช้ดัชนี columnstore เป็นข้อกำหนดอย่างเป็นทางการที่จำเป็นเพื่อให้ SQL Server พิจารณาโหมดแบตช์หรือไม่ เราอาจจะเพิ่มตารางดัมมี่แถวศูนย์ด้วยดัชนีแบบคอลัมน์เพื่อกระตุ้นโหมดแบทช์และรับประสิทธิภาพที่เพิ่มขึ้นได้หรือไม่? สิ่งที่สามารถทำงานในโหมดแบตช์ในฐานะของ SQL Server 2014 ได้อย่างแน่นอน

1
สถิติหายไปหลังจากการอัพเดตที่เพิ่มขึ้น
เรามีฐานข้อมูล SQL Server ขนาดใหญ่ที่แบ่งพาร์ติชันโดยใช้สถิติที่เพิ่มขึ้น ดัชนีทั้งหมดได้รับการแบ่งพาร์ติชันแล้ว เมื่อเราพยายามที่จะสร้างพาร์ติชันออนไลน์ใหม่โดยการแบ่งพาร์ติชันสถิติทั้งหมดจะหายไปหลังจากสร้างดัชนีใหม่ ด้านล่างเป็นสคริปต์เพื่อทำซ้ำปัญหาใน SQL Server 2014 ด้วยฐานข้อมูล AdventureWorks2014 --Example against AdventureWorks2014 Database CREATE PARTITION FUNCTION TransactionRangePF1 (DATETIME) AS RANGE RIGHT FOR VALUES ( '20130501', '20130601', '20130701', '20130801', '20130901', '20131001', '20131101', '20131201', '20140101', '20140201', '20140301' ); GO CREATE PARTITION SCHEME TransactionsPS1 AS PARTITION TransactionRangePF1 TO ( [PRIMARY], …

3
การใช้ CPU มีผลต่อค่าใช้จ่ายของการเข้าถึง NUMA จากต่างประเทศหรือไม่
สถานการณ์ สมมติว่าฉันมีเซิร์ฟเวอร์ SQL ที่มี 4 ซ็อกเก็ตแต่ละโหนด 1 NUMA ซ็อกเก็ตแต่ละอันมี 4 คอร์ทางกายภาพ มีหน่วยความจำรวม 512 GB ดังนั้นแต่ละ NUMA node มี RAM 128 GB ตารางคีย์ถูกโหลดลงในโหนด NUMA แรก คำถาม สมมติว่าเรามีปริมาณการอ่านข้อมูลจำนวนมากจากตารางนั้น หากแกนประมวลผลทางกายภาพทั้งหมดของซ็อกเก็ตที่เป็นเจ้าของโหนด NUMA มีการใช้ CPU 100 เปอร์เซ็นต์นั่นจะส่งผลเสียต่อต้นทุนการเข้าถึง NUMA ที่ไม่ใช่ภายในเครื่องที่มาจากซ็อกเก็ตอื่นหรือไม่ หรือในทางกลับกันค่าใช้จ่ายของการเข้าถึง NUMA ที่ไม่ได้อยู่ในพื้นที่นั้นไม่ว่าซ็อกเก็ตนั้นจะยุ่งแค่ไหน? ฉันหวังว่าคำถามของฉันจะสมเหตุสมผล โปรดแจ้งให้เราทราบหากไม่พยายามชี้แจง พื้นหลัง เรามีปัญหาฐานข้อมูลในเซิร์ฟเวอร์การผลิตของเราเมื่อสัปดาห์ที่แล้วและบางส่วนของธุรกิจของเราได้รับผลกระทบมากกว่าคนอื่น ๆ เรามีข้อความค้นหาที่มีการอ่านเชิงตรรกะน้อยกว่า 1 นาที เราดูการใช้งาน CPU โดยรวมประมาณร้อยละ 60 เราไม่ได้ดูการวัดซีพียูเฉพาะซ็อกเก็ต …

5
เหตุใดการส่งข้อมูลที่ชัดเจนนี้ทำให้เกิดปัญหากับเซิร์ฟเวอร์ที่เชื่อมโยงเท่านั้น
ฉันกำลังสืบค้นข้อมูลจากเซิร์ฟเวอร์ที่เชื่อมโยงผ่านมุมมองบนเซิร์ฟเวอร์ต้นทาง มุมมองต้องรวมคอลัมน์มาตรฐานสองสามมาตรฐานเช่นCreated, ModifiedและDeleted, แต่ในกรณีนี้ตารางบนเซิร์ฟเวอร์ต้นทางไม่มีข้อมูลที่เหมาะสม คอลัมน์จึงถูกส่งไปยังประเภทที่เกี่ยวข้องอย่างชัดเจน ฉันอัปเดตมุมมองเปลี่ยนคอลัมน์จาก NULL AS Modified ไปยัง CAST(NULL as DateTime) as Modified อย่างไรก็ตามหลังจากดำเนินการอัปเดตนี้มุมมองกำลังเรียกใช้ข้อความแสดงข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 7341 ระดับ 16 สถานะ 2 บรรทัด 3 ไม่สามารถรับค่าแถวปัจจุบันของคอลัมน์ "(นิพจน์ที่ผู้ใช้สร้างขึ้น). Expr1002" จากผู้ให้บริการ OLE DB "SQLNCLI11" สำหรับเซิร์ฟเวอร์ที่เชื่อมโยง "" เราได้ทำ "การแปลงที่ชัดเจน" โดยทั่วไปทั่วเซิร์ฟเวอร์ต้นทางโดยไม่ต้องกังวลและฉันสงสัยว่าปัญหาอาจเกี่ยวข้องกับรุ่นของเซิร์ฟเวอร์ที่เกี่ยวข้อง เราไม่จำเป็นต้องใช้นักแสดงนี้ แต่มันรู้สึกสะอาดขึ้น ตอนนี้ฉันแค่อยากรู้ว่าทำไมสิ่งนี้เกิดขึ้น รุ่นเซิร์ฟเวอร์ (ที่มา): Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 14 พฤษภาคม …

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