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

MySQL không cập nhật information_schema, trừ khi tôi chạy BẢNG PHÂN TÍCH `myTable` theo cách thủ công

Hỏi: Tại sao MySQL không tự động cập nhật information_schema và làm cách nào để khắc phục hiện tượng này?

Đ: InnoDB giữ giá trị auto_increment trong bộ nhớ và không lưu giá trị đó vào đĩa.

Hành vi của các truy vấn siêu dữ liệu (ví dụ:SHOW TABLE STATUS ) bị ảnh hưởng bởi cài đặt của innodb_stats_on_metadatainnodb_stats_persistent biến.

https://dev.mysql.com/doc /refman/8.0/en/innodb-parameters.html#sysvar_innodb_stats_on_metadata

Việc buộc ANALYZE mỗi khi chúng tôi truy vấn siêu dữ liệu có thể làm giảm hiệu suất.

Khác với cài đặt của các biến đó hoặc buộc thu thập thống kê bằng cách thực thi ANALYZE TABLE theo cách thủ công , Tôi không nghĩ có cách "khắc phục" cho vấn đề này.

(Tôi nghĩ điều đó chủ yếu là vì tôi không nghĩ rằng đó là một vấn đề cần được khắc phục.)

Để nhận được giá trị cao nhất của cột auto_increment trong bảng, mẫu chuẩn là:

 SELECT MAX(`ai_col`) FROM `myschema`.`mytable`

Điều khiến tôi khó hiểu là tại sao chúng ta cần truy xuất phần thông tin cụ thể này. Chúng ta sẽ sử dụng nó để làm gì?

Chắc chắn, chúng tôi sẽ không sử dụng điều đó trong mã ứng dụng để xác định giá trị được gán cho một hàng mà chúng tôi vừa chèn. Không có gì đảm bảo rằng giá trị cao nhất không phải từ một hàng đã được chèn bởi một số phiên khác. Và chúng tôi có LAST_INSERT_ID() cơ chế để truy xuất giá trị của một hàng mà phiên của chúng tôi vừa chèn vào.

Nếu chúng ta sử dụng ANALYZE TABLE để làm mới thống kê, vẫn còn một khoảng thời gian nhỏ giữa số đó và SELECT tiếp theo ... một phiên khác có thể trượt trong INSERT khác để giá trị chúng tôi nhận được từ thống kê thu thập có thể "lỗi thời" vào thời điểm chúng tôi truy xuất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thuộc tính đa hình Để trong nhiều đến nhiều ánh xạ trong grails?

  2. Quá nhiều kết nối Hibernate và mysql

  3. mySQL:Nối ba bảng - làm thế nào?

  4. Làm cách nào để thiết lập ASP.NET MVC 2 với MySQL?

  5. Tại sao hình ảnh của tôi không hiển thị?