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

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

5
จะกำหนด sort_buffer_size ที่เหมาะสมได้อย่างไร?
ฉันอ่านจากไฟล์กำหนดค่าตัวอย่างซึ่งระบุสิ่งต่อไปนี้: # Sort buffer is used to perform sorts for some ORDER BY and GROUP BY # queries. If sorted data does not fit into the sort buffer, a disk # based merge sort is used instead - See the "Sort_merge_passes" # status variable. Allocated per thread if sort is …

1
ประสิทธิภาพเซิร์ฟเวอร์ MySql ที่ช้า - อะไรและวิธีการตรวจสอบ?
เริ่มต้น: การปฏิเสธความรับผิด ฉันไม่ใช่ MySql Server DBA; ฉันรู้ว่าส่วนใหญ่ของ MSSQL - ซึ่งเป็นเหตุผลที่ฉันต้องการความช่วยเหลือของคุณ สิ้นสุด: ข้อจำกัดความรับผิดชอบ ฉันถูกขอให้ตรวจสอบว่าเหตุใดเอ็นจิ้นเซิร์ฟเวอร์ MySql จึงทำงานได้ไม่ดี - ฉันไม่ได้เห็นหรือไม่มีฐานข้อมูลที่เกี่ยวข้องและต้องการทราบว่าจะเริ่มต้นอย่างไร ฉันจะเริ่มที่ไหน ฉันควรถามคำถามอะไรกับผู้ที่สามารถเข้าถึง MySql ได้ - ฉันไม่รู้ด้วยซ้ำว่าพวกเขากำลังใช้ phpmyadmin หรือเครื่องมืออื่น ๆ เป็นหลัก: ฉันควรถามรายการอะไรและฉันจะตอบกลับแต่ละรายการที่พวกเขาให้ได้อย่างไร ไอเท็มสำคัญที่จะถามเมื่อเกิดปัญหาในการทำงานของฐานข้อมูลคืออะไร? ใน MSSQL ฉันสามารถตรวจสอบsp_who2การเชื่อมต่อที่มีอยู่เพื่อดูว่ามีสิ่งใดที่บล็อกอยู่หรือไม่ * ไม่จำเป็นต้องเจาะจงเนื่องจากอาจมีผลลัพธ์หลายรายการสำหรับแต่ละรายการ แต่ต้องการช่วยให้ลูกบอลกลิ้งเนื่องจากมีผลกระทบต่อผู้ใช้ - เห็นได้ชัดว่าพวกเขาติดตั้งเครื่องยนต์ mysql โดยไม่ต้องมีบอร์ด dba

2
การเปิดใช้งาน LOAD DATA LOCAL INFILE ใน mysql
LOAD DATA LOCAL INFILEไม่ได้เปิดใช้งานโดยค่าเริ่มต้น ปกติก็ควรเปิดใช้งานโดยการวางในlocal-infile=1 my.cnfแต่มันไม่ทำงานสำหรับการติดตั้งทั้งหมด จากประสบการณ์ของฉันมันใช้งานได้กับ Debian 7 แต่ไม่ใช่ Debian 7 ขั้นต่ำ แต่การติดตั้งทั้งสองนั้นมาจากแพ็คเกจ deb ที่คอมไพล์แล้ว ทั้งใน OpenVZ VPS วิธีแก้ปัญหาทำไมlocal-infile=1ไม่ทำงานสำหรับการติดตั้งและวิธีการเปิดใช้งานอย่างปลอดภัยLOAD DATA LOCAL INFILE?

3
แทรกความเร็วสำหรับชุดงานขนาดใหญ่
ในแอปพลิเคชันของฉัน INSERT ของฉันดูเหมือนจะใช้เวลาอย่างมาก ฉันมีวัตถุจำนวนมากในหน่วยความจำ (~ 40-50,000) ซึ่งฉันต้องการแทรกลงในตาราง ลองดูตารางตัวอย่าง CREATE TABLE bill ( id BIGINT(20) PRIMARY KEY, amount INT(11) DEFAULT 0, bill_date DATETIME DEFAULT NOW(), INDEX (bill_date) ) ENGINE=InnoDB การใช้ 3 แถวเป็นขนาดแบทช์ของฉันต่อไปนี้เป็นแนวทางที่ฉันคิดได้สำหรับการแทรก วิธีที่ 1 - สร้างและยิงเม็ดมีด 3 เม็ด INSERT INTO bill (amount, bill_date) VALUES (10, '2012-01-01 00:00:00'); INSERT INTO bill (amount, …
10 mysql  innodb  insert  java  jdbc 

1
เป็นวิธีที่มีประสิทธิภาพมากที่สุดในการชุดคำสั่ง UPDATE ใน MySQL คืออะไร?
ฉันกำลังเขียนแอปพลิเคชันที่ต้องการล้างการอัปเดตจำนวนมากไปยังฐานข้อมูลเป็นระยะเวลานานและฉันติดอยู่กับวิธีเพิ่มประสิทธิภาพการสืบค้น ขณะนี้ฉันกำลังใช้INSERT INTO ... VALUES (..), (..) ON DUPLICATE KEY UPDATEซึ่งทำงานเพื่อแบทช์ค่าทั้งหมดเป็นหนึ่งแบบสอบถาม แต่ดำเนินการช้าๆเลือดตาแทบกระเด็นบนตารางขนาดใหญ่ ฉันไม่จำเป็นต้องแทรกแถวจริงๆ วิธีอื่นที่ฉันเห็นคือการอัปเดตโดยใช้SET value = CASE WHEN...(ซึ่งยากที่จะสร้างเนื่องจากวิธีที่ฉันสร้างคิวรีและฉันไม่แน่ใจเกี่ยวกับประสิทธิภาพCASEของคีย์หลายแสน / พันปุ่ม) และเรียงต่อกันหลาย ๆ อย่าง การปรับปรุง สิ่งเหล่านี้จะเร็วกว่าวิธีการปัจจุบันของฉันหรือไม่ มันทำให้ฉันงุนงงเท่าที่ฉันสามารถบอกได้ว่าไม่มีวิธีที่มีประสิทธิภาพและไร้เหตุผลในการทำสิ่งนี้ใน MySQL หากไม่มีวิธีที่เร็วกว่าจริงON DUPLICATE KEYๆ มันจะคุ้มไหมที่จะเปลี่ยนมาใช้ PostgreSQL และใช้UPDATE FROMไวยากรณ์ของมัน คำแนะนำอื่น ๆ ยังชื่นชมอย่างมาก! แก้ไข: นี่คือหนึ่งในตารางที่ได้รับการปรับปรุงบ่อยครั้ง ฉันได้ลบชื่อคอลัมน์เนื่องจากไม่เกี่ยวข้อง CREATE TABLE IF NOT EXISTS `table` ( `id` int(10) unsigned …
10 mysql  update 

2
คำสั่ง mysqldump จะสำรองมุมมองทั้งหมดที่มีอยู่ใน DB หรือมีคำสั่งพิเศษหรือไม่?
ฉันพยายามสำรองฐานข้อมูลทั้งหมดพร้อมกับมุมมอง ฉันจะใช้mysqldumpคำสั่ง ฉันสงสัยว่าจะคัดลอกมุมมองทั้งหมดหรือไม่ฉันจะต้องใช้คำสั่งแยกต่างหาก กรุณาแนะนำคำตอบ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก
10 mysql  backup  mysqldump  view 

6
ไม่สามารถเชื่อมต่อกับฐานข้อมูล MySQL ผ่าน SSH ด้วย Workbench
ฉันกำลังพยายามเชื่อมต่อกับฐานข้อมูลของฉันผ่านทาง SSH tunneling จากหนึ่งในเว็บแอพเซิร์ฟเวอร์ของเราด้วย MySQL Workbench นี่คือการตั้งค่าพื้นฐาน โปรดทราบว่าฉันเปลี่ยนค่าบางอย่างในภาพหน้าจอเพื่อเหตุผลด้านความปลอดภัย ปัญหาคือทุกครั้งที่ฉันพยายามเชื่อมต่อผ่านอุโมงค์ SSH จากหนึ่งในเซิร์ฟเวอร์แอปของเราฉันได้รับข้อผิดพลาดดังต่อไปนี้: ไม่สามารถเชื่อมต่อกับ us-east-1.amazonaws.com ผ่านอุโมงค์ SSH ที่ computer.amazonaws.com กับผู้ใช้ social_shop_prod ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ใน 127.0.0.1 อย่างไรก็ตามหากฉันใช้ข้อมูลรับรองเดียวกันกับ SSH ผ่านบรรทัดคำสั่งต่อไปนี้: mysql -u social_shop_prod -h us-east-1.amazonaws.com -p ฉันสามารถเชื่อมต่อได้สำเร็จและรับพรอมต์คำสั่งแบบโต้ตอบ MySQL เคยพูดคุยกับทีมพัฒนาที่เหลือของฉันที่นี่และไม่มีใครรู้ว่าทำไมฉันไม่สามารถเจาะผ่าน SSH จากเซิร์ฟเวอร์แอปของเราด้วย Workbench; แต่เมื่อฉัน SSH กับหนึ่งในเซิร์ฟเวอร์แอปของเราและเชื่อมต่อกับ MySQL ผ่านทางบรรทัดคำสั่ง; ฉันสามารถเชื่อมต่อได้สำเร็จ และทำไมจึงพยายามเชื่อมต่อมากกว่า 127.0.0.1 ฉันไม่ได้ระบุในการกำหนดค่า ไม่มีไฟล์โฮสต์ของฉันที่เปลี่ยนเส้นทางโดเมนที่แสดงด้านล่างไปยัง IP นั้น …

1
ทริกเกอร์และขั้นตอนการถ่ายโอนข้อมูล mysqldump สามารถ
มีวิธีการสร้าง mysqldump ซึ่งจะบันทึกทริกเกอร์และขั้นตอนทั้งหมดจากฐานข้อมูลที่ระบุหรือไม่? บางครั้งก่อนหน้านี้ฉันอ่านแล้วว่าmysqldumpจะช่วยทริกเกอร์ของฉันด้วย แต่มันก็ดูไม่เหมือนกัน คำถามที่สองของฉันคือฉันจะตรวจสอบในไฟล์ sql ได้อย่างไรถ้ามีทริกเกอร์อยู่

2
มุมมองจำเป็นต้องมีข้อ จำกัด กุญแจต่างประเทศของตัวเองหรือไม่?
คำเตือน: ฉันเป็นโปรแกรมเมอร์ไม่ใช่ DBA ดังนั้นทนกับฉัน ... ฉันมีมุมมองที่ฉันใช้เพื่อจับคู่เอนทิตี 2 รายการเข้าด้วยกัน ฉันต้องเข้าร่วมระหว่างตารางที่แตกต่างกันสองสามเพื่อให้ได้: CREATE OR REPLACE VIEW V_SCREENING_GROUP_SITES AS ( SELECT SG.SCREENING_GROUP_ID, V.SITE_ID FROM SCREENING_GROUP SG, VISIT V, VISIT_DATE VD WHERE VD.VISIT_ID = V.VISIT_ID AND V.SCREENING_GROUP_ID = SG.SCREENING_GROUP_ID); ด้านบนเป็นเพียงบริบทไม่ต้องกังวลมากเกินไป สิ่งที่ฉันต้องรู้คือวิธีสร้างฟิลด์ในมุมมอง V_SCREENING_GROUP_SITES ใหม่ของฉัน (SCREENING_GROUP_ID และ SITE_ID) ทำหน้าที่เป็นคีย์ต่างประเทศในตาราง SCREENING_GROUP และ SITE หรือว่ามันสำคัญ ถ้าเป็นตารางฉันจะทำ: ALTER TABLE V_SCREENING_GROUP_SITES …

2
ฉันจะหาค่ามัธยฐานของคอลัมน์ใน MySQL ได้อย่างไร
ฉันสามารถจินตนาการการทำเช่นนี้กับแบบสอบถามฐานข้อมูลที่สอง ครั้งแรกที่ค้นหาจำนวนแถวในฐานข้อมูลและที่สองเลือกที่มีORDER BYในคอลัมน์ที่ฉันสนใจและLIMIT X, 1ที่ X คือครึ่งหนึ่งของจำนวนแถว มีวิธีง่ายๆในการทำเช่นนี้กับแบบสอบถามเดียวเท่านั้นหรือไม่ ตอนนี้ฉันกำลังใช้ค่าเฉลี่ยในการคำนวณของฉัน แต่ฉันคิดว่าค่าเฉลี่ยจะดีกว่า ไม่มีขอบเขตบนค่าและพวกเขาถูกผูกไว้จากด้านล่างโดย 0 แก้ไข: ใช่ฉันหมายถึงการพูดว่า 'ค่ามัธยฐาน' แต่มีข้อผิดพลาดของสมองและค้นหา 'ค่าเฉลี่ย' ตอนนี้ฉันพบคำตอบที่stackoverflow แล้ว
10 mysql 

2
MySQL จัดเก็บประเภทข้อมูลจุดเป็น LAT LNG หรือ LNG LAT หรือไม่
ฉันเคยเห็นรูปแบบสถานที่เป็นละติจูดตามด้วยลองจิจูด แต่ใช้ห้องสมุดฉันเชื่อว่าฉันเข้าใจ MySQL เพื่อเก็บไว้เป็นPOINT(LNG LAT)ลำดับกลับกัน ห้องสมุดของฉันผิดหรือเป็นรูปแบบจริงหรือไม่ ฉันไม่พบรายละเอียดนี้ในเอกสาร MySQL
9 mysql  spatial 

4
ปัญหาในการรับรหัสไปรษณีย์ในรัศมีผ่าน MySQL
ฉันมีตารางรหัสไปรษณีย์ซึ่งมี lat lat ตรงกลาง lng สำหรับรหัสไปรษณีย์แต่ละอัน ฉันใช้มันเพื่อรับรายการรหัสไปรษณีย์ภายในรัศมีไมล์ที่กำหนดจากจุดใด ๆ มันเกิดขึ้นกับฉันว่าเพียงเพราะจุดศูนย์กลางของซิปไม่ได้อยู่ในรัศมีที่กำหนดไม่ได้หมายความว่าซิปนั้นไม่ได้อยู่ในรัศมี ฉันใช้ทักษะศิลปะขั้นสูงขั้นสูงของฉันเพื่อแสดงจุดที่นี่ Blobs Stripy สีเขียวแสดงรหัสไปรษณีย์ A, B และ C รอยเปื้อนสีแดงเป็นศูนย์กลางทางภูมิศาสตร์สำหรับรหัสไปรษณีย์แต่ละอัน จุดสีแดงม่วงคือตำแหน่งเป้าหมายและ .. วงกลมสีน้ำเงินที่เป็นก้อนนั้นมีรัศมี 1 ไมล์จากตำแหน่งเป้าหมาย หากฉันเรียกใช้แบบสอบถามสำหรับรหัสไปรษณีย์ทั้งหมดที่อยู่ในรัศมี 1 ไมล์จากรอยเปื้อนสีชมพูรหัสไปรษณีย์ B และ C เท่านั้นที่จะถูกส่งคืนเนื่องจากจุดศูนย์กลางสำหรับรหัสไปรษณีย์ A ไม่ได้อยู่ในรัศมีหนึ่งไมล์แม้ว่ารอยเปื้อนสีชมพูจะเกิดขึ้นเอง ชัดเจนในรหัสไปรษณีย์ A. SELECT *, p.distance_unit * DEGREES(ACOS(COS(RADIANS(p.latpoint)) * COS(RADIANS(z.y)) * COS(RADIANS(p.longpoint) - RADIANS(z.x)) + SIN(RADIANS(p.latpoint)) * SIN(RADIANS(z.y)))) AS …

2
คลังข้อมูล: ฉันจะค้นหาภาพรวมรายวันได้อย่างไร
ฉันมีสแนปชอตของฐานข้อมูลที่ไม่ใช่ชุดเวลา ตัวอย่างเช่น: ภาพรวมวันที่ 1: +----+---------------+------------+------------+ | ID | Title | Category | Date | +----+---------------+------------+------------+ | 1 | My First Post | helloworld | 2015-01-01 | +----+---------------+------------+------------+ Snapshot day 2 (มีการโพสต์ใหม่ในวันนี้): +----+----------------+------------+------------+ | ID | Title | Category | Date | +----+----------------+------------+------------+ | 1 | My first post | helloworld …

2
เชื่อมต่อฐานข้อมูล MySQL กับคอนเทนเนอร์ MySQL
ฉันดึงภาชนะ MySQL จากDockerhubและมันทำงานบน macbook pro ของฉันตามที่คุณเห็นดังต่อไปนี้ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 12cd3deaa3f0 mysql:latest "/entrypoint.sh mysql" 47 hours ago Up 10 minutes 3306/tcp mysqldb จากนั้นฉันดาวน์โหลด MySQL workbench และฉันพยายามเชื่อมต่อกับคอนเทนเนอร์ MySQL แต่มันไม่ทำงาน มันแสดงให้เห็นข้อผิดพลาดการเชื่อมต่อ Your connection attempt failed for user 'root' from your host to server at 192.168.99.102:3306: Can't connect to …

2
ดูการเชื่อมต่อ MySQL ที่ใช้งานต่อผู้ใช้
ฉันต้องการแบบสอบถามที่จะให้จำนวนการเชื่อมต่อที่เปิดใช้งานหรือเปิดไปยังฐานข้อมูลเฉพาะสำหรับผู้ใช้บางราย ฉันค้นหามาหลายชั่วโมงแล้วก็หาอะไรไม่ได้แล้ว ฉันสนิทแล้วนี่คือสิ่งที่ฉันได้ลอง SHOW STATUS WHERE `variable_name` = 'Threads_connected'; SHOW STATUS LIKE '%onn%'; SELECT * FROM information_schema.processlist WHERE USER='database_user'; ฉันทำงานให้กับ บริษัท ผู้ให้บริการเว็บโฮสติ้งและหนึ่งในลูกค้าของเรายังคงถึงmax_user_connectionsขีด จำกัด ดังนั้นในการแก้ไขปัญหาเหตุใดฉันจึงจำเป็นต้องรู้ว่ามีผู้ใช้ของเขาเชื่อมต่อกันกี่รายในขณะนี้เนื่องจากเขาไม่ใช่เซิร์ฟเวอร์ที่ใช้ร่วมกัน ฉันกำลังใช้ MySQL (InnoDB) รุ่น 5.5.36 ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

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