Tôi đã xem xét google nhưng không tìm thấy bất kỳ câu trả lời hay nào. Liệu nó lưu trữ dữ liệu trong một tập tin lớn? Những phương pháp nào nó sử dụng để làm cho truy cập dữ liệu nhanh hơn họ chỉ đọc và ghi vào một tập tin thông thường?Làm cách nào để lưu trữ dữ liệu MySQL
Trả lời
Có lưu trữ dữ liệu trong một tệp lớn không?
Một số DBMSes lưu trữ toàn bộ cơ sở dữ liệu trong một file duy nhất, một số bảng phân chia, chỉ số và các loại đối tượng khác để các tập tin riêng, một số chia tập tin không phải do đối tượng loại nhưng theo một tiêu chí lưu trữ/size thậm chí, một số có thể entirely bypass the file system, etc etc ...
Tôi không biết một trong những chiến lược này mà MySQL sử dụng (có thể phụ thuộc vào việc bạn sử dụng MyISAM so với InnoDB, v.v.), nhưng may thay, không quan trọng: từ quan điểm của khách hàng , đây là chi tiết triển khai DBMS mà khách hàng hiếm khi lo lắng.
Phương pháp nào sử dụng để truy cập dữ liệu nhanh hơn mà chỉ đọc và ghi vào tệp thông thường?
Trước hết, DBMses không chỉ là về hiệu suất:
- Họ thậm chí còn thêm về an toàn dữ liệu của bạn - họ phải đảm bảo không có tham nhũng dữ liệu ngay cả khi đối mặt với một cắt điện hoặc lỗi mạng.
- DBMS cũng khoảng đồng thời - chúng phải có trọng số giữa nhiều khách hàng truy cập và có khả năng sửa đổi cùng một dữ liệu.
Đối với câu hỏi cụ thể của bạn hoạt động, dữ liệu quan hệ là rất "nhạy cảm" để lập chỉ mục và clustering, được đa dạng khai thác bởi DBMSes để đạt được hiệu suất. Trên hết, bản chất dựa trên tập hợp của SQL cho phép DBMS chọn cách tối ưu để lấy dữ liệu (trong lý thuyết ít nhất, một số DBMS tốt hơn so với những người khác). Để biết thêm về hiệu suất DBMS, tôi nhiệt liệt khuyên bạn nên: Use The Index, Luke!
Ngoài ra, bạn có thể nhận thấy rằng hầu hết các DBMS là các sản phẩm khá cũ. Giống như thập kỷ cũ, điều thực sự là eons trong các thuật ngữ của ngành chúng tôi. Một hệ quả của điều đó là mọi người có rất nhiều thời gian để tối ưu hóa việc thoát khỏi cơ sở mã DBMS. Bạn có thể, về mặt lý thuyết, đạt được tất cả những thứ này thông qua các tệp, nhưng tôi nghi ngờ bạn sẽ kết thúc với thứ gì đó trông rất gần với DBMS (ngay cả khi bạn có thời gian và nguồn lực để thực sự làm điều đó). Vì vậy, tại sao phát minh lại bánh xe (trừ khi bạn không muốn bánh xe ở nơi đầu tiên;))?
Thông thường mặc dù một số loại "nhật ký" hoặc cơ chế "nhật ký giao dịch". Hơn nữa, để giảm thiểu xác suất tham nhũng "hợp lý" (do lỗi ứng dụng) và thúc đẩy tái sử dụng mã, hầu hết các DBMS hỗ trợ các ràng buộc khai báo (tên miền, khóa và tham chiếu), trình kích hoạt và các thủ tục được lưu trữ.
By isolating transactions và thậm chí bằng cách cho phép khách hàng để khóa một cách rõ ràng phần cụ thể của cơ sở dữ liệu.
Về mặt kỹ thuật, mọi thứ đều là "tệp" bao gồm thư mục .. toàn bộ ổ cứng của bạn là tệp khổng lồ. Có nói rằng, có cơ sở dữ liệu quan hệ, MySQL bao gồm lưu trữ dữ liệu trong một tập tin dữ liệu trên ổ đĩa cứng. Sự khác biệt giữa Cơ sở dữ liệu và ghi/đọc vào một tệp là táo và cam. Cơ sở dữ liệu cung cấp một cách có cấu trúc để lưu trữ và tìm kiếm/truy xuất dữ liệu theo cách bạn không bao giờ có thể sao chép bằng cách chỉ đọc và ghi vào một tệp .. Trừ khi bạn đã viết db của khóa học của mình ..
.
Khi bạn lưu trữ dữ liệu trong một tệp phẳng, nó nhỏ gọn và hiệu quả để đọc tuần tự, nhưng không có cách nào nhanh chóng để truy cập ngẫu nhiên. Điều này đặc biệt đúng với dữ liệu có độ dài thay đổi như tài liệu, tên hoặc chuỗi. Để cho phép truy cập ngẫu nhiên nhanh, hầu hết các cơ sở dữ liệu lưu trữ thông tin trong một tệp đơn bằng cách sử dụng cấu trúc dữ liệu được gọi là B-Tree. Cấu trúc này cho phép chèn, xóa và tìm kiếm nhanh, nhưng nó có thể sử dụng tới 50% không gian hơn tệp gốc. Thông thường, tuy nhiên, đây không phải là một vấn đề như không gian đĩa là giá rẻ và lớn hơn, trong khi các nhiệm vụ chính thường yêu cầu truy cập nhanh. Để biết thêm thông tin: http://en.wikipedia.org/wiki/B-tree
Nhìn kỹ vào tài liệu MySQL, chúng tôi thấy rằng các chỉ mục có thể được đặt tùy chọn thành loại "BTREE" hoặc "HASH". Bên trong một tệp MySQL duy nhất, nhiều chỉ mục được lưu trữ có thể sử dụng cấu trúc dữ liệu.
Mặc dù an toàn và đồng thời là quan trọng, đây không phải là lý do tại sao cơ sở dữ liệu tồn tại, nhưng các tính năng bổ sung. Các cơ sở dữ liệu đầu tiên tồn tại vì không thể truy cập ngẫu nhiên vào tệp tuần tự có chứa dữ liệu độ dài biến đổi.
Câu hỏi này hơi cũ nhưng tôi đã quyết định trả lời nó vì tôi đã thực hiện một số thao tác trên cùng một cách. Câu trả lời của tôi dựa trên hệ thống tập tin linux. Về cơ bản, mySQL lưu trữ dữ liệu trong các tệp trong đĩa cứng của bạn. Nó lưu trữ các tập tin trong một thư mục cụ thể có biến hệ thống "datadir". Mở bảng điều khiển mysql và chạy lệnh sau sẽ cho bạn biết chính xác vị trí của thư mục.
mysql> SHOW VARIABLES LIKE 'datadir'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.01 sec)
như bạn có thể nhìn thấy từ lệnh trên, tôi "datadir" được đặt tại /var/lib/mysql/
. Vị trí của "datadir" có thể thay đổi trong các hệ thống khác nhau. Thư mục chứa các thư mục và một số tệp cấu hình. Mỗi thư mục đại diện cho một cơ sở dữ liệu mysql và chứa các tệp có dữ liệu cho cơ sở dữ liệu cụ thể đó. bên dưới là ảnh chụp màn hình của thư mục "datadir" trong hệ thống của tôi.
Mỗi thư mục trong thư mục thể hiện cơ sở dữ liệu mysql. Mỗi thư mục cơ sở dữ liệu chứa các tệp đại diện cho các bảng trong cơ sở dữ liệu đó. Có hai tệp cho mỗi bảng, một tệp có đuôi mở rộng là .frm
và một tệp khác có phần mở rộng là .idb
. Xem ảnh chụp màn hình bên dưới.
tập tin cửa hàng .frm
bảng định dạng của bảng. kiểm tra ở đây để biết thông tin chi tiết MySQL .frm File Format
tệp .ibd
lưu trữ dữ liệu của bảng.kiểm tra ở đây để biết thông tin chi tiết InnoDB File-Per-Table Tablespaces
Thats it folks! tôi hy vọng tôi đã giúp một ai đó.
- 1. lưu trữ dữ liệu JSON trong mysql
- 2. Làm cách nào để lưu trữ dữ liệu "giống như"?
- 3. Làm cách nào để thực thi PHP được lưu trữ trong cơ sở dữ liệu MySQL?
- 4. Làm cách nào để lưu trữ hình ảnh trong MySQL?
- 5. Cách lưu trữ hàng/cột dữ liệu mysql trong mảng
- 6. Làm thế nào để phiên bản dữ liệu kiểm soát được lưu trữ trong mysql
- 7. Làm thế nào để lưu trữ cảnh báo MySQL trong cơ sở dữ liệu?
- 8. Làm thế nào để lưu trữ hơn 255 char trong cơ sở dữ liệu MySQL?
- 9. Làm thế nào để lưu trữ Euro Symbol trong cơ sở dữ liệu mysql?
- 10. nơi MySQL lưu trữ tệp cơ sở dữ liệu?
- 11. lưu trữ dữ liệu nhị phân trong mysql
- 12. Lưu trữ Enums trong Cơ sở dữ liệu MySQL
- 13. Làm cách nào để lưu trữ dữ liệu nhận được từ cuộc gọi Ajax?
- 14. Android: Gửi dữ liệu được lưu trữ trong MySQL
- 15. Lucene làm lưu trữ dữ liệu
- 16. Cách lưu trữ dữ liệu lịch sử
- 17. Cách tốt nhất để lưu trữ dữ liệu người dùng 'bổ sung' trong MySQL?
- 18. Làm thế nào để lưu trữ dữ liệu đồ thị trong cơ sở dữ liệu?
- 19. Làm cách nào để tính toán chi phí lưu trữ thiết kế cơ sở dữ liệu?
- 20. Cách tốt nhất để lưu trữ dữ liệu hướng dẫn trong MySQL
- 21. Làm cách nào để lưu trữ các cuộc hội thoại trò chuyện trên cơ sở dữ liệu MySQL? XMPP Openfire
- 22. Làm cách nào để lưu trữ quan hệ một đến nhiều trong cơ sở dữ liệu sql của tôi? (MySQL)
- 23. Làm cách nào để sử dụng thủ tục được lưu trữ trong cơ sở dữ liệu MySql với Zend Framework?
- 24. Làm cách nào để lưu trữ và truy xuất hình ảnh từ cơ sở dữ liệu MySQL bằng PHP?
- 25. Lưu trữ dữ liệu Twitter
- 26. Làm cách nào để lưu trữ đúng các mối quan hệ dữ liệu với Bộ lưu trữ bảng Microsoft Azure?
- 27. Tư vấn lưu trữ dữ liệu cần thiết: Cách tốt nhất để lưu trữ dữ liệu vị trí + thời gian?
- 28. Facebook PHP SDK - Lưu trữ dữ liệu người dùng vào cơ sở dữ liệu MYSql
- 29. Làm thế nào để lưu trữ tài liệu Word dưới dạng BLOB trong mySQL với Coldfusion
- 30. Cách tốt nhất để lưu trữ dữ liệu
Bạn có thể muốn xem xét các công cụ cơ sở dữ liệu khác nhau mà nó sử dụng. Một số lưu trữ dữ liệu trong một "tệp lớn" trong khi một số khác có trong bộ nhớ. Đối với tốc độ truy cập, nó sử dụng các cột và hàng có kích thước cố định, vì vậy việc truy cập vào một bản ghi cụ thể dễ dàng hơn việc quét tất cả văn bản. Nó cũng có thể giữ các chỉ mục của dữ liệu để làm cho truy xuất nhanh hơn. Công cụ mặc định và thường được sử dụng nhất là isam của tôi. Những người khác bao gồm inno-db và MEMORY. – gcochard
@Greg nhưng ngay cả một bảng bộ nhớ được lưu trữ ở đâu đó để đảm bảo sự bền bỉ. Điểm mấu chốt là nó được lưu trữ ở đâu đó trên đĩa. – Namphibian
Dữ liệu @Namphibian trong bảng bộ nhớ không liên tục, chỉ cấu trúc là – Cez