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

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

1
ทำไมเซิร์ฟเวอร์ sql จำเป็นต้องแปลงผลลัพธ์ count (*) เป็น int ก่อนที่จะเปรียบเทียบกับตัวแปร int?
ฉันมีคำถามมากมายในแอปพลิเคชันของฉันซึ่งในประโยคที่มีฉันมีการเปรียบเทียบฟังก์ชั่นการนับรวมกับตัวแปร int ในแผนคิวรีฉันสามารถเห็น implicit_convert ก่อนการเปรียบเทียบ ฉันต้องการทราบว่าทำไมสิ่งนี้เกิดขึ้นเพราะตามเอกสารเซิร์ฟเวอร์ sql ฟังก์ชั่นการนับกลับเป็น int เหตุใดจึงต้องมีการแปลงโดยนัยสำหรับการเปรียบเทียบค่า int สองค่า ต่อไปนี้เป็นส่วนหนึ่งของแผนแบบสอบถามหนึ่งที่ @IdCount ถูกกำหนดให้เป็นตัวแปร int | --Filter (สถานที่: ([Expr1022] = [@ IdCount])) | - คำนวณสเกลาร์ (คำจำกัดความ: ([Expr1022] = CONVERT_IMPLICIT (int, [Expr1028], 0))) | - สตรีมรวม (กลุ่มตาม: ([MOCK_DB]. [dbo]. [ขอบเขต]. [ขอบเขต ID]) กำหนด: ([Expr1028] = จำนวน (*)))

2
SQL Server 2008 R2 กู้คืนการสำรองข้อมูลเต็มรูปแบบ COPY_ONLY พร้อมบันทึกธุรกรรม
หลังจากทำวิจัยฉันไม่สามารถหาคำตอบสำหรับคำถามนี้ได้ ความเป็นมาฉันกำลังพยายามตั้งค่าแผนสำรองที่เหมาะกับข้อกำหนดสามข้อต่อไปนี้: ความน่าเชื่อถือของการสำรองข้อมูลมีการสำรองข้อมูลเต็มรูปแบบทุกคืน การสำรองข้อมูลบันทึกธุรกรรมที่สามารถกู้คืนได้ ใช้พื้นที่ดิสก์ในระดับต่ำ การสำรองข้อมูลต้องสามารถเข้าถึงได้ในเครื่องสำหรับเครื่องมือตรวจสอบ ดังนั้นเพื่อให้เหมาะกับความต้องการเหล่านั้นฉันจึงคิดว่าการสำรองข้อมูลเต็มรูปแบบทุกสัปดาห์ความแตกต่างรายวันและธุรกรรมรายชั่วโมง จากนั้นทุกคืนจะมีการสำรองข้อมูล copy_only ซึ่งสามารถจัดส่งนอกสถานที่ได้การสำรองข้อมูลนี้จะทำเพื่อไม่ให้ห่วงโซ่การบันทึกเสียหายและเรามีการสำรองข้อมูลเต็มรูปแบบที่เชื่อถือได้ทุกคืนโดยไม่ต้องกินพื้นที่ดิสก์ในท้องถิ่นมากนัก คำถามเป็นไปได้ไหมที่จะกู้คืนจากข้อมูลสำรอง copy_only และกู้คืนบันทึกธุรกรรมหลังจาก ให้ฉันเป็นตัวอย่างให้คุณรู้ว่าฉันกำลังพูดถึงอะไร ใช้รายการด้านล่างฉันสงสัยว่ามันเป็นไปได้ที่จะเรียกคืน FullbackupCOPY_ONLYC.bak ตามด้วย TransactionbackupG.trn, TransactionbackupH.trn, สุดท้าย TransactionbackupI.trn > ---List of Backups--- FullbackupA.bak 01/01/2013 00:00:00 > DifferntialbackupA.bak 02/01/2013 00:00:00 FullbackupCOPY_ONLYA.bak 02/01/2013 00:00:00 > TransactionbackupA.trn 02/01/2013 01:00:00 > TransactionbackupB.trn 02/01/2013 02:00:00 > TransactionbackupC.trn 02/01/2013 03:00:00 > DifferntialbackupB.bak 03/01/2013 …

3
จำกัด การเข้าถึงสำหรับผู้ดูแลระบบ Windows
ตามแนวทางปฏิบัติที่ดีที่สุดของSQL Serverกล่าวว่า " โหมดการตรวจสอบ Windows มีความปลอดภัยมากกว่าการรับรองความถูกต้องของ SQL " และตอนนี้ฉันอยากรู้ว่า: มีวิธีปกป้อง SQL Server จากผู้ใช้ด้วยสิทธิ์ผู้ดูแลระบบ Windows หรือไม่?

3
โครงสร้างฐานข้อมูล SQL สำหรับ RESTful API
ฉันกำลังสร้าง RESTful API ฉันกำลังดิ้นรนที่จะตัดสินใจเกี่ยวกับวิธีที่ดีที่สุดในการออกแบบตารางฐานข้อมูลรอบทรัพยากรของฉัน ตอนแรกฉันแม้ว่าตารางต่อทรัพยากรจะเป็นวิธีที่ดี แต่ตอนนี้ฉันกังวลว่าสิ่งนี้จะส่งผลให้ตารางมีขนาดใหญ่ขึ้นอย่างทวีคูณยิ่งทำให้ห่วงโซ่ทรัพยากรมากขึ้น ตัวอย่างเช่นสมมติว่าฉันมีทรัพยากรสามอย่างคือผู้ใช้ลูกค้ายอดขาย ผู้ใช้เป็นสมาชิกของ api ของฉันลูกค้าคือลูกค้าผู้ใช้และยอดขายเป็นการซื้อโดยลูกค้าแต่ละรายไปยังบัญชีผู้ใช้ เข้าถึงทรัพยากรการขายดังนี้ GET /users/{userID}/clients/{clientID}/sales/{salesID} ดังนั้นหากมีผู้ใช้ 10 คนแต่ละคนมีลูกค้า 10 คนและสำหรับลูกค้าแต่ละรายมียอดขาย 10 รายการขนาดของตารางจะใหญ่ขึ้นเรื่อย ๆ ตามห่วงโซ่ทรัพยากรที่เราไป ฉันค่อนข้างมั่นใจว่า SQL สามารถรับมือกับตารางขนาดใหญ่ได้ แต่ฉันไม่แน่ใจว่าการอ่านและการเขียนจะทำให้ช้าลงอย่างไร ตัวอย่างข้างต้นอาจไม่ได้อธิบาย แต่ api ของฉันจะมีการเขียนเพิ่มขึ้นและอ่านเพิ่มเติมลงในห่วงโซ่ทรัพยากรที่เราไป ฉันจึงมีสถานการณ์ที่ตารางที่ใหญ่ที่สุดในฐานข้อมูลของฉันจะถูกอ่านและเขียนลงในตารางมากกว่าตารางที่เล็กกว่า นอกจากนี้ยังจำเป็นต้องเข้าร่วมตารางก่อนเรียกใช้แบบสอบถาม เหตุผลก็คือฉันอนุญาตให้ผู้ใช้แต่ละคนมีชื่อลูกค้าเหมือนกัน เพื่อหลีกเลี่ยงการรับข้อมูลไคลเอนต์ที่ไม่ถูกต้องตารางผู้ใช้และตารางไคลเอ็นต์จะถูกรวมโดย {userID} นี่เป็นกรณีขาย การเข้าร่วมตารางขนาดใหญ่และการอ่านและเขียนจะทำให้ช้าลงหรือไม่

1
แพลตฟอร์มใดสำหรับฐานข้อมูลคณิตศาสตร์ขนาดใหญ่ที่ใช้บันทึก
สวัสดีฉันเป็นวิศวกรโยธาที่มีประสบการณ์การเขียนโปรแกรม แต่ฉันไม่คุ้นเคยกับตัวเลือกมากมายที่มีอยู่ในปัจจุบัน หวังว่าคุณจะให้พอยน์เตอร์ชี้ทางที่ดีที่สุดในการดำเนินการต่อไป ฉันต้องการสร้างและสืบค้นฐานข้อมูลการวัดระดับพื้นดินในรูปแบบกริด จะมีการวัดจำนวนมากสำหรับแต่ละตำแหน่งของกริดในช่วงเวลาต่างๆผ่านงานเคลื่อนย้ายดินดังนั้นจึงมีมิติที่สี่ของเวลา ข้อสังเกตส่วนใหญ่จะอ่านจากไฟล์ข้อความ ในแต่ละเร็กคอร์ดจะมีตำแหน่งกริด (จำนวนเต็ม 2 x) (แถวและคอลัมน์) ระดับพื้นดิน (จุดลอยตัว) และรหัสข้อมูลสตริงต่างๆ (อาจรวมได้สูงสุด 30 อักขระ) กริดอาจมีประมาณ 10,000 แถว x 10,000 คอลัมน์ ไม่ใช่ทุกตำแหน่งบนกริดที่จะมีการบันทึกในการสำรวจแต่ละครั้ง แต่โดยทั่วไปจะมีการบันทึกได้มากถึงร้อยรายการ ตำแหน่งกริดจำนวนมากจะไม่มีการบันทึกเลย (ไซต์จะไม่เป็นรูปสี่เหลี่ยมที่สมบูรณ์แบบ) ฉันต้องการค้นหาระเบียนแยกข้อมูลและทำการคำนวณเช่นคำนวณระดับพื้นดินต่ำสุดหรือสูงสุดสำหรับตำแหน่งกริดแต่ละแห่ง ฉันค่อนข้างมั่นใจว่าฉันจะมีความสามารถในการเขียนโปรแกรมนี้ค่อนข้างง่ายในภาษาเช่น FORTRAN, BASIC หรือ C โดยใช้อาร์เรย์ องค์ประกอบอาร์เรย์มากมายจะว่างเปล่า แต่และฉันเดาว่านี่ไม่ใช่วิธีที่ถูกต้องในการทำและฐานข้อมูลขนาดใหญ่เช่นนี้ต้องการเครื่องมือพิเศษที่ฉันจะต้องเรียนรู้วิธีใช้ ฉันกำลังคิดถึงตัวเลือกที่เป็นไปได้สำหรับแพลตฟอร์ม - ใช้โปรแกรมฐานข้อมูล ฉันไม่คุ้นเคยกับความสามารถของสิ่งเหล่านี้ที่มีประสิทธิภาพ แต่ฉันคิดว่าพวกเขาจะมีค่าใช้จ่ายจำนวนมากกับ GUI ใช้ SQL หรือไม่ สิ่งนี้ฉันไม่รู้มาก แต่ดูเหมือนจะเป็นภาษาสำหรับฐานข้อมูล ฉันมักจะใช้ภาษาที่จำเป็นมากกว่าที่จะเปิดเผยและตามที่ฉันเข้าใจจากวิกิพีเดียว่า SQL เป็นสิ่งที่เปิดเผยฉันรู้สึกประหม่าเล็กน้อยต่อการเปลี่ยนแปลง …

4
ข้อความค้นหาช้าสำหรับผู้ใช้บางราย
ฉันมีแบบสอบถามสองสามข้อที่เรียกจากแอปพลิเคชันเว็บ C # .NET ซึ่งรวดเร็วสำหรับฉันเสมอ (ฉันเป็นผู้ดูแลระบบภายใน SQL Server) แต่สำหรับกลุ่มผู้ใช้ (กลุ่มโดเมนที่มีสิทธิ์ที่จำเป็น) แบบสอบถามนั้นช้ามาก จุดที่มันหมดเวลาในแอปพลิเคชัน อะไรจะทำให้การค้นหาเดียวกันที่แน่นอนนั้นทำงานต่างกันสำหรับผู้ใช้ที่ต่างกัน ข้อมูลเพิ่มเติม: แบบสอบถามเป็นแบบอินไลน์ SQL ในรหัส C # ไม่ใช่ขั้นตอนการจัดเก็บ แอปใช้การรับรองความถูกต้องของโดเมนและทั้งผู้ใช้และตัวฉันเองเรียกใช้แบบสอบถามผ่านแอป ดูเหมือนว่าปัญหานี้เป็นแผนที่แตกต่างกันและมีการแคชหนึ่งครั้งดังนั้นจึงเป็นเหตุผลที่แตกต่างกันสำหรับผู้ใช้ที่ต่างกัน มีบางอย่างที่ส่งผลต่อแคชเพราะตอนนี้คิวรีช้าสำหรับฉันผ่านแอปและรวดเร็วใน SQL Server Management Studio

1
เหตุใดแบบสอบถาม SQL Server จึงไม่ใช้ดิสก์ I / O มากกว่า 7MB / วินาที
ฉันมี SSD ที่ใช้การทดสอบ IOmeter แสดงประสิทธิภาพมากกว่า 200MB / s อย่างไรก็ตามเมื่อฉันเรียกใช้แบบสอบถาม SQL ใด ๆ จากเครื่องท้องถิ่นการตรวจสอบทรัพยากร windows ไม่เคยแสดงดิสก์ IO เหนือ 7MB / วินาที สิ่งนี้ถือเป็นจริงแม้กระทั่งการสืบค้นที่ใช้เวลานานกว่า 2 นาที สิ่งที่เป็นปัญหาคอขวดคือการใช้เพียง 7MB / วินาทีจาก SSD? ฉันกำลังวิ่ง: มาตรฐาน Windows Server 2012 SQL Server 2008 r2 Intel i7 3820 หน่วยความจำ 32GB sandisk SSD

1
SQL Server Deadlock สำหรับการอัพเดตสองครั้งเนื่องจากคำสั่งล็อคดัชนี
ฉันมีการอัปเดตสองครั้ง - หนึ่งล็อค CI ก่อนจากนั้น NCI (ตามสถานะ) เนื่องจากคอลัมน์สถานะกำลังอัปเดตด้วย อีกคนหนึ่งเป็นเจ้าของล็อค U บน NCI เพราะรู้ว่ามันกำลังเปลี่ยนแปลงและพยายามดึง U ล็อคบน CI วิธีที่ง่ายที่สุดในการบังคับให้สิ่งเหล่านี้เป็นอันดับคืออะไร ดูเหมือนแปลกที่จะใช้คำใบ้ระดับ Table เนื่องจากนี่เป็นปัญหาการจัดทำดัชนีภายใน - มีเพียงหนึ่งตารางที่เกี่ยวข้อง - UPDLOCK จะ HOLDLOCK จะใช้กับดัชนีทั้งหมดที่จำเป็นในตารางนั้นโดยอัตโนมัติหรือไม่ นี่คือแบบสอบถาม: UPDATE htt_action_log SET status = 'ABORTED', CLOSED = GETUTCDATE() WHERE transition_uuid = '{F53ADDDA-E46B-4726-66D8-D7B640B66597}' AND status = 'OPEN'; X ตัวนั้นล็อกแถวใน CI (บนคอลัมน์ CREATED) …

1
PostgreSQL pg_stat_activity แสดง COMMIT
เมื่อเร็ว ๆ นี้เราได้เปลี่ยนเซิร์ฟเวอร์ฐานข้อมูลของเราด้วยเครื่องที่อัพเกรดด้วยซีพียูแกน 4 x Quad และ RAM ขนาด 32Gb นอกจากนี้เรายัง repurposed กล่องเก่าของเราเพื่อใช้เป็นทาสกับการจำลองแบบการสตรีม กล่องทั้งสองกำลังเรียกใช้ CentOS 6.3 และ PostgreSQL 9.2 Postgres เป็นสิ่งเดียวที่ทำงานในแต่ละกล่อง การกำหนดค่านี้อยู่ในสถานที่ประมาณหนึ่งเดือนหรือมากกว่านั้นเมื่อเราเริ่มพบปัญหาบางอย่างเมื่อปริมาณการใช้งานเริ่มเพิ่มขึ้น สิ่งที่เราเริ่มเห็นคือโหลด CPU สูงมากในบางครั้ง (ด้านบนแสดงค่าเฉลี่ยการโหลดของ 270) และเมื่อเราสามารถดูpg_stat_activityเราจะเห็นว่าการเชื่อมต่อส่วนใหญ่ของเราอยู่ในCOMMITสถานะ เมื่อเหลือคนเดียวสิ่งนี้จะเสร็จสิ้นในที่สุดและระบบจะตอบสนองต่อการเชื่อมต่อที่IDLEเพิ่มขึ้น เราได้ลองปิดการใช้งานการจำลองแบบเพื่อดูว่าอาจเป็นปัญหาหรือไม่ แต่ปัญหายังคงมีอยู่ เราได้ลองวินิจฉัยว่าเกิดอะไรขึ้นและหายไปเล็กน้อย ผลลัพธ์จากการวิ่งperfแสดงบางอย่างที่คล้ายกับด้านล่างและฉันไม่รู้ว่ามัน0x347ba9หมายถึงอะไร + 41.40% 48154 postmaster 0x347ba9 f 0x347ba9 ◆ + 9.55% 10956 postmaster 0x2dc820 f set_config_option ▒ + …
11 postgresql 

2
กู้คืนฐานข้อมูลจากไฟล์สำรองของรุ่น / รุ่นที่แตกต่างกัน
ฉันอ่านว่าเป็นไปได้ที่จะกู้คืนฐานข้อมูลใน SQL Server ตราบใดที่คุณกำลังกู้คืนจากรุ่นเก่าเป็นรุ่นที่ใหม่กว่าด้วยเหตุผลด้านความเข้ากันได้ย้อนหลัง มีใครรู้บ้างไหมถ้าคุณสามารถกู้คืนฐานข้อมูลจากไฟล์ * .bak สำหรับ SQL Server รุ่นต่าง ๆ ได้ เรากำลังย้ายฐานข้อมูลที่มีขนาดใหญ่มากผ่านทาง FTP ซึ่งจะใช้เวลาสองสามวันดังนั้นเราควรทำเช่นนี้เพียงครั้งเดียว หากไม่มีใครตอบกลับตามเวลาที่เราถ่ายโอนฐานข้อมูลผ่านทาง FTP เราจะลองใช้งานและดูว่ามันใช้งานได้โดยการทดสอบและตอบคำถามของเราเองหรือไม่ ด้านล่างนี้เป็นแบบสอบถามเพื่อรับรายละเอียดรุ่นของ SQL Server อยู่ในรูปแบบproductversion {major revision}.{minor revision}.{release revision}.{build number}ในกรณีของฉัน{release revision}ค่ามี5500สำหรับแหล่งที่มาและ5512เป้าหมาย นั่นดูไม่เป็นไร อย่างไรก็ตามความeditionแตกต่าง ค้นหา: SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition') ฐานข้อมูลแหล่งที่มา: 10.0.5500.0 SP3 Developer Edition (64-bit) ฐานข้อมูลเป้าหมาย: 10.0.5512.0 SP3 Enterprise Edition (64-bit)

1
Qcache_free_memory ยังไม่เต็ม แต่ฉันได้รับ Qcache_lowmem_prunes จำนวนมาก
ฉันเพิ่งเริ่มเล่นน้ำกับแคชแบบสอบถามสำหรับ CMS ของเรา ทุกคนสามารถบอก (หรืออย่างน้อยให้เดาดี) เหตุผลที่ผมได้รับเป็นจำนวนมากของQcache_lowmem_prunesเมื่อมากกว่าครึ่งหนึ่งของQcache_free_memoryฟรี? query_cache_size=512M query_cache_limit=1M นี่คือลักษณะที่จะดูแลประมาณ 12 ชั่วโมง show status like '%qcach%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | Qcache_free_blocks | 10338 | | Qcache_free_memory | 297348320 | | Qcache_hits | 10254104 | | Qcache_inserts | 6072945 | | Qcache_lowmem_prunes | 725279 | | Qcache_not_cached | …

2
เนื้อหาของไฟล์บันทึกธุรกรรมโดยละเอียด
ฉันมีคำถามเกี่ยวกับการทำธุรกรรม (ขอเรียกสั้น ๆ ว่า LDF) เนื้อหา ฉันสมมติว่าฐานข้อมูลพร้อมกับแบบจำลองการกู้คืนเต็มรูปแบบ ฉันได้อ่านว่าไฟล์ LDF มี (บันทึก) การดำเนินการแต่ละรายการและทุกครั้งไปยังฐานข้อมูล (ที่อยู่ในโหมดการกู้คืนเต็ม) มันแตกต่างจากการล็อกระหว่างBEGIN TRAN; COMMAND(s); COMMITอะไร ฉันถามเพราะเห็นได้ชัดว่าคุณสามารถย้อนกลับธุรกรรม แต่คุณไม่สามารถย้อนกลับคำสั่งมาตรฐาน (ในโหมดการกู้คืนเต็ม) ฉันเดาว่าระหว่างการทำธุรกรรมเนื้อหาที่ถูกบันทึกลงในไฟล์ LDF นั้นแตกต่างจากการบันทึกการกู้คืนแบบเต็มปกติ นั่นถูกต้องใช่ไหม? แตกต่างกันอย่างไร เป็นเพียงการรวมการดำเนินงาน "เลิกทำ" สำหรับแต่ละการกระทำหรือไม่ ในบันทึกที่เกี่ยวข้องฉันได้ยินมาว่ามีเครื่องมือเชิงพาณิชย์สำหรับ "การย้อนกลับ / เลิกทำ" คำสั่งมาตรฐานโดยใช้ไฟล์ LDF สำหรับการกู้คืนแบบเต็ม พวกเขาทำมันได้อย่างไร? พวกเขาวิเคราะห์เนื้อหาของ LDF หรือไม่และพยายามทำสิ่งที่ตรงกันข้าม / เลิกทำหรือไม่?

1
บริบท DB_ID จากสแต็คการโทรไกลขึ้น
ใน SQL Server เป็นไปได้หรือไม่ที่จะรับDB_IDจากบริบทจากระยะไกลกว่า call stack? เป้าหมายของฉันคือการสร้างฟังก์ชั่นยูทิลิตี้ที่มีประโยชน์ (และแฮ็คยอมรับ) ในฐานข้อมูล dev sandbox ที่ทำให้มันง่ายและรัดกุมเพื่อให้ได้ชื่อของวัตถุที่มีคุณสมบัติครบถ้วนที่กำหนดชื่อแบบสั้นหรือแบบแยกส่วน . ฟังก์ชั่นยูทิลิตี้เหล่านี้จะอยู่ในฐานข้อมูลยูทิลิตี้เดียว แต่เรียกจากฐานข้อมูลอื่น ๆ บนเซิร์ฟเวอร์เดียวกัน จากสิ่งที่ฉันเห็นจากการทดสอบ: ORIGINAL_DB_NAME()ตามที่ต้องการจะส่งคืนสิ่งที่อยู่ในสตริงการเชื่อมต่อไม่ใช่บริบทปัจจุบัน (กำหนดโดยUSE [dbname]) เมื่อเรียกฟังก์ชั่นDB_NAME()ส่งกลับชื่อของฐานข้อมูลที่ฟังก์ชั่นที่กำหนดไว้ อีกวิธีในการพูดแบบนี้คือบริบทภายในฟังก์ชันหรือกระบวนงานที่เก็บไว้คือของฐานข้อมูลที่กำหนดไว้ ฉันรู้ว่าเอ็นจิ้นติดตามสถานะของฐานข้อมูลแต่ละบริบทขึ้น ๆ ลง ๆ สแต็กการโทร (ดูด้านล่างเพื่อพิสูจน์) ดังนั้นมีวิธีการเข้าถึงข้อมูลนี้หรือไม่? ฉันต้องการที่จะสามารถค้นหาและดำเนินการกับวัตถุในบริบทของฐานข้อมูลของผู้โทรถึงแม้ว่ารหัสการดำเนินการไม่ได้อยู่ในฐานข้อมูลเดียวกัน ตัวอย่างเช่น: use SomeDB EXEC util.dbo.frobulate_table 'my_table' ฉันรู้ว่าฉันสามารถทำได้ EXEC util.dbo.frobulate_table 'SomeDB.dbo.my_table' แต่ฉันแค่อยากรู้อยากเห็นจริง ๆ ถ้าเป็นไปได้ในการสอบถามสแตกการโทรด้วยวิธีนี้ อัปเดต / บันทึกย่อ ผมไม่อ่านและดาวน์โหลดรหัสจากบล็อกของกาเบรียล McAdams' นี่เป็นเร็กคอร์ดของ …
11 sql-server 


2
เปลี่ยนเป็น Innodb_flush_log_at_trx_commit แบบไดนามิก
สิ่งนี้เกี่ยวข้องกับคำถามนี้ มันจะช่วยให้ได้ประสิทธิภาพที่ดีขึ้นสำหรับตาราง InnoDB ตามคู่มือ MySQL , innodb_flush_log_at_trx_commitเป็นตัวแปรแบบไดนามิกทั่วโลก ดังนั้นฉันสามารถเปลี่ยนได้โดยใช้คำสั่ง SET GLOBAL และดูเหมือนว่าจะทำงานได้ mysql> SET GLOBAL innodb_flush_log_at_trx_commit=2; Query OK, 0 rows affected mysql> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit'; +--------------------------------+-------+ | Variable_name | Value | +--------------------------------+-------+ | innodb_flush_log_at_trx_commit | 2 | +--------------------------------+-------+ 1 row in set แต่มันไม่ได้เปลี่ยนการตั้งค่า MySQL จริง เมื่อฉันอัปเดตmy.cnfและรีสตาร์ทเซิร์ฟเวอร์ MySQL มันทำงานได้ ดังนั้นฉันไม่สามารถเปลี่ยนตัวแปรโกลบอลในขณะใช้งาน ฉันชอบค่าเริ่มต้นinnodb_flush_log_at_trx_commit=1แต่ฉันต้องการเปลี่ยนเป็น …

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