Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giảm các truy vấn MySQL thành một truy vấn để tăng tốc độ

Xem liệu tôi hiện đang nắm bắt lưu lượng truy cập bằng Nhật ký chung:

SELECT @@general_log;   -- 1 if capturing, 0 if not
-- for me, a 1. This means I have been capturing (good for development. Poor idea for Production)

SELECT @@general_log_file; -- file name for General Log if capturing.
-- for me: GeneralLogBegin_20160803_1420.log

SELECT @@datadir; -- the location of the general_log, and other logs
-- for me: C:\ProgramData\MySQL\MySQL Server 5.6\Data\

Bây giờ tôi tắt tính năng ghi Nhật ký chung bên dưới, vì tôi đang chụp:

SET GLOBAL general_log=0; -- stop logging

TÔI CHUYỂN tệp nhật ký của mình vào thư mục sao lưu, đổi tên nó thành GL_from_20160803_1420_to_20160806_1559

Có một chút không rõ ràng về nội dung và phạm vi ngày giờ chụp mà tệp ở trên thể hiện.

Đặt tên mới cho chụp tệp nhật ký (Bắt đầu phân đoạn cho tên tệp)

SET GLOBAL general_log_file='GeneralLogBegin_20160806_1559.log';
SET GLOBAL general_log=1; -- Start logging again

Chạy một ứng dụng của tôi kết nối với máy chủ và Nhật ký chung chứa:

ChunkA:

160806 16:08:37   170 Connect   [email protected] on stackoverflow
          170 Query SHOW VARIABLES
          170 Query SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())
          170 Query SHOW COLLATION
          170 Query SET NAMES latin1
          170 Query SET character_set_results=NULL
          170 Init DB   my_db_name

Lưu ý:bạn có thể cần phải làm

mysqladmin -u root -p flush-log

(được nhắc nhập mật khẩu) để chuyển nhật ký từ bộ nhớ cache vào tệp. Nhân tiện, Văn bản siêu phàm thật tuyệt vời khi tự động làm mới tệp văn bản hiện đang được tải. Chẳng hạn như tệp nhật ký.

Vì vậy, ChunkA của tôi ở trên là sơ đồ kết nối của một kết nối mới đến. Nó được điều khiển bởi các lệnh của chương trình đang sử dụng, bất kể điều gì có thể. Nó là trước khi bạn sử dụng các lệnh chương trình của bạn và viết mã. Nếu bạn liên tục tạo các kết nối mới, thực thi mã bạn viết và ngắt kết nối, thì đây đều là một phần của hành lý. Bạn không kiểm soát được việc tối ưu hóa chúng theo bất kỳ cách đơn giản nào.

Những gì bạn nên xem xét làm là TẮT nhật ký Truy vấn Chung trong môi trường sản xuất. Và chỉ bật nó trong cài đặt môi trường Gỡ lỗi và Kiểm tra. Có nó sẽ làm tăng gánh nặng không cần thiết cho bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gửi dữ liệu từ javascript đến cơ sở dữ liệu mysql

  2. JSON mã hóa kết quả MySQL

  3. Tôi có thể tìm danh sách mã lỗi SQLException cho MySQL ở đâu?

  4. MySQL - CHỌN chỉ 2 hàng từ mỗi 'nhóm'

  5. SQL giữa các ngày bao gồm ngày bắt đầu và ngày kết thúc