2012-03-07 26 views
14

Làm cách nào để lưu/tải toàn bộ cơ sở dữ liệu trong bộ nhớ h2 được nhúng vào một số tệp hoặc thư mục ở chế độ nhị phân để tải nhanh hơn.Lưu cơ sở dữ liệu H2 trong bộ nhớ vào đĩa

Tôi muốn sử dụng tính năng này để lưu vào bộ nhớ cache vì vậy tôi không phải chạy tất cả các dòng tạo mệnh đề bảng/chèn mỗi lần.

+1

Bạn có thể sử dụng tệp DB so với phiên bản trong bộ nhớ không? Tôi cho rằng bạn đang phát triển tùy chỉnh bằng cách sử dụng một khung công tác (ví dụ: Grails) mà bạn chưa đề cập. – Marc

+0

Đây là một dự án tùy chỉnh không có khung công tác liên quan. Thành thật mà nói, tôi không chắc chắn về tác động của db của tệp là gì, tôi muốn tốc độ và dữ liệu sẽ luôn phù hợp với bộ nhớ vì vậy tôi giả định rằng db trong bộ nhớ sẽ là nhanh nhất. Các dữ liệu sẽ được truy vấn chỉ vì vậy tôi không muốn bất kỳ kiểm tra lưu không cần thiết. – mikkom

+0

@marc Sử dụng 'tệp DB' là một điều khác. Sẽ rất hữu ích khi thử nghiệm đơn vị nếu có thể thiết lập bộ dữ liệu thử nghiệm trong bộ nhớ, với java hoặc bất kỳ ngôn ngữ nào khác, sau đó sao lưu tập dữ liệu và sử dụng nó để khôi phục trạng thái ban đầu sau mỗi lần kiểm tra. –

Trả lời

8

Thay vì sử dụng cơ sở dữ liệu trong bộ nhớ, bạn có thể sử dụng cơ sở dữ liệu thông thường (được duy trì). Bạn vẫn có thể sử dụng các bảng trong bộ nhớ ngay cả khi đó (tạo bảng bộ nhớ).

Cách dễ nhất để duy trì cơ sở dữ liệu trong bộ nhớ hoàn toàn vào đĩa là sử dụng câu lệnh SQL SCRIPT TO 'fileName'. Điều này sẽ tạo ra một kịch bản lệnh SQL. Dữ liệu được lưu trữ dưới dạng văn bản, không giống như giải pháp hiệu quả nhất. Tuy nhiên thường nút cổ chai là đĩa anyway và không định dạng/phân tích cú pháp văn bản.

Tùy chọn khác là tạo cơ sở dữ liệu khác, liên kết các bảng với cơ sở dữ liệu trong bộ nhớ (sử dụng create linked table hoặc chức năng link_schema), sau đó sử dụng create table as select để duy trì các bảng.

+0

Chèn các mệnh đề là những gì tôi hiện đang làm và cho 1 gig văn bản phải mất một thời gian và nó không phải là io. xin lỗi nhưng tôi muốn tùy chọn nhị phân. – mikkom

+0

Đã cập nhật câu trả lời của tôi. Đối với SCRIPT: nếu nó không phải là IO, thì nó là gì? Bạn đã sử dụng công cụ lược tả, chẳng hạn như trình thu thập thông tin được tích hợp chưa? –

Các vấn đề liên quan