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

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

3
ตัวแปรสถานะ MySQL Handler_read_rnd_next กำลังเติบโตขึ้นอย่างมาก
ในสถานะ MYSQL ค่า Handler_read_rnd_next นั้นสูงมาก ฉันทราบว่าค่านี้จะเพิ่มขึ้นเมื่อดำเนินการแบบสอบถามซึ่งไม่มีดัชนีที่เหมาะสม แต่แม้ว่าเราจะเรียกใช้สถานะการแสดงเช่น 'Handler_read_rnd_next' ค่านี้จะเพิ่มขึ้น 2 จากการตั้งค่าสถานะนี้เรากำลังตรวจสอบสถานะบางอย่าง ดังนั้นทุกครั้งสถิตินี้จึงมีความสำคัญ เราสามารถแยกการดำเนินการ 'show' เหล่านี้ออกจากการนับ 'Handler_read_rnd_next' อีกหนึ่งตัวอย่างสำหรับสิ่งนี้ มีตารางที่มี 10 แถวตารางจะถูกจัดทำดัชนีในคอลัมน์ 'data' และหากเราประมวลผลแบบสอบถามต่อไปนี้: select data from test where data = 'vwx' -> returns one row และถ้าเราตรวจสอบค่าของ 'Handler_read_rnd_next' มันจะเพิ่มขึ้น 7 ต่อไปนี้เป็นผลลัพธ์ของคำสั่งอธิบายสำหรับแบบสอบถามด้านบน: explain select data from test where data = 'vwx'; id, select_type, …

2
มี gotchas เลยด้วยการแปลงจาก MyISAM เป็น InnoDB?
ฉันพร้อมที่จะย้ายจาก MyISAM ไปยัง InnoDB แล้ว แต่ต้องการทราบว่ามีรายการสิ่งที่ต้องค้นหามากมายหรือไม่ ตัวอย่างเช่นผมไม่ได้เห็นกล่าวถึงรายการใด ๆ ที่ทำงานDISABLE KEYSบนตาราง InnoDB ALTER TABLEจะโยนเตือนยกเว้นหน้าคู่มือสำหรับ มันเป็นสิ่งที่ฉันต้องรู้ก่อนที่จะเปลี่ยนใจ ฉันคิดว่าฉันสบายดีกับคำสั่งของฉัน แต่ดูเหมือนจะไม่
11 mysql  innodb  myisam 

3
แคชฐานข้อมูล MySQL ในหน่วยความจำ
ฉันมีปัญหากับเว็บไซต์ที่มีฐานข้อมูล MySQL 600MB เว็บไซต์ช้าเกินไป ฉันสังเกตว่าฐานข้อมูล MySQL ที่ใหญ่ขึ้นนั้นจะช้าลง เมื่อมันเป็น 5MB เว็บไซต์นั้นเร็วมาก เมื่อมันเริ่มมีขนาดใหญ่ขึ้นมันก็เริ่มช้าลงและช้าลงและตอนนี้ที่ 600MB มันช้าจริงๆใช้เวลาในการโหลดหน้าเว็บประมาณ 10 วินาที ฉันตรวจสอบกระบวนการด้านบนและไม่มีอะไรเกี่ยวข้องกับโหลดสูงหรืออะไร มันไม่ได้เกี่ยวข้องกับ IOPS เมื่อฉันทำการทดสอบบนไดรฟ์ HDD 7.2k rpm และมันก็มีปัญหาแบบเดียวกันตอนนี้กับการทดสอบกับไดรฟ์ Intel 320 SSD ดังนั้นฉันไม่คิดว่ามันจะเป็นการสืบค้นที่สูง เว็บไซต์กำลังใช้งาน Wordpress และมีปลั๊กอินที่เหมือนกัน 9 รายการ มีคนบอกว่ามันอาจเป็นปลั๊กอิน ... บางทีอาจจะ ... แต่ตอนนี้ฉันแค่ต้องการแคชฐานข้อมูลทั้งหมดในหน่วยความจำและต้องการขอความช่วยเหลือและทิศทางในการเริ่มต้นและวิธีการที่จะทำ ฉันมี 16GB RAM และ i5-2400 4 cores ที่ 3.1 GHz ระบบปฏิบัติการคือ centos 5.7 …

5
mysqldump ไม่สมบูรณ์
ฉันพยายามเรียกใช้ mysqldump เพื่อสร้างสแนปชอตของฐานข้อมูลและฉันพบว่ามันจะหยุดกลางคันแบบสุ่มโดยไม่ต้องรายงานข้อผิดพลาดใด ๆ ฐานข้อมูลของฉันมีขนาดค่อนข้างเล็ก (ประมาณ 100MB) และใช้งาน InnoDB ฉันใช้มันเหมือน: mysqldump --force --single-transaction --quick --user myuser --password=mypass -h mydatabasehost mydb > /tmp/snapshot.sql การตรวจสอบรหัสออกรายงาน 0 รุ่นของฉันคือ: mysqldump Ver 10.13 Distrib 5.1.52 สำหรับ redhat-linux-gnu (i386) ฉันเคยเห็นโพสต์ที่คล้ายกันและแม้กระทั่งรายงานข้อผิดพลาดอย่างเป็นทางการแต่ดูเหมือนว่าจะไม่มีวิธีแก้ปัญหา ฉันจะใช้ mysqldump เพื่อถ่ายภาพฐานข้อมูลที่สมบูรณ์ได้อย่างไร แก้ไข: ฐานข้อมูลของฉันอยู่ใน RDS ของ Amazon ในปัจจุบัน

6
สิ่งที่อาจทำให้หมดเวลาสอบถามแปลกระหว่าง PHP และ MySQL?
ฉันเป็นผู้พัฒนาอาวุโสในแอปพลิเคชัน Software-as-a-Service ที่ลูกค้าหลายรายใช้กัน ซอฟต์แวร์ของเราทำงานบนคลัสเตอร์ของแอพพลิเคชันเซิร์ฟเวอร์ Apache / PHP ขับเคลื่อนโดยแบ็กเอนด์ MySQL เมื่อวันหนึ่งอินสแตนซ์ของซอฟต์แวร์โค้ด PHP ในการค้นหารายชื่อประเภทที่จะหมดเวลาเมื่อลูกค้ามีมากกว่า 29 ประเภท ฉันรู้ว่ามันไม่สมเหตุสมผล ไม่มีอะไรพิเศษเกี่ยวกับหมายเลข 30 ที่จะทำลายสิ่งนี้และลูกค้ารายอื่น ๆ ที่มีมากกว่า 30 หมวดหมู่อย่างไรก็ตามปัญหาคือทำซ้ำได้ 100% เมื่อการติดตั้งครั้งนี้มี 30 หมวดหมู่หรือมากกว่าและหายไปเมื่อมีน้อยกว่า 30 หมวด ตารางในคำถามคือ: CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(64) NOT NULL, `title` varchar(128) NOT NULL, …

3
การจำลองแบบ MySQL ได้รับผลกระทบจากการเชื่อมต่อระหว่างกันที่มีความล่าช้าสูงหรือไม่
เรามี vanilla master และ MySQL setup ที่อยู่ในดาต้าเซ็นเตอร์ที่ต่างกันและสเลฟอื่นในดาต้าเซ็นเตอร์เดียวกับ master แบนด์วิดท์ระหว่างดาต้าเซ็นเตอร์นั้นค่อนข้างสูง (ในการวัดประสิทธิภาพเครือข่ายที่เราทำเราสามารถไปถึง 15MB / วินาที) แต่มีความหน่วงแฝงอยู่ประมาณ 28ms มันไม่สูงด้วยวิธีใด ๆ แต่มันจะสูงกว่าเวลาแฝงย่อยที่สองในดาต้าเซ็นเตอร์เดียวกัน ในบางครั้งเราพบความล่าช้าที่รุนแรง (2,000 วินาทีขึ้นไป) กับการลบสลาฟในขณะที่สลาฟท้องถิ่นจะอัปเดตอยู่เสมอ เมื่อดูที่ remote slave lagging, โดยปกติแล้วเธรด SQL จะใช้เวลาในการรอเธรด IO เพื่ออัพเดตล็อกรีเลย์ ต้นแบบแสดง "กำลังรอเน็ต" หรือบางอย่างในเวลาเดียวกัน ดังนั้นหมายความว่าเป็นเครือข่าย แต่เรายังคงมีแบนด์วิดธ์ฟรีในขณะที่เกิดเหตุการณ์นี้ คำถามของฉันคือสามารถแฝงระหว่างศูนย์ข้อมูลที่มีผลต่อประสิทธิภาพการจำลองแบบหรือไม่ slave io thread เพียงแค่สตรีมเหตุการณ์จนกระทั่งต้นแบบหยุดส่งหรือว่ามันรวมกำไรหลักระหว่างเหตุการณ์หรือไม่?

1
ความแตกต่างระหว่าง XtraBackup และ rsync คืออะไร?
ใช่ฉันจะวิ่งตามพวกเขาทั้งคู่ ... อย่างไรก็ตามฉันอยากจะรู้ว่า ... XtraBackup กำลังทำอะไรอยู่ซ้ำแล้วซ้ำอีก rsync -ac src dest? มีอะไรพิเศษเกี่ยวกับ XtraBbackup บ้าง? XtraBackup โต้ตอบกับ mysqld อย่างไร
11 mysql  backup  percona 

3
คุณจะซิงค์ Master MySQL DB กับ Slave DB ใหม่ได้อย่างไรถ้า Master ทำการออฟไลน์
MySQL Server 1 ทำงานเป็น Master MySQL Server 2 ทำงานเป็น Slave ด้วยฐานข้อมูลออนไลน์ทั้งคู่พวกเขาอยู่ใน "ซิงค์ที่สมบูรณ์แบบ" หาก Slave ออฟไลน์จะไม่มีปัญหาหาก Master ยังคงออนไลน์ พวกเขาจะกลับไปซิงค์อีกครั้งเมื่อ Slave ออนไลน์อีกครั้ง นอกเหนือจากการกำหนดค่าเซิร์ฟเวอร์ฉันเปลี่ยนเส้นทางการเชื่อมต่อ (ด้วยรหัส JSP) สำหรับฐานข้อมูล Slave ถ้าเจ้านายเป็นออฟไลน์ (ฉันทดสอบแน่นอนด้วย /etc/init.d/mysqld หยุด) เมื่อ Master กลับมาออนไลน์จะมีวิธีการใดในการซิงค์ Master กับการอัพเดต Slave โดยอัตโนมัติหรือไม่?

2
InnoDB สร้างข้อผิดพลาดของตาราง:“ ขนาดแถวใหญ่เกินไป”
เรามีวิศวกรบางคนที่แผ่โครงสร้างฐานข้อมูลให้เป็นมาตรฐานในตารางชั่วคราวเพื่อวัตถุประสงค์ในการสร้างรายงาน คอลัมน์มีการระบุไว้เป็นTEXT NOT NULL(ฉันรู้ว่า "ทำไมพวกเขาถึงทำอย่างนั้น?" ขอแค่สมมติว่าเรากำลังพูดถึงเรื่องนี้) เราใช้ MySQL 5.1.48 Community RHEL5 กับปลั๊กอิน InnoDB 1.0.9 บน Linux เมื่อใช้ MyISAM เราไม่เคยพบข้อ จำกัด ขนาดตารางของคอลัมน์สูงสุดหรือความยาวแถวสูงสุด (ในระหว่างการตรวจสอบเราได้ จำกัด จำนวนคอลัมน์สูงสุดที่ 2598 (2599 ข้อผิดพลาดทำให้เกิดข้อผิดพลาด 1117) ด้วย InnoDB เรากำลังขีด จำกัด ขีด จำกัด เหล่านี้ ตาราง (ไม่มีการแทรกข้อมูล) เป็น: ข้อผิดพลาด 1118 (42000) ที่บรรทัด 1: ขนาดแถวใหญ่เกินไป ขนาดแถวสูงสุดสำหรับประเภทตารางที่ใช้ไม่นับ BLOB คือ 8126 คุณต้องเปลี่ยนบางคอลัมน์เป็น TEXT …
11 mysql  innodb 

4
ตรวจสอบการเข้าสู่ระบบในฐานข้อมูล MySQL
มีวิธีตรวจสอบการเข้าสู่ระบบ MySQL หรือไม่ ฉันต้องการที่จะสามารถสร้างชื่อผู้ใช้สำหรับพนักงานแต่ละคนและดังนั้นจึงสร้างเส้นทางการตรวจสอบของการเข้าสู่ระบบ อย่างไรก็ตาม googling กลับไม่ได้ผลลัพธ์ที่ดี ยิ่งเราตรวจสอบได้มากเท่าไหร่ก็ยิ่งดีเท่านั้น อย่างน้อยที่สุดมันก็ดีที่รู้ว่าใครเข้าระบบเมื่อ มันจะดียิ่งขึ้นถ้าดูว่าใครดำเนินการสืบค้นเมื่อใด บันทึกส่วนใหญ่จะมีการบอกลูกค้าว่าเรามีพวกเขาเนื่องจากมีข้อมูลที่อาจอ่อนไหวในฐานข้อมูล เห็นได้ชัดว่าความสามารถในการตรวจสอบแบบสอบถามที่ดำเนินการโดยผู้ใช้แต่ละคน (และเมื่อ) จะทำให้เราสามารถระบุได้ดีขึ้นว่าใครเป็นสาเหตุของปัญหาด้านความปลอดภัยหากควรเกิดขึ้น

8
MySQL - วิธีตรวจสอบค่าในคอลัมน์ทั้งหมด
ฉันอยากรู้อยากเห็นมีวิธีที่ดีในการค้นหาคอลัมน์ทั้งหมดสำหรับค่าที่กำหนดหรือไม่ สำหรับจุดประสงค์ของฉันมันไม่จำเป็นต้องรวดเร็วเลยมันเป็นเพียงแค่จุดเดียว 1 จุดและฉันไม่ต้องการพิมพ์ชื่อเขตทุกชื่อ นั่นคือสิ่งที่ฉันจะทำตอนนี้ แต่ฉันคิดว่าแน่นอนว่ามีวิธีที่ดีกว่า ฉันต้องการที่จะเปิดนี้: SELECT * FROM table WHERE col1 = 'val' OR col2 = 'val' OR col3 = 'val'; เป็นนี้ SELECT * FROM table WHERE * = 'val' ... หรือดีกว่า (แม้ว่าฉันจะสงสัยอย่างจริงจัง ... ) SELECT * FROM table WHERE * like '%val%' ฉันพบสิ่งนี้ซึ่งดูเหมือนจะไม่ค่อยดี แต่ฉันไม่พบอะไรที่ใกล้เคียงกว่านี้: SELECT whatever WHERE …
11 mysql 

5
วิธีตรวจสอบว่ามีการติดตั้งโปรแกรมฐานข้อมูลใดบนเซิร์ฟเวอร์ DataBase ที่ฉันมี acces ให้เรียกใช้แบบสอบถาม
ฉันต้องการตรวจสอบประเภทของ sql ที่กำลังทำงานอยู่บนเซิร์ฟเวอร์ Datasase ที่ฉันสามารถเข้าถึงได้ ฉันมีสิทธิ์เข้าถึงเว็บอินเตอร์เฟสและรายการตารางเท่านั้น ผ่านอินเทอร์เฟซฉันสามารถเรียกใช้แบบสอบถามบนตารางที่มีอยู่ในรายการ ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับเซิร์ฟเวอร์และรุ่นที่เซิร์ฟเวอร์ใช้งานอยู่ได้อย่างไร ฉันไม่รู้เกี่ยวกับ IP หรือ PORT ที่เซิร์ฟเวอร์กำลังทำงาน ฉันต้องการทราบว่าเซิร์ฟเวอร์นั้นเป็น MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL หรือเซิร์ฟเวอร์ sql อื่น ๆ เว็บไซต์ที่ผมพูดถึงเป็นหนึ่งในนี้: w3schools.com SQL แก้ไข แก้ไข 2: สำหรับบางคำสั่ง select sqlite_version () ใช้งานได้สำหรับฉันมันไม่ทำงาน นี่คือภาพหน้าจอของการตอบสนอง แก้ไข 3: บน Chromium Browser คำสั่งทำงานได้อย่างถูกต้อง อย่างไรก็ตามใน Firefox Browser คำสั่งไม่ทำงาน ฉันยังพูดถึงว่าฉันใช้ Linux …

2
ฉันควรใช้ UUID เช่นเดียวกับ ID
ฉันใช้ UUID ในระบบของฉันมาระยะหนึ่งแล้วด้วยเหตุผลหลายประการตั้งแต่การบันทึกไปจนถึงความสัมพันธ์ที่ล่าช้า รูปแบบที่ฉันใช้เปลี่ยนไปเมื่อฉันไร้เดียงสาน้อยลงจาก: VARCHAR(255) VARCHAR(36) CHAR(36) BINARY(16) เมื่อฉันไปถึงขั้นสุดท้ายBINARY(16)ที่ฉันเริ่มเปรียบเทียบประสิทธิภาพกับจำนวนเต็มพื้นฐานที่เพิ่มขึ้นอัตโนมัติ การทดสอบและผลลัพธ์แสดงไว้ด้านล่าง แต่ถ้าคุณต้องการสรุปก็แสดงว่าINT AUTOINCREMENTและBINARY(16) RANDOMมีประสิทธิภาพเหมือนกันในช่วงข้อมูลสูงสุด 200,000 (ฐานข้อมูลถูกเติมข้อมูลล่วงหน้าก่อนการทดสอบ) ตอนแรกฉันสงสัยว่าจะใช้ UUID เป็นคีย์หลักและแน่นอนฉันก็ยังอยู่ แต่ฉันเห็นศักยภาพที่นี่เพื่อสร้างฐานข้อมูลที่ยืดหยุ่นที่สามารถใช้ทั้งสองได้ ในขณะที่หลายคนเครียดกับข้อได้เปรียบของทั้งสองข้อเสียอะไรที่ถูกยกเลิกโดยการใช้ข้อมูลทั้งสองชนิด? PRIMARY INT UNIQUE BINARY(16) กรณีการใช้งานสำหรับการตั้งค่าประเภทนี้จะเป็นคีย์หลักดั้งเดิมสำหรับความสัมพันธ์ระหว่างตารางโดยมีตัวระบุเฉพาะที่ใช้สำหรับความสัมพันธ์ระหว่างระบบ สิ่งที่ฉันพยายามค้นพบเป็นหลักคือประสิทธิภาพที่แตกต่างระหว่างสองแนวทาง นอกเหนือจากพื้นที่ดิสก์สี่เท่าที่ใช้ซึ่งอาจเล็กน้อยมากหลังจากเพิ่มข้อมูลเพิ่มเติมพวกเขาดูเหมือนจะเหมือนกัน schema: -- phpMyAdmin SQL Dump -- version 4.0.10deb1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Sep 22, 2015 at 10:54 AM …

8
ฉันจะทำให้ลูกค้า MySQL อ่านรหัสผ่านจาก mylogin.cnf ได้อย่างไร
ฉันพยายามทำให้ไคลเอนต์ mysql เชื่อมต่อกับเซิร์ฟเวอร์ mysql โดยไม่ต้องใช้รหัสผ่านในการโต้ตอบ ขั้นตอนดำเนินการ: 1) ขั้นแรกสร้างไฟล์ mylogin.cnf $ mysql_config_editor set --user=<user> --password --host=<host> Enter password: 2) สร้างไฟล์สำเร็จแล้ว: $ ls -la .mylogin.cnf -rw-------. 1 urmt urmt 136 Dec 19 11:01 .mylogin.cnf $ mysql_config_editor print --all [client] user = <user> password = ***** host = <host> 3) เชื่อมต่อโดยใช้ไคลเอนต์ mysql $ …

3
MySQL: การเข้าร่วมใดดีกว่าระหว่างการเข้าร่วมด้านนอกด้านซ้ายและการเข้าร่วมภายใน
การเข้าร่วมใดจะดีกว่าการแสดงผลหากพวกเขาทั้งหมดให้ผลลัพธ์เดียวกัน ตัวอย่างเช่นผมมีสองตารางและemployees(emp_id,name, address, designation, age, sex) work_log(emp_id,date,hours_wored)เพื่อให้ได้ผลลัพธ์ที่เฉพาะเจาะจงทั้งสองinner joinและleft joinให้ผลลัพธ์เดียวกัน แต่ฉันยังมีข้อสงสัยบางอย่างที่ไม่ จำกัด เฉพาะคำถามนี้เท่านั้น การเข้าร่วมใดที่มีประสิทธิภาพมากกว่าซึ่งควรเลือกในกรณีที่มีค่าผลลัพธ์เดียวกัน ปัจจัยอื่น ๆ ที่ต้องพิจารณาในเวลาที่สมัครเข้าร่วมมีอะไรบ้าง มีความสัมพันธ์ระหว่างการเข้าร่วมภายในกับการเข้าร่วมไขว้ไหม?

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