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

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

7
อะไรคือเหตุผล ** ไม่ ** ในการใช้เครื่องมือจัดเก็บข้อมูล MEMORY ใน MySQL?
ฉันเพิ่งค้นพบว่า MySQL มีเอ็นจิ้น "หน่วยความจำ" ที่ฉันไม่ทราบ ดูเหมือนว่าตัวเลือกนี้ควรให้ประสิทธิภาพที่ดีขึ้นอย่างมากกับฉันดังนั้นฉันจึงสงสัยว่ามีข้อบกพร่องใด ๆ ทั้งสองที่ฉันรู้คือ: ฉันต้องมี RAM เพียงพอที่จะถือตารางในคำถาม ตารางจะหายไปหากเครื่องปิด ฉันเชื่อว่า # 1 ไม่ควรเป็นปัญหาเนื่องจากฉันใช้ AWS EC2 และสามารถย้ายไปยังประเภทอินสแตนซ์ที่มีหน่วยความจำเพิ่มขึ้นหากจำเป็น ฉันเชื่อว่าฉันสามารถลด # 2 ได้โดยการถ่ายโอนข้อมูลกลับไปที่ดิสก์ตามต้องการ มีปัญหาอื่นอีกไหม เอ็นจิ้นหน่วยความจำสามารถให้ประสิทธิภาพที่แย่กว่า MyISAM หรือ InnoDB ได้หรือไม่? ฉันคิดว่าฉันอ่านบางอย่างที่ดัชนีแตกต่างจากเครื่องมือนี้ เป็นสิ่งที่ฉันต้องกังวลหรือไม่

4
ทำไมฉันถึงได้รับ 'Impossible WHERE สังเกตหลังจากอ่าน const tables' ในคำอธิบายการสืบค้น?
ฉันมีคีย์ผสมที่ไม่ซ้ำกันเช่น fr (fromid, toid) ในตารางเมื่อฉันเรียกใช้แบบสอบถามด้วยคำอธิบายฉันได้รับผลลัพธ์ต่อไปนี้: Impossible WHERE noticed after reading const tables` คำถามที่ฉันวิ่ง: explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60 ความช่วยเหลือใด ๆ EDIT1: เมื่อฉันใช้แบบสอบถามด้านล่าง: explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t' ฉันเห็นUSING WHEREแทนที่จะเป็นข้อความก่อนหน้า แต่เมื่อฉันใช้แบบสอบถามด้านล่าง: explain SELECT rid FROM relationship WHERE …
27 mysql  explain 

2
MySQL สร้างตารางชั่วคราวบนดิสก์ ฉันจะหยุดมันได้อย่างไร
เรากำลังเรียกใช้ไซต์ (Moodle) ที่ผู้ใช้พบว่าช้า ฉันคิดว่าฉันได้ติดตามปัญหาของ MySQL ที่สร้างตารางชั่วคราวบนดิสก์ ฉันดูตัวแปรcreated_tmp_disk_tablesในการดูแลเซิร์ฟเวอร์ Mysql Workbench และจำนวนเพิ่มขึ้นด้วยประมาณ 50 tables / s หลังจากใช้ไป 1 วันcreated_tmp_disk_tablesคือ> 100k นอกจากนี้ดูเหมือนว่าหน่วยความจำจะไม่ออก การใช้งานเพิ่มขึ้นเรื่อย ๆ จนกระทั่งระบบใช้งานไม่ได้และเราต้องเริ่ม MySQL ใหม่ ฉันต้องเริ่มต้นใหม่เกือบทุกวันและเริ่มต้นด้วยการใช้หน่วยความจำที่มีอยู่ประมาณ 30-35% และจบวันด้วย 80% ฉันไม่มี blobs ในฐานข้อมูลและไม่สามารถควบคุมการค้นหาได้ดังนั้นฉันจึงไม่สามารถพยายามปรับให้เหมาะสม ฉันได้ใช้Percona Confirguration Wizardเพื่อสร้างไฟล์การกำหนดค่า แต่ my.ini ไม่ได้แก้ปัญหาเช่นกัน คำถาม ฉันควรเปลี่ยนอะไรเพื่อหยุด MySQL ไม่ให้สร้างตารางชั่วคราวบนดิสก์ จำเป็นต้องเปลี่ยนการตั้งค่าหรือไม่? ฉันควรจะโยนความทรงจำมากกว่านี้หรือไม่ ฉันจะหยุด MySQL ไม่ให้กินหน่วยความจำได้อย่างไร แก้ไข ฉันเปิดใช้งานการslow_queriesบันทึกและค้นพบว่าการสืบค้นSELECT GET_LOCK()ถูกบันทึกไว้ช้า การค้นหาอย่างรวดเร็วเปิดเผยว่าฉันอนุญาตการเชื่อมต่อแบบถาวรในการกำหนดค่า …

2
ฉันจะทำการอบ MySQL อย่างถูกต้องได้อย่างไร?
ฉันต้องการทดสอบประสิทธิภาพ (เรียกว่าอบ) เซิร์ฟเวอร์ MySQL รอบต่อนาทีกับส้อมอื่น ๆ เช่นเซิร์ฟเวอร์ Percona, MariaDB และอาจเป็นไปได้ ฉันหวังว่าด้วยการถามคำถามนี้ฉันสามารถเข้าใจวิธีการที่อยู่เบื้องหลังการตั้งค่าการทดสอบประสิทธิภาพที่เหมาะสม ฉันวางแผนที่จะใช้ sysbench เพื่อทำการทดสอบจริง แต่ฉันเปิดทุกอย่าง ขั้นตอนใดที่ฉันควรทำเพื่อให้แน่ใจว่าผลการทดสอบในการเปรียบเทียบแอปเปิ้ลกับแอปเปิ้ลและ RDBMS นั้นเป็นเพียงตัวแปรเท่านั้น ฉันจะเริ่มต้นที่ไหน ฉันจะประเมินผลลัพธ์ได้อย่างไร คุณให้คำแนะนำอะไรแก่ฉัน

6
ทำไมเราใช้ Group by 1 และ Group by 1,2,3 ในการสืบค้น SQL?
ในแบบสอบถาม SQL เราจะใช้กลุ่มตามข้อเพื่อใช้ฟังก์ชั่นรวม แต่วัตถุประสงค์เบื้องหลังการใช้ค่าตัวเลขแทนชื่อคอลัมน์กับ Group by clause คืออะไร ตัวอย่างเช่น: จัดกลุ่มตาม 1
26 mysql  plsql  group-by  syntax 

2
`ข้อผิดพลาด 1114 (HY000) ตาราง…เต็มไปด้วย Innodb_file_per_table ตั้งค่าเป็น autoextend
ฉันมีฐานข้อมูล MySQL ที่เก็บข้อมูลจำนวนมาก (100-200GB - การวัดทางวิทยาศาสตร์จำนวนมาก) ข้อมูลส่วนใหญ่ถูกเก็บไว้ในตารางSampleเดียว ตอนนี้ฉันกำลังสร้างแบบจำลองทาสของฐานข้อมูลและฉันต้องการใช้ประโยชน์จากinnodb_file_per_tableกระบวนการนี้ ดังนั้นฉันตั้งค่าinnodb_file_per_tableในการกำหนดค่าทาสของฉันและนำเข้าการถ่ายโอนข้อมูลของฐานข้อมูล ด้วยความประหลาดใจของฉันมันล้มเหลวด้วย ข้อผิดพลาด 1114 (HY000) ที่บรรทัด 5602: ตาราง 'ตัวอย่าง' เต็ม ปัจจุบันไฟล์Sample.ibdนี้มีขนาดประมาณ 93GB โดยมีพื้นที่ว่างบนพาร์ติชันมากกว่า 600GB ดังนั้นจึงไม่ใช่ปัญหาเรื่องพื้นที่ว่างบนดิสก์ ดูเหมือนว่ามันจะไปกระทบขีด จำกัด ของระบบไฟล์ทุกประเภท (ฉันใช้ ext4) ฉันจะขอบคุณสำหรับความคิดใด ๆ ที่อาจเป็นสาเหตุหรือสิ่งที่จะตรวจสอบ UPDATE:mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64)ฉันใช้ SELECT @@datadir; -- returns `/home/var/lib/mysql/` SHOW VARIABLES LIKE '%innodb_data_file_path%'; -- ibdata1:10M:autoextend …

2
mysql Lock timeout เกินกำหนดแล้ว ลองรีสตาร์ทธุรกรรม
เรากำลังเรียกใช้แอปพลิเคชั่นจาวา, รันได้ทุกเพศทุกวัย, back end คือ db คือ MySQL, เพิ่งปรับปรุงเป็น mysql 5.6 ทุกอย่างทำงานได้ดีสัปดาห์ที่ผ่านมาเริ่มได้รับข้อผิดพลาดนี้เกินล็อครอหมดเวลา ลองรีสตาร์ทธุรกรรมที่ดูเหมือนไม่หยุดสิ้นสุดไม่รู้ว่าจะทำอย่างไรกับข้อผิดพลาดนี้เพื่อหยุด ทำไมมันเกิดขึ้นทั้งหมดในทันที
26 mysql  mysql-5.6 

5
วิธีการประมาณ / ทำนายขนาดข้อมูลและขนาดดัชนีของตารางใน MySQL
ฉันค้นหาสิ่งที่เป็นวิธีที่ดีที่สุดในการประเมินขนาดของตารางเพื่อที่ฉันได้ศึกษาบล็อกและฟอรัมมากมาย แต่ไม่สามารถหาคำตอบที่ถูกต้องได้ ตัวอย่างเช่นเรามีตาราง City พร้อมกับเครื่องยนต์ InnoDBสมมติว่าในอนาคต (ในอีก 1 ปีข้างหน้า) จะมี 1 ล้านระเบียนดังนั้นสิ่งที่จะเป็นขนาดข้อมูลโดยประมาณและขนาดดัชนีของตารางนั้นในช่วงเวลานี้ mysql> desc City; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | …
26 mysql  innodb 

7
ทำไมต้องใช้ innodb_file_per_table
มีบทความจำนวนมากเกินความจริง (IMHO ของหลักสูตร) innodb_file_per_tableจำเป็นที่จะต้องมี ฉันเข้าใจว่าด้วยinnodb_file_per_tableควรมีการควบคุมที่ดีกว่าตารางบุคคล เช่นการสำรองข้อมูลแต่ละตารางแยกจากกัน อย่างไรก็ตามการเรียกร้องเพื่อประสิทธิภาพที่ดีขึ้นเป็นที่น่าสงสัย ในการทดสอบของฉันไม่มีความแตกต่างของประสิทธิภาพinnodb_file_per_tableและibdata1ฐานข้อมูล 60GB แน่นอนว่ามันเป็นแบบทดสอบง่ายๆที่มีคำสั่งปกติและสถานการณ์อาจแตกต่างกันไปสำหรับการค้นหาที่ซับซ้อนในชีวิตจริง (นี่คือเหตุผลที่ฉันถามคำถามนี้) Linux 64 บิตพร้อมกับext4สามารถจัดการไฟล์ขนาดใหญ่ได้อย่างมีประสิทธิภาพ ด้วยinnodb_file_per_tableการดำเนินการดิสก์ I / O เพิ่มเติมจำเป็น และสิ่งนี้มีความสำคัญในข้อ จำกัดJOINและความซับซ้อนFOREIGN KEY Tablespace ใช้งานร่วมกันบน single ibdata; พื้นที่ตารางเฉพาะสำหรับตารางแยกต่างหากสามารถประหยัดพื้นที่ดิสก์ได้อย่างไร แน่นอนว่ามันเป็นเรื่องง่ายกว่าที่จะเพิ่มพื้นที่ว่างสำหรับแต่ละตารางด้วยALTERแต่ก็ยังเป็นกระบวนการที่มีราคาแพง (ด้วยการล็อคตาราง) คำถาม:ไม่innodb_file_per_tableมีผลกระทบต่อผลการดำเนินงานที่ดีขึ้นของ MySQL? ถ้าใช่ทำไม


2
'ibfk' หมายถึงอะไรใน MySQL
ถ้าฉันสร้างข้อ จำกัด กุญแจต่างประเทศสำหรับตาราง 'รูปถ่าย' ใน phpmyadmin ภายหลังฉันเห็นว่าข้อ จำกัด ชื่อ 'photos_ibfk_1' และข้อ จำกัด ถัดไปเรียกว่า 'photos_ibfk_2' ฯลฯ จากนี้ฉันได้รวบรวมว่า [tablename] _ibfk_constraintIndex การประชุมสำหรับข้อ จำกัด ของฐานข้อมูลใน MySQL ถูกต้องหรือไม่ IBFK หมายถึงอะไร

1
Mysql Innodb: InnoDB: ข้อผิดพลาด: อายุของด่านสุดท้ายคือ InnoDB: ซึ่งเกินความจุของกลุ่มบันทึก
ฉันต้องการ mysql ที่เชี่ยวชาญจริงๆ ฉันเป็นคนใหม่ให้กับ mysql และฉันเห็นเซิร์ฟเวอร์ขัดข้องบางส่วนของฐานข้อมูลของฉันในช่วง 1 สัปดาห์ที่ผ่านมา ฉันใช้ mysql 5.1.36 บน Ubuntu นี่คือเซิร์ฟเวอร์ mysql โดยเฉพาะพร้อมหน่วยความจำ Dual core และ 4GB และ 40GB SSD ข้อผิดพลาดบันทึกคือ: 120413 23:57:15 [Note] Plugin 'FEDERATED' is disabled. 120413 23:57:15 [Warning] option 'innodb-autoextend-increment': unsigned value 2000 adjusted to 1000 120413 23:57:15 InnoDB: Initializing buffer pool, size = …
25 mysql  innodb 

3
innodb_file_format Barracuda
ฉันมีคำถามสองสามข้อสำหรับผู้ที่คุ้นเคยมากกว่า อินสแตนซ์ส่วนใหญ่ของฉันใช้แอนตีโลปแม้จะได้รับการสนับสนุนจาก Barracuda ฉันกำลังมองหาที่จะเล่นกับตาราง innodb ที่บีบอัด ความเข้าใจของฉันคือนี่ใช้ได้เฉพาะในรูปแบบ Barracuda ฉันเห็นว่า innodb_file_format เป็นแบบไดนามิกดังนั้นฉันจึงสามารถสลับกลับได้โดยไม่ต้องตีกลับ มีความหมายใด ๆ ในการทำเช่นนี้ฉันควรระวัง ทั้งหมดที่ฉันบอกได้คือนั่นหมายถึงตารางใหม่หรือการเปลี่ยนแปลงในภายหลังจะถูกสร้างด้วยรูปแบบนั้น ทั้งหมดนี้ถูกต้องหรือไม่ ฉันหวังว่าจะไม่ผ่านและแปลงตารางทั้งหมดของฉัน เป็น kosher ที่มี antelope และ barracude table อยู่ใน tablespace เดียวกันหรือไม่? แม้ว่ามันจะใช้ได้หรือไม่มี gotcha ที่ต้องระวัง? จากสิ่งที่ฉันอ่านและรวบรวมจากการทดสอบของฉันคำตอบคือ: ใช่ ใช่. ฉันไม่แน่ใจ. ปรับปรุง ฉันใช้ Dynamic กับบางตารางที่ถูกบีบอัดในอินสแตนซ์ต่าง ๆ ตั้งแต่โพสต์นี้โดยไม่มีปัญหา ต่อไปฉันละเลยที่จะอ่านhttp://dev.mysql.com/doc/refman/5.5/en/innodb-file-format-identifying.html ในเวลานั้น หลังจากที่คุณเปิดใช้งาน innodb_file_format ที่กำหนดการเปลี่ยนแปลงนี้จะใช้กับตารางที่สร้างขึ้นใหม่เท่านั้นแทนที่จะเป็นตารางที่มีอยู่ หากคุณสร้างตารางใหม่พื้นที่ตารางที่มีตารางจะถูกติดแท็กด้วยรูปแบบไฟล์“ เร็วที่สุด” หรือ“ ง่ายที่สุด” ที่จำเป็นสำหรับคุณสมบัติของตาราง …

2
วิธีที่ปลอดภัยที่สุดในการเปลี่ยนรูปแบบ binlog คืออะไร
เนื่องจากคำเตือนต่อไปนี้ในmysqld.log: [คำเตือน] คำสั่งที่ไม่ปลอดภัยเขียนลงในบันทึกแบบไบนารีโดยใช้รูปแบบคำสั่งตั้งแต่ BINLOG_FORMAT = STATEMENT คำสั่งไม่ปลอดภัยเนื่องจากใช้ส่วนคำสั่ง LIMIT สิ่งนี้ไม่ปลอดภัยเนื่องจากไม่สามารถทำนายชุดของแถวที่รวมไว้ได้ MIXEDฉันต้องการที่จะเปลี่ยนรูปแบบการจำลองแบบ แต่ตามเอกสาร MySQL: การสลับรูปแบบการจำลองแบบที่รันไทม์จะไม่แนะนำเมื่อมีตารางชั่วคราวใด ๆ อยู่เนื่องจากตารางชั่วคราวจะถูกบันทึกเมื่อใช้การจำลองแบบตามคำสั่งเท่านั้นในขณะที่มีการจำลองแบบแถวที่ใช้พวกเขาจะไม่ถูกบันทึกไว้ ดังนั้นคำถามคือฉันจะระบุได้อย่างไรว่ามีตารางชั่วคราวใด ๆ ที่มีอยู่เพื่อเปลี่ยนรูปแบบไฟล์บันทึกอย่างปลอดภัยหรือไม่

4
แก้ไข DEFINER ในหลาย ๆ มุมมอง
ฉันมีปัญหาในการสำรองฐานข้อมูลของฉันหลังจากการอัพเดต ฉันแหย่ระบบของฉันพยายามหาสาเหตุ ฉันค้นหาหนึ่งรายการส่งคืนผลลัพธ์นี้ Got error: 1449: The user specified as a definer ('cittool'@'%') does not exist when using LOCK TABLES หลังจากการตรวจสอบบางอย่างปรากฏว่าตัวระบุสำหรับมุมมองเหล่านี้เป็นบัญชีนักพัฒนาซอฟต์แวร์เก่าที่ถูกลบออกจากระบบ ฐานข้อมูลและมุมมองที่มีปัญหานี้มีการใช้งานไม่บ่อยนักและส่วนใหญ่ถูกเก็บไว้เพื่อการเก็บถาวร มีประมาณ 40 มุมมองที่มีตัวกำหนดที่ไม่มีอยู่อีกต่อไป มีวิธีง่ายๆในการเปลี่ยนผู้กำหนดเป็นบัญชีที่แตกต่างกันในทุกสิ่งในครั้งเดียวหรือไม่? มีวิธีรับ mysqldump เพียงแค่ถ่ายโอนมุมมองทั้งหมดออกไปยังไฟล์ดังนั้นฉันสามารถแก้ไขไฟล์นั้นและสร้างมุมมองใหม่ได้หรือไม่
25 mysql  view 

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