Tôi đang sử dụng cơ sở dữ liệu sqlite trong nền tảng Linux nhúng arm9 của mình. Tôi muốn giảm ghi vào cơ sở dữ liệu đĩa vì đĩa của tôi là một bộ nhớ flash và nó cần chu kỳ ghi tối thiểu. Vì vậy, tôi đã cố gắng để tăng SQLITE_DEFAULT_CACHE_SIZE là 5000. Mục tiêu của tôi là ghi dữ liệu vào bộ nhớ cache và khi bộ nhớ cache được lấp đầy, tự động tuôn ra đĩa. Nhưng bằng cách incrementing SQLITE_DEFAULT_CACHE_SIZE, tôi không thể xác nhận cho dù điều này là làm việc hay không. Tôi không thấy bất kỳ thay đổi nào trong các hoạt động! Cách của tôi có đúng không? Ai có thể cho tôi một số gợi ý? Cảm ơn AneeshLàm thế nào để hạn chế cơ sở dữ liệu bung ra đĩa?
Trả lời
Mới nhất SQLite has a feature for backing up hot databases vẫn còn thử nghiệm, nhưng đề xuất của tôi là sử dụng Cơ sở dữ liệu bộ nhớ và hợp nhất với cơ sở dữ liệu trên đĩa khi bạn cho là phù hợp.
Có Robert bạn là đúng, Nhưng vấn đề là tôi phải tuôn ra cơ sở dữ liệu định kỳ, mà dường như là quá nguy hiểm.My dự định là liệu Sqlite là hỗ trợ bất kỳ loại xả nước mặc định dựa trên Cache đầy đủ? Tôi đã thực hiện một số thử nghiệm dựa trên kịch bản trên bằng cách đặt PRAGMA journal_mode = MEMORY, PRAGMA SQLITE_DEFAULT_CACHE_SIZE = 5000 và PRAGMA đồng bộ = FULL, Nhưng tỷ lệ xả có vẻ tương tự như kích thước bộ nhớ cache 2000 (mặc định) và 5000.this làm tôi ngạc nhiên. –
Thật không may những tùy chọn này sẽ không ảnh hưởng đến tốc độ truy cập vào ổ đĩa –
Trước hết là nhờ các gợi ý hợp lý của bạn, bạn đang nói rằng, bộ nhớ cache đầy đủ không thể được sử dụng như một tiêu chuẩn để xóa dữ liệu từ Ram tệp đĩa? nếu có, thì vấn đề của tôi có thể giải quyết với bất kỳ yếu tố rủi ro nào. Bạn có tùy chọn nào khác để đề xuất không? Cảm ơn nâng cao, Aneesh –
Bạn có mã nguồn để SQLite - tại sao không chỉ đơn giản là công cụ nó để ghi lại các thông tin mà bạn quan tâm đến
Yeah ... thật dễ dàng! – tylerl
Xin hãy giải thích, tôi không hiểu đề xuất của bạn !!!! –
Mmm, câu trả lời này hoàn toàn không liên quan theo như tôi hiểu ... –
Ok Neil .Nếu các "SQLite đang sử dụng một hình thức ghi qua bộ nhớ đệm" sau đó vào. tràn bộ nhớ cache, nó sẽ cố gắng để tuôn ra dữ liệu vào một số tập tin tạm thời hoặc tập tin đĩa .Đây là cùng một điểm tôi đang cố gắng thử nghiệm bằng cách enalrging kích thước bộ nhớ cache và do đó có được kiểm soát trên tỷ lệ xả. Nhưng nó không xảy ra. .
Thứ nhất, bạn có thể sửa đổi câu hỏi ban đầu của mình để hỏi điều này. Thứ hai, bộ nhớ đệm ghi đè có nghĩa là tất cả các ghi được ngay lập tức cam kết vào đĩa, nhưng dữ liệu được ghi cũng được giữ trong bộ nhớ cache. Do đó kích thước bộ nhớ cache có rất ít hoặc không ảnh hưởng đến tần số ghi vào đĩa. Như tôi đã nói, tôi không thể chắc chắn 100% rằng điều này đang xảy ra - hãy tự xem mã. –
SQLite là ACID db flushes với mọi cam kết HOẶC với mỗi lần chèn/xóa/cập nhật không được gói với giao dịch. Sử dụng giao dịch cho các hoạt động nhóm HOẶC TẮT TẮT ACID và đặt PRAGMA đồng bộ = TẮT.
"PRAGMA đồng bộ = OFF" và SQLite sẽ không dữ liệu tuôn ra ở tất cả (một cách hiệu quả để lại đó để OS Cache)
SQLITE_DEFAULT_CACHE_SIZE là ONLY cho kích thước của bộ nhớ cache. Và bộ nhớ cache chỉ được sử dụng để đọc dữ liệu.
Có một tùy chọn khác - bạn có thể triển khai lớp VFS riêng và ngăn trang tiết kiệm trước khi bộ đệm của riêng bạn sẽ đầy. Nhưng tôi chắc chắn rằng sync = off (hoặc tốt hơn để sử dụng giao dịch) sẽ thực hiện công việc đủ tốt (trong khi có cơ hội tốt để làm hỏng db của bạn trong trường hợp mất điện hoặc reset cứng để đồng bộ = off). .
Một gợi ý khác là đặt JOURNAL vào bộ nhớ hoặc tắt hoàn toàn. Một lần nữa - nó tắt axit, nhưng điều đó cũng loại bỏ một số chạm đĩa.
Tôi đồng ý; cấu trúc giao dịch có lẽ là nơi có thể tìm thấy lợi ích lớn nhất. –
- 1. Hạn chế tên cơ sở dữ liệu Mysql
- 2. xử lý hạn chế cơ sở dữ liệu hibernate
- 3. Lưu vào đĩa cơ sở dữ liệu trong bộ nhớ
- 4. Làm thế nào để tạo ra cơ sở dữ liệu trong học thuyết 2
- 5. Làm thế nào để sao chép một bảng sqlite từ cơ sở dữ liệu đĩa vào cơ sở dữ liệu bộ nhớ trong python?
- 6. Không gian ổ đĩa đói Cơ sở dữ liệu NoSQL
- 7. SQL Server: Làm thế nào để biết cơ sở dữ liệu là một cơ sở dữ liệu hệ thống?
- 8. Làm thế nào để sao chép cơ sở dữ liệu trong sử dụng cơ sở dữ liệu khác trong django?
- 9. Làm thế nào để tạo dự án cơ sở dữ liệu từ cơ sở dữ liệu SQL Server hiện tại?
- 10. Làm thế nào để chuyển đổi tệp cơ sở dữ liệu H2Database thành tệp cơ sở dữ liệu MySQL .sql?
- 11. Làm cách nào để hủy một hoạt động Cơ sở dữ liệu dài hạn?
- 12. Làm cách nào để di chuyển Sơ đồ cơ sở dữ liệu SQL Server sang cơ sở dữ liệu khác?
- 13. Làm thế nào để chèn dữ liệu mẫu vào bảng cơ sở dữ liệu MySQL
- 14. Làm thế nào để chèn dữ liệu vào cơ sở dữ liệu SQLite trong android?
- 15. Làm thế nào để đọc dữ liệu từ cơ sở dữ liệu SQLite?
- 16. Làm thế nào để lưu trữ dữ liệu đồ thị trong cơ sở dữ liệu?
- 17. Set MongoDB Cơ sở dữ liệu hạn ngạch (SIZE)
- 18. CodeIgniter giới hạn truy vấn cơ sở dữ liệu
- 19. Hạn chế quyền truy cập Đăng nhập SQL Server vào chỉ một cơ sở dữ liệu
- 20. Làm thế nào để sao lưu cơ sở dữ liệu dòng phim?
- 21. Làm cách nào để xóa cơ sở dữ liệu MySQL?
- 22. Yii hạn chế kết nối cơ sở dữ liệu với chỉ đọc
- 23. GeoJson Cơ sở dữ liệu thế giới
- 24. Làm cách nào để mở cơ sở dữ liệu lõi?
- 25. Làm cách nào để xóa khỏi cơ sở dữ liệu?
- 26. Tôi làm cách nào để tạo ra YML của Symfony từ dữ liệu cơ sở dữ liệu xuất hiện?
- 27. Làm thế nào để nhập một cơ sở dữ liệu mySQL mà không cần tạo một cơ sở dữ liệu mới
- 28. Làm thế nào để sao chép dữ liệu từ cơ sở dữ liệu/bảng này sang cơ sở dữ liệu/bảng khác
- 29. Di chuyển cơ sở dữ liệu MySQL InnoDB để tách ổ đĩa
- 30. Làm thế nào để lấy datamapper để làm việc với một cơ sở dữ liệu postgresql?
Tôi không chắc chắn nếu tôi hiểu yêu cầu của bạn. Thông thường cơ sở dữ liệu được sử dụng để đảm bảo đảm bảo giao dịch. Để làm điều đó, cơ sở dữ liệu cần ghi vào đĩa. Nếu bạn có những thay đổi trạng thái không quan trọng tại sao bạn phải cập nhật cơ sở dữ liệu? Bạn chỉ có thể giữ trạng thái thay đổi trong bộ nhớ và chỉ cập nhật cơ sở dữ liệu khi bạn phải duy trì các thay đổi của mình. Trong trường hợp đó nhấn đĩa là không thể tránh khỏi bởi thiết kế, – lothar
Thường không có nghĩa là luôn luôn. sqlite được sử dụng trong nhiều môi trường kỳ lạ như một cơ chế lưu trữ tạm thời. Ví dụ: lưu trữ dữ liệu từ xa trên điện thoại - nếu bộ nhớ cache biến mất, nó luôn có thể được xây dựng lại, nó chỉ chậm hơn. Trong trường hợp đó, tôi muốn nó được nhanh chóng, và tôi muốn biết nếu nó bị hỏng. Nhưng tham nhũng là OK, miễn là tôi biết rằng cửa hàng của tôi không hợp lệ. Tôi thỉnh thoảng có thể vứt nó đi. –