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

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

2
ส่งคืนระเบียนด้วยฟังก์ชัน PL / pgSQL - เพื่อเพิ่มความเร็วในการสืบค้น
ฉันมีดีมอนที่ไม่ใช่ forking เขียนใน Perlซึ่งใช้การสอบถาม acync เพื่อเขียนสถิติผู้เล่นลงในฐานข้อมูล PostgreSQL 9.3 แต่เมื่อฉันต้องการอ่านบางสิ่งจากฐานข้อมูล (เช่นถ้าผู้เล่นถูกแบนหรือหากผู้เล่นมีสถานะวีไอพี) จากนั้นฉันจะใช้แบบสอบถามแบบซิงโครนัส สิ่งนี้ทำให้เกมหยุดชั่วขณะหนึ่งจนกว่าจะอ่านค่าจากฐานข้อมูล ฉันไม่สามารถเขียน daemon เกมของฉันใหม่เพื่อใช้การสืบค้นแบบ async สำหรับการอ่านค่า (ฉันพยายาม แต่มันต้องมีการเปลี่ยนแปลงมากเกินไป) ดังนั้นคำถามของฉันคือ : มันจะเป็นการรวมเข้ากับแบบสอบถามที่ไม่เกี่ยวข้องหลายรายการหรือไม่ เชื่อมต่อ) ถึง 1 ขั้นตอนและฉันจะคืนค่าหลายค่าในเวลาเดียวกันไปยังโปรแกรม Perl ของฉันได้อย่างไร ข้อความค้นหาปัจจุบันของฉันทั้งหมดใช้รหัสผู้เล่นเป็นพารามิเตอร์และส่งกลับค่า 1: -- Has the player been banned? select true from pref_ban where id=? -- What is the reputation of this player? …

1
การสร้างดัชนี MySQL ล้มเหลวในตารางเต็ม
UPDATE: tl; dr: ปัญหาคือ MySQL ใช้TMPDIRเมื่อสร้างดัชนี และฉันTMPDIRก็เป็นหนึ่งในพื้นที่ดิสก์หมด ต้นฉบับ Q: ฉันพยายามที่จะเพิ่มดัชนีเพื่อตาราง InnoDB, table is full errorและได้รับการ ฉันมีพื้นที่ดิสก์เพียงพอและการตั้งค่า MySQL มีไฟล์ต่อตาราง = 1 ข้อมูลตารางคือ 85GB และฉันคิดว่าดัชนีจะอยู่ที่ประมาณ 20GB - 30GB และฉันมีพื้นที่ดิสก์มากกว่านั้น ฉันใช้ ext3 ด้วยดังนั้นฉันไม่รู้สึกว่ามีปัญหากับการ จำกัด ขนาดไฟล์จากมุมมองของระบบปฏิบัติการ ข้อผิดพลาดที่บันทึกไว้มีลักษณะดังนี้: 140616 13:04:33 InnoDB: Error: Write to file (merge) failed at offset 3 1940914176. InnoDB: 1048576 bytes should …
10 mysql  innodb  index 

1
ฉันจะ 'บอกใบ้' ความสำคัญของ CTE แบบเรียกซ้ำได้อย่างไร
ฉันใช้ CTE แบบเรียกซ้ำต่อไปนี้เป็นตัวอย่างขั้นต่ำ แต่โดยทั่วไปเครื่องมือเพิ่มประสิทธิภาพจะต้องใช้ค่าเริ่มต้นที่เป็น 'เดา' สำหรับ CTE แบบเรียกซ้ำ with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w; /* n --- 1 2 3 4 5 */ explain analyze with recursive w(n) as ( select 1 union all select n+1 …

1
เป็นวิธีที่ถูกต้องเพื่อให้แน่ใจว่ารายการที่ไม่ซ้ำกันในการออกแบบฐานข้อมูลชั่วคราวคืออะไร?
ฉันมีปัญหากับการออกแบบฐานข้อมูลชั่วคราว ฉันจำเป็นต้องรู้วิธีการตรวจสอบให้แน่ใจว่าฉันมีบันทึกการใช้งานเพียงหนึ่งเดียวสำหรับระยะเวลาที่กำหนดสำหรับร้านค้า ฉันได้อ่านคำตอบนี้แล้ว แต่ฉันเกรงว่าฉันไม่สามารถคาดหัวได้ว่าไกทำงานอย่างไร โดยเฉพาะอย่างยิ่งฉันจะทำงานที่กระตุ้นให้มีอยู่ของฉันที่ป้องกันการปรับปรุงเพื่อบันทึกและแทรกบันทึกใหม่แทน ปัญหาที่แท้จริงของฉันคือฉันไม่รู้วิธีป้องกัน Store จากวันที่มีผลมากกว่าหนึ่งวันเมื่อวันที่เสร็จสิ้นเป็นโมฆะ (เช่นป้องกันการบันทึก 2 รายการสำหรับร้านค้า) นี่คือสิ่งที่ฉันมี แต่มันช่วยให้ฉันสามารถแทรกบันทึกใหม่สำหรับร้านค้าที่มีวันที่มีประสิทธิภาพที่แตกต่างกัน นิยามของตาราง: /****** Object: Table [PCR].[Z_STORE_TEAM] Script Date: 05/09/2014 13:05:57 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Z_STORE_TEAM]') AND type in (N'U')) DROP TABLE [Z_STORE_TEAM] GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id …

1
การออกแบบฐานข้อมูลสำหรับการจัดการ 1 พันล้านแถวและการนับ
เราได้รับข้อมูล GPS แบบเรียลไทม์ในอัตราประมาณ 5,000 ราคา นาที (จากเซิร์ฟเวอร์ TCP 4 แห่ง) แต่ละเซิร์ฟเวอร์ใช้การเชื่อมต่อเดียวเพื่อแทรกข้อมูลและบัฟเฟอร์ข้อมูลระหว่างแทรก ทุกๆ 15 นาทีหรือมากกว่านั้นบริการจะดึงข้อมูลนี้และประมวลผลไปยังการเดินทาง เมื่อสร้างการเดินทางแล้วข้อมูล GPS ที่แท้จริงมักไม่สำคัญนักหากผู้ใช้ต้องการเห็นเส้นทางบนแผนที่ ปัญหาคือดูเหมือนว่าฐานข้อมูลกำลังดิ้นรนเพื่อให้ทันกับอัตราของข้อมูลที่ถูกแทรก บางครั้งเมื่อโหลดเพิ่มขึ้นเวลาใส่เพิ่มสูงขึ้นอย่างกะทันหัน (> 30 วินาที) ซึ่งจะช่วยให้สามารถบัฟเฟอร์ข้อมูลได้มากขึ้นซึ่งจะส่งผลให้เม็ดมีดมีขนาดใหญ่ขึ้น ฉันหวังว่าจะได้รับความคิดเห็นเกี่ยวกับการออกแบบในปัจจุบันและความคิดบางอย่างที่เราต้องปรับปรุงประสิทธิภาพและคำตอบสำหรับคำถามของเรา - และเคล็ดลับอื่น ๆ ที่ผู้คนอาจมี! การออกแบบในปัจจุบัน ขณะนี้ข้อมูลถูกแยกออกเป็นตารางที่แสดงถึงหนึ่งสัปดาห์และข้อมูลที่เก่ากว่าปีถูกเก็บถาวรลงในฐานข้อมูลรอง สิ่งทั้งหมดถูกรวมเข้าด้วยกันในมุมมองที่แก้ไขได้ซึ่งใช้สำหรับแทรกและอ่าน ออกแบบโต๊ะ รหัส (PK, ตัวระบุที่ไม่ซ้ำ) DeviceId (FK, int) PersonId (FK, int) รหัสยานพาหนะ (FK, int) TokenId (FK, int) UtcTime (PK, datetime2 …

2
มีวิธีใดบ้างในการประเมินค่าใช้จ่ายในการดำเนินการสืบค้นใน MySQL หรือไม่?
ใน PostgreSQL นั้น EXPLAIN หรือ EXPLAIN ANALYZE จะแสดงค่าใช้จ่ายโดยประมาณในการดำเนินการสืบค้น แต่อธิบายใน MySQL ไม่ได้ให้ข้อมูลนี้ ฉันจะได้รับค่าประมาณโดยไม่ต้องติดตั้งเครื่องมืออื่น ๆ ได้อย่างไร ฉันใช้ MySQL-5.6.16

4
ฐานข้อมูลการคัดลอก SQL Server 2012 ล้มเหลว
ฉันต้องการทำสำเนาของฐานข้อมูลใน SqlServer เดียวกัน ดังนั้นเมื่อฉันใช้ Copy Database Wizard จะเกิดข้อผิดพลาด: (ฉันทำตามขั้นตอนนี้ด้วยฐานข้อมูลทดสอบและใช้งานได้ดี !!!!) การตั้งค่า: ผู้ใช้ sa วิธีการ: "ใช้วิธีการจัดการวัตถุ SQL" เลือกชื่อใหม่สำหรับฐานข้อมูลปลายทาง ข้อผิดพลาด: TITLE: คัดลอกตัวช่วยสร้างฐานข้อมูล งานล้มเหลว ตรวจสอบบันทึกเหตุการณ์บนเซิร์ฟเวอร์ปลายทางสำหรับรายละเอียด ------------------------------ ปุ่ม: ตกลง ในบันทึกเหตุการณ์: ระบบ ผู้ให้บริการ [ชื่อ] SQLSERVERAGENT กิจกรรม ID 208 [ตัวระบุคุณสมบัติ] 16384 ระดับ 3 งาน 3 คำหลัก 0x80000000000000 TimeCreated [SystemTime] 2014-05-07T06: 23: 11.000000000Z EventRecordID 123672 Channel Application …

2
AlwaysOn Availability Group Failover อัตโนมัติไม่ทำงาน
เล่นกับการตั้งค่า AG ฉันได้ WSFC ขึ้นและกำหนดค่าด้วยสองโหนดในกลุ่มความพร้อมใช้งานหนึ่งกลุ่มที่เรียกว่า DevClusterOnline ทั้งสองโหนด (หลัก DEV-AWEB5, DEV-AWEB6 รอง) กำลังเรียกใช้ Windows Server 2008 R2 หากฉันตรวจสอบสุขภาพของ AG ของฉันฉันจะได้รับสิ่งนี้: การเรียกใช้คิวรีด้านล่างจะส่งคืนชุดผลลัพธ์นี้: select ar.replica_server_name, availability_group_name = ag.name, ar.availability_mode_desc, ar.failover_mode_desc from sys.availability_replicas ar inner join sys.availability_groups ag on ar.group_id = ag.group_id order by availability_group_name, replica_server_name; ถ้าฉันตัดการเชื่อมต่อ DEV-AWEB5 ฉันไม่สามารถเชื่อมต่อกับกลุ่มฟัง (DevListener) แต่ฉันสามารถ ping มันและมันจะตอบสนองต่อ ping …

3
วนลูปผ่านค่าที่ลอก 1 อักขระในแต่ละครั้ง
ฉันต้องการวนลูปผ่านค่าและดึง 1 ตัวอักษรทีละตัวจากค่าและแสดงผลลัพธ์ ดังนั้นถ้าฉันมีตารางที่มีค่า: ID ___ 34679 13390 89906 ฉันต้องการให้ผลลัพธ์เป็นแบบนี้ Id ---- 4679 679 79 9 3390 390 90 0 9906 906 06 6

1
SQL Server 2012: Security_error_ring_buffer_recorded: ImpersonateSecurityContext
เซิร์ฟเวอร์คู่ที่ฉันจัดการกำลังบันทึกเหตุการณ์จำนวนมากในเซสชัน system_health XE ชื่อ : security_error_ring_buffer_recorded api_name : ImpersonateSecurityContext call_api_name : NLShimImpersonate error_code : 5023 error_code 5023 ควรเป็น ( รหัสข้อผิดพลาดระบบ ): ERROR_INVALID_STATE 5023 (0x139F) The group or resource is not in the correct state to perform the requested operation. ฉันไม่มีเหตุการณ์การเข้าสู่ระบบที่ล้มเหลวในบันทึกความปลอดภัยของเหตุการณ์หรือในบันทึก SQL Server

1
การลบข้อมูล mysql จำนวนมาก (4 ล้านแถว) อย่างมีประสิทธิภาพเป็นประจำ
เรามีตาราง mysql ที่เวลาประมาณ 12 ล้านแถว เราจำเป็นต้องลบข้อมูลเก่าเพื่อให้ขนาดของตารางค่อนข้างจัดการได้ ตอนนี้เรากำลังเรียกใช้แบบสอบถามนี้ทุกวันเวลาเที่ยงคืนโดยใช้งาน cron: DELETE FROM table WHERE endTime < '1393632001' ครั้งล่าสุดที่มีการเรียกใช้แบบสอบถามตรวจสอบ 4,602,400 ใช้เวลา 3 นาทีและ CPU ดำเนินการผ่านหลังคา เราสามารถทำอะไรได้บ้างเพื่อป้องกันไม่ให้ CPU, การเชื่อมต่อฐานข้อมูลแบบซิงโครนัส, ความลึกของคิวดิสก์และอื่น ๆ จากการ spiking อย่างไม่มีเหตุผลในขณะที่ยังล้างข้อมูลเก่า PS: คุณจะสังเกตเห็นว่าการค้นหาเกิดขึ้นจริงในเวลาที่ไม่เหมาะสมพอสมควรในรอบการใช้งานของเรา สมมติว่าเราได้เปลี่ยนเวลาของการค้นหาให้เกิดขึ้นที่จุดต่ำสุดของการใช้งานในแต่ละวัน นอกจากนี้ยังไม่มีดัชนีใน "endTime" และฉันต้องการเก็บไว้อย่างนั้นถ้าเป็นไปได้เพราะมีการแทรกข้อมูลจำนวนมากเป็นประจำและไม่ต้องค้นหามากนัก
10 php  mysql 

6
Oracle 12c สร้างผู้ใช้
ฉันมีปัญหาในการสร้างผู้ใช้ในระบบฐานข้อมูลองค์กร Oracle ไม่สามารถสร้างผู้ใช้โดยใช้คำสั่งเช่น create user name identified by password; เนื่องจากข้อยกเว้น: ORA-65096: ชื่อผู้ใช้หรือบทบาททั่วไปที่ไม่ถูกต้อง ดังนั้นฉันจึงพบวิธีแก้ปัญหาบน Google: alter session set container=PDBORCL; และหลังจากนั้น - เป็นงาน สร้างผู้ใช้แล้ว แต่ฉันไม่สามารถเข้าสู่บัญชีนี้ได้ เกิดอะไรขึ้น? ฉันเพิ่มสิทธิ์ทั้งหมดให้กับบัญชีนี้ (สร้างเซสชันด้วย) ฉันมีข้อผิดพลาด: ORA-01017: ชื่อผู้ใช้ / รหัสผ่านไม่ถูกต้อง; ปฏิเสธการเข้าสู่ระบบ เกิดอะไรขึ้น?

2
วิธีตรวจสอบจำนวนการเชื่อมต่อฐานข้อมูล PostgreSQL อย่างถูกต้อง
ฉันพยายามใช้สคริปต์ Nagios เพื่อตรวจสอบจำนวนการเชื่อมต่อฐานข้อมูลในฐานข้อมูล Postgres และฉันพบปัญหานี้: สิ่งเหล่านี้นับเป็นการเชื่อมต่อแบบเปิดในปัจจุบันและวัดทุกๆ 5 นาที SELECT sum(numbackends) FROM pg_stat_database; แต่ถึงกระนั้นก็ดูเหมือนว่าจะพลาดการเชื่อมต่อระยะสั้นจำนวนมากดังนั้นสถิติอยู่ไกลจากความเป็นจริง ฉันพยายามเรียกใช้สคริปต์ด้วยตนเองและฉันสังเกตเห็นการเปลี่ยนแปลงครั้งใหญ่แม้ระหว่างการเชื่อมต่อสองครั้งทำให้ห่างจากกันไม่กี่วินาที ฉันจะรับข้อมูลนี้ในวิธีที่เชื่อถือได้อย่างไร ชอบ max (connectios) ที่เกิดขึ้นในช่วงเวลาหนึ่ง

1
ตาราง _TransactionIndex ที่ไม่รู้จักในฐานข้อมูล Azure SQL
เพิ่งสังเกตเห็นว่าวันนี้มีตารางสุ่มในฐานข้อมูล Azure SQL ของฉันที่ชื่อ "_TransactionIndex_ {guid}" มันมี 1 คอลัมน์รหัสที่มี 8 GUID ไม่พบข้อมูลเกี่ยวกับตารางนี้ - มันคืออะไร หมายความว่าฉันมีปัญหากับการทำธุรกรรมภายในแอปพลิเคชันของฉันหรือไม่

2
ฉันทำฐานข้อมูล `performance_schema` ของ MySQL แล้วฉันจะสร้างมันได้อย่างไร
ในขณะที่แก้ไขปัญหา ibdata / log ฉันตั้งใจทำperformance_schemaฐานข้อมูลของฉันโดยไม่ได้ตั้งใจฉันต้องการสร้างใหม่ mysql> SHOW VARIABLES LIKE 'perf%'; +---------------------------------------------------+---------+ | Variable_name | Value | +---------------------------------------------------+---------+ | performance_schema | ON | | performance_schema_events_waits_history_long_size | 10000 | | performance_schema_events_waits_history_size | 10 | | performance_schema_max_cond_classes | 80 | | performance_schema_max_cond_instances | 1000 | | performance_schema_max_file_classes | 50 | | performance_schema_max_file_handles | …
10 mysql 

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