คำถามติดแท็ก mysql

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม

1
การเปิดใช้งาน“ log_queries_not_using_indexes” ปิดใช้งาน“ long_query_time” หรือไม่
ผมสังเกตเห็นว่าใน Mysql เมื่อเปิดใช้งานlog_queries_not_using_indexes, slow_query_logและไฟล์บันทึกแบบสอบถามสร้างช้าจะมีจำนวนมากของคำสั่งแม้ว่าเวลาแบบสอบถามน้อยกว่าlong_query_timelong_query_time ดูเหมือนว่าเมื่อlog_queries_not_using_indexesเปิดใช้งานแล้ว Mysql จะบันทึกการสืบค้นทั้งหมดที่ไม่ได้ใช้ดัชนีไม่ว่า "long_query_time" นั้นคืออะไร มีวิธีที่จะเอาชนะสิ่งนี้หรือไม่? ฉันหมายถึงมีวิธีบันทึกข้อความค้นหาทั้งหมดที่ใช้เวลานานกว่าlong_query_timeไม่ว่าจะใช้ดัชนีหรือไม่

1
การลบบันทึก bin ในสภาพแวดล้อมการจำลองแบบ
ฉันมีคำถามเกี่ยวกับการลบบันทึกแบบไบนารีในสภาพแวดล้อมการจำลองแบบ: เรามีสภาพแวดล้อมที่มี 1 master และ 2 slaves (กำลังเรียกใช้ mysql 5.5) บางครั้งเราพบปัญหาเกี่ยวกับพื้นที่ระหว่างการประมวลผลครั้งใหญ่โดยที่ bin log directory เต็ม บันทึกหมดอายุทุก 3 วัน ฉันสงสัยว่ามีเหตุผลหรือไม่ที่จะต้องเก็บบันทึกไว้เป็นเวลา 3 วันในกล่องทั้งหมด - ผู้เชี่ยวชาญและทาสทั้งสอง? ยกตัวอย่างเช่นการเก็บบันทึกเป็นเวลา 3 วันสำหรับต้นแบบ แต่สำหรับทาส 1 วัน วิธีที่ดีที่สุดที่จะไปเกี่ยวกับมันคืออะไร? ขอขอบคุณ!

2
ทริกเกอร์เป็น UPDATE หลังจาก UPDATE หรือไม่
ฉันต้องการทริกเกอร์บันทึกเวลาของการอัปเดตใด ๆ เป็น: CREATE TRIGGER col_update AFTER UPDATE ON col FOR EACH ROW BEGIN UPDATE col SET updated=NOW() WHERE id=NEW.id; // or OLD.id END ปัญหาคือเมื่อทริกเกอร์นี้พยายามอัปเดตupdatedคอลัมน์มันก็เป็นอีกเหตุการณ์หนึ่งของการอัพเดทที่รันทริกเกอร์ สิ่งนี้จะสร้างการวนซ้ำไม่สิ้นสุดซึ่งไม่ทำงาน ฉันจะจัดเก็บเวลาอัปเดตในคอลัมน์ที่เกี่ยวข้องได้อย่างไร ฉันต้องการใช้ทริกเกอร์เนื่องจากมีหลายคอลัมน์ในตาราง หากฉันพยายามตั้งเวลาอัปเดตด้วยตนเองฉันจะต้องแก้ไขข้อความค้นหาจำนวนมาก

2
เหตุใด MySQL จึงสร้างตารางชั่วคราวจำนวนมากบนดิสก์
ความผิดพลาดในการตั้งค่าใด ๆ อาจนำไปสู่การสร้างตารางชั่วคราวมากเกินไปโดย mysql..mysql tuner แสดง Current max_heap_table_size = 200 M Current tmp_table_size = 200 M Of 17158 temp tables, 30% were created on disk table_open_cache = 125 tables table_definition_cache = 256 tables You have a total of 97 tables You have 125 open tables. Current table_cache hit rate is …
13 mysql  innodb  myisam  memory 

2
คุณจะลบการกระจายตัวของข้อมูลจากตาราง InnoDB ได้อย่างไร
ฉันมีฐานข้อมูลที่มีจำนวนตาราง ฉันต้องการลบบางระเบียนออกจากตารางว่าไม่มีระเบียนมากกว่า 20K หรือ 50K ตารางทั้งหมดเป็น InnoDB และfile_per_tableเป็นปิด เมื่อฉันจะลบระเบียนจากตารางจำนวนหนึ่งจะมีการกระจายตัวในตาราง มีวิธีใดที่จะกำจัดการแตกแฟรกเมนต์ อัพเดทเมื่อวันที่ 17 เมษายน mysql> select TABLE_NAME, TABLE_SCHEMA, Data_free from information_schema.TABLES where TABLE_SCHEMA NOT IN ('information_schema', 'mysql') and Data_Free >0; +-----------------+--------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | Data_free | +-----------------+--------------+-----------+ | City | world_innodb | 5242880 | | City_Copy | world_innodb | …

4
Mysql int vs varchar เป็นคีย์หลัก (InnoDB Storage Engine?
ฉันสร้างเว็บแอปพลิเคชัน (ระบบการจัดการโครงการ) และฉันสงสัยเกี่ยวกับสิ่งนี้เมื่อพูดถึงประสิทธิภาพ ฉันมีตารางปัญหาอยู่ข้างในนั้นมี 12 ปุ่มต่างประเทศที่เชื่อมโยงกับตารางอื่น ๆ ในบรรดา 8 คนนั้นฉันต้องเข้าร่วมเพื่อรับฟิลด์ชื่อเรื่องจากตารางอื่น ๆ เพื่อให้ระเบียนมีเหตุผลในแอปพลิเคชันเว็บ 1 ฟิลด์สำหรับการรวมแต่ละรายการ ตอนนี้ฉันยังได้รับคำสั่งให้ใช้คีย์หลักที่เพิ่มขึ้นอัตโนมัติ (ยกเว้นการใช้เศษเป็นข้อกังวลในกรณีที่ฉันควรใช้ GUID) สำหรับเหตุผลด้านความคงทน แต่มันแย่ขนาดไหนในการใช้ varchar (ความยาวสูงสุด 32) ฉันหมายถึงส่วนใหญ่ของตารางเหล่านี้อาจไม่ได้มีการบันทึกจำนวนมาก (ส่วนใหญ่ควรต่ำกว่า 20) นอกจากนี้ถ้าฉันใช้ชื่อเป็นคีย์หลักฉันจะไม่ต้องรวม 95% ของเวลาดังนั้นสำหรับ 95% ของ sql ฉันจะเกิดผลการทำงานที่ยอดเยี่ยม (ฉันคิดว่า) ข้อเสียอย่างเดียวที่ฉันคิดได้ก็คือฉันมีคือฉันจะมีการใช้พื้นที่ดิสก์ที่สูงขึ้น เหตุผลที่ฉันใช้ตารางการค้นหาสำหรับสิ่งนี้มากมายแทนที่จะเป็น enums ก็เพราะฉันต้องการค่าทั้งหมดเหล่านี้เพื่อกำหนดค่าโดยผู้ใช้ผ่านแอปพลิเคชันเอง อะไรคือข้อเสียของการใช้ varchar เป็นคีย์หลักสำหรับตารางที่ไม่ได้ยกเว้นที่จะมีหลายระเบียน? อัพเดท - การทดสอบบางอย่าง ดังนั้นฉันจึงตัดสินใจทำการทดสอบเบื้องต้นเกี่ยวกับสิ่งนี้ ฉันมีบันทึก 100,000 รายการและนี่คือการสืบค้นพื้นฐาน: แบบสอบถาม VARCHAR FK …

4
การล็อกแถว InnoDB - วิธีการนำไปใช้
ตอนนี้ฉันได้ดูรอบ ๆ แล้วอ่านไซต์ mysql และฉันก็ยังไม่เห็นว่ามันทำงานอย่างไร ฉันต้องการเลือกและล็อกแถวผลลัพธ์สำหรับการเขียนเขียนการเปลี่ยนแปลงและปลดล็อค เปิดใช้งาน audocommit โครงการ id (int) name (varchar50) status (enum 'pending', 'working', 'complete') created (datetime) updated (datetime) เลือกรายการที่มีสถานะรอดำเนินการและอัปเดตให้ใช้งานได้ ใช้การเขียนแบบเอกสิทธิ์เฉพาะบุคคลเพื่อให้แน่ใจว่ารายการเดียวกันไม่ได้รับสองครั้ง ดังนั้น; "SELECT id FROM `items` WHERE `status`='pending' LIMIT 1 FOR WRITE" รับ ID จากผลลัพธ์ "UPDATE `items` SET `status`='working', `updated`=NOW() WHERE `id`=<selected id> ฉันต้องทำอะไรเพื่อปลดล็อคและทำงานเหมือนที่ฉันเคยทำด้านบนหรือไม่?
13 mysql  innodb  locking 

2
โอกาสในการออกแบบฐานข้อมูลใหม่: การออกแบบตารางใดที่จะใช้สำหรับการรวบรวมข้อมูลเซ็นเซอร์นี้
พื้นหลัง ฉันมีเครือข่ายเซ็นเซอร์ประมาณ 2,000 ตัวซึ่งแต่ละตัวมีจุดข้อมูลประมาณ 100 จุดที่เรารวบรวมในช่วงเวลา 10 นาที จุดข้อมูลเหล่านี้มักจะเป็นค่า int แต่บางจุดเป็นสตริงและลอย ข้อมูลนี้ควรเก็บไว้ 90 วันหากเป็นไปได้และยังมีประสิทธิภาพ การออกแบบฐานข้อมูล เมื่อมอบหมายงานครั้งแรกกับโครงการนี้ฉันเขียนแอป C # ที่เขียนไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคสำหรับเซ็นเซอร์แต่ละตัว ในเวลาที่มีไม่มากเมื่อมีคนต้องการดูแนวโน้มเราจะเปิด csv ใน Excel และสร้างกราฟตามต้องการ สิ่งต่าง ๆ ขยายตัวและเราเปลี่ยนเป็นฐานข้อมูล MySQL ฉันสร้างตารางสำหรับเซ็นเซอร์แต่ละตัว (ใช่ฉันรู้จำนวนมากของตาราง!); มันใช้งานได้ดี แต่ก็มีข้อ จำกัด อยู่บ้าง ด้วยตารางจำนวนมากจึงเป็นไปไม่ได้ที่จะเขียนแบบสอบถามที่จะค้นหาข้อมูลในเซ็นเซอร์ทั้งหมดเมื่อค้นหาค่าเฉพาะ สำหรับรุ่นถัดไปฉันเปลี่ยนเป็น Microsoft SQL Server Express และวางข้อมูลเซ็นเซอร์ทั้งหมดลงในตารางขนาดใหญ่หนึ่งตาราง นอกจากนี้ยังใช้งานได้และช่วยให้เราสามารถสอบถามเพื่อค้นหาค่าในเซ็นเซอร์ทั้งหมดที่น่าสนใจ อย่างไรก็ตามฉันวิ่งเข้าไปในขีด จำกัด 10GB สำหรับเวอร์ชัน Express และตัดสินใจที่จะเปลี่ยนกลับเป็น MySQL แทนที่จะลงทุนใน …

4
การเพิ่มดัชนีช้ามาก…มี mysql cmd เพื่อรับ ETA หรือแสดงความคืบหน้าหรือไม่
ขณะนี้ฉันกำลังเรียกใช้คิวรีแก้ไขบนตารางของฉัน (รายการ 20M) เพื่อเพิ่มดัชนี มันใช้งานมานานกว่า 3 วันแล้ว (ติดอยู่ที่ 'คัดลอกไปยังตาราง tmp') มีวิธีที่ฉันสามารถดูความคืบหน้าของแบบสอบถามหรือในคำอื่น ๆ มีวิธีที่ฉันจะได้รับเวลาประมาณเสร็จ? ขอบคุณ
13 mysql 

3
วิธีที่ดีที่สุดในการออกแบบฐานข้อมูลทัวร์นาเมนต์
ฉันกำลังสร้างเว็บเพจสำหรับวางเดิมพันในการแข่งขันฟุตบอลยูโร 2012 ที่กำลังจะมาถึง ต้องการความช่วยเหลือในการตัดสินใจว่าวิธีการที่จะใช้สำหรับขั้นตอนการทำให้ล้มลง ฉันได้สร้างการจำลองด้านล่างซึ่งฉันค่อนข้างพอใจเมื่อพูดถึงการจัดเก็บผลลัพธ์ของการแข่งขันรอบแบ่งกลุ่ม "ที่รู้จัก" ทั้งหมด การออกแบบนี้ทำให้ง่ายต่อการตรวจสอบว่าผู้ใช้วางเดิมพันที่ถูกต้องหรือไม่ แต่วิธีที่ดีที่สุดในการจัดเก็บรอบรองชนะเลิศและรอบรองชนะเลิศคืออะไร? การแข่งขันเหล่านั้นขึ้นอยู่กับผลลัพธ์ในรอบแบ่งกลุ่ม วิธีหนึ่งที่ฉันคิดว่าจะเพิ่มการแข่งขันทั้งหมดลงในmatchesตาราง แต่กำหนดตัวแปรหรือตัวระบุต่าง ๆ ให้กับทีมเหย้า / ทีมเยือนสำหรับการแข่งขันในช่วงการทำให้ล้มลง และมีตารางอื่นที่มีตัวระบุเหล่านั้นแมปกับทีม ... วิธีนี้สามารถใช้งานได้ แต่รู้สึกไม่ถูกต้อง

2
วิธีการกู้คืนตาราง InnoDB ซึ่งไฟล์ถูกย้ายไปมา
ดังนั้นฉันมีเซิร์ฟเวอร์ทดสอบ db ที่ติดตั้งในกระแสการจำลอง โดยชื่อการเพิ่มประสิทธิภาพผ่านมาซึ่งเต็มพื้นที่อย่างรวดเร็วบนทาสข้อมูล Mysql ตามหน้าที่กำลังรอพื้นที่เพิ่มขึ้น datadir นี้เป็นระบบไฟล์ที่ใช้เป็น datadir ของ mysql เท่านั้นดังนั้นจึงไม่มีสิ่งอื่นใดที่จะทำให้ว่าง ฉันมีตารางการทดสอบขนาด 4 กิ๊กที่ไม่ได้เป็นส่วนหนึ่งของกระแสข้อมูลการจำลองดังนั้นฉันจึงคิดว่าฉันลองทำบางสิ่งเพื่อดูว่ามันใช้งานได้หรือไม่และการเป็นสภาพแวดล้อมการทดสอบ นี่คือขั้นตอนที่ฉันทำ ล้างตารางที่ฉันกำลังจะย้าย วางล็อกการอ่านไว้ (แม้ว่าจะไม่มีอะไรถูกเขียนลงไปและไม่ได้อยู่ในสตรีมการจำลองแบบ) คัดลอก. frm และ. ibd ไปยังระบบไฟล์ที่มีห้องว่าง ปลดล็อกตาราง ตัดทอนตารางนั้น - ทำให้มีพื้นที่ว่างเพียงพอสำหรับการปรับให้เสร็จสมบูรณ์เมื่อการเรพลิเคทเริ่มต้นการสับอีกครั้ง หยุดทาส / ปิด mysql คัดลอกไฟล์จาก tmp กลับไปยัง data dir รีสตาร์ท mysql ไม่มีสิ่งใดปรากฏในบันทึก .err สิ่งต่าง ๆ ดูดี ฉันเชื่อมต่อและใช้ mydb; และดูตารางที่ฉันเล่นด้วยในตารางแสดง แต่ถ้าฉันลอง select * …

1
ทำซ้ำตารางไปยังชื่อฐานข้อมูลอื่น
สภาพแวดล้อมการควบคุมคุณภาพของเรามีชื่อฐานข้อมูลทั้งหมดที่ต่อท้ายด้วย "ทดสอบ" ตัวอย่างเช่น dbname1 ในการผลิตจะมี dbname1test สำรองใน QA (ส่วนใหญ่จะช่วยป้องกันการตั้งค่า prod / qa ที่ผสมกัน) มีตารางจำนวนหนึ่งที่ฉันต้องการจำลองตารางการผลิตจริงลงใน QA ฉันไม่แน่ใจว่าจะบอกให้พูดว่า "ทำซ้ำจาก dbname1 ไปยัง dbname1test ที่นั่นหรือไม่" เป็นไปได้ไหม

2
INSERT ได้รับการกำหนดอัตโนมัติหรือไม่
แอปพลิเคชันของเรายิงแบบสอบถาม INSERT ไปยังฐานข้อมูล MySQL เพื่อเพิ่มบันทึก ฉันต้องการทราบว่าบันทึกได้รับการกำหนดอัตโนมัติหรือไม่ ถ้าฉันรันคำสั่ง ROLLBACK ฐานข้อมูลจะทำการย้อนกลับเมื่อใด การย้อนกลับเป็นไปได้หลังจากคอมมิชชันหรือไม่?
13 mysql  innodb 

5
ทางเลือกใน MySQL Workbench [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันพบปัญหาเกี่ยวกับ MySQL Workbench ที่ฉันไม่แน่ใจว่าจะสามารถแก้ไขได้ ( เช่นสิ่งที่ดูเหมือนจะเป็นข้อผิดพลาดเก่าที่อาจมีการเผยแพร่ใหม่ ) ดังนั้นฉันจึงต้องการหา สำรองข้อมูลได้ดีในกรณีที่ฉันไม่สามารถใช้งานได้ ฉันได้กรองหลายทางเลือกที่แนะนำเช่น Navicat (Navicat ไม่ฟรีสำหรับการใช้งานทางธุรกิจเพียงทดลองใช้ 30 วัน) แต่ไม่มีใครตอบสนองความต้องการในปัจจุบันของฉันได้อย่างน่าพอใจ สิ่งที่ฉันต้องการ: ใช้งานร่วมกับ Linux ได้ (เด่นกว่า Linux ดั้งเดิมฉันใช้ Ubuntu) สามารถเชื่อมต่อกับฐานข้อมูลระยะไกลผ่าน SSH tunneling ได้ ฟรีและ / หรือโอเพ่นซอร์ส (ขณะนี้ฉันไม่มีเงินที่จะใช้จ่าย $ 100 + สำหรับผลิตภัณฑ์และต้องการสนับสนุนโครงการโอเพ่นซอร์สที่ดีอยู่ดี) อย่างน้อยอินเทอร์เฟซของ Workbench (อาจเป็นเพราะฉันคุ้นเคยกับมัน แต่ฉันชอบอินเทอร์เฟซที่สะอาดมากและใช้งานง่ายกว่าแท็บอินเตอร์เฟส; ไม่ต้องเหมือนกัน) …

3
ฉันจะส่งออกบันทึก MySQL ไปยัง syslog ได้อย่างไร
ฉันต้องการใช้ syslog สำหรับการบันทึก MySQL (5.1.41) บน Ubuntu (10.04 LTS) ฉันพบข้อมูลที่บันทึกข้อผิดพลาดเอาต์พุตไปยัง syslog [mysqld_safe] syslog แต่ฉันต้องการใช้ syslog สำหรับการบันทึกบันทึกทั่วไปและบันทึกแบบสอบถามช้า โปรดแนะนำฉันเกี่ยวกับวิธีเขียนไฟล์ปรับแต่ง? ฉันไม่พบวิธีการทำเช่นนั้นในคู่มืออ้างอิง http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html
13 mysql  logs 

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