2010-07-08 37 views
42

Tôi đang sử dụng cơ sở dữ liệu SQLite và muốn tăng tốc các truy vấn của mình, có lẽ với các chỉ mục hoặc bằng cách tái cơ cấu chúng hoàn toàn.Có công cụ để truy vấn các truy vấn sqlite không?

Có công cụ nào để truy vấn tiểu sử, điều đó có thể giúp tôi quyết định mọi thứ đang chậm lại không?

Tôi biết tôi chỉ có thể nhập truy vấn vào một công cụ như Quản trị viên SQLite, nhưng tôi đang tìm kiếm thứ gì đó có hệ thống hơn một chút - có lẽ một cái gì đó nằm trong nền và xem tất cả các truy vấn Tôi bước vào một khoảng thời gian, đưa ra một sự phân tích của bất kỳ cổ chai nào.

+0

+1 cho câu hỏi hay. Tôi cũng muốn một trong số đó. Rõ ràng bạn googled trước khi hỏi ở đây, vì vậy nó có thể không có khả năng. Bạn cũng kiểm tra trên SOurceForge & FreshMeat? – Mawg

+1

Tìm kiếm trên Google cho 'hồ sơ sqlite' sản lượng: http://katastrophos.net/andre/blog/2007/01/04/sqlite-simple-timing-profiler-patch/ nhưng đây là bản vá cho shell sqlite, mà tôi muốn tránh, và tôi không nghĩ rằng nó làm những gì tôi muốn.Sourceforge/FM mang lại không có gì quan tâm (không phải là tôi đã kiểm tra ở đó trước khi hỏi câu hỏi gốc). – bryn

Trả lời

20

Bạn có kết hợp các câu hỏi tại đây. Để xem các truy vấn nào đang chạy và thời gian thực hiện bao lâu, bạn sẽ cần phải sửa đổi sqlite3.dll nếu ứng dụng liên kết đến đó hoặc nếu đó là ứng dụng của riêng bạn, bạn có thể viết nó vào mã của bạn dễ dàng hơn. truy vấn, giao dịch, thời gian, v.v.).

Để phân tích truy vấn riêng lẻ, bạn có thể sử dụng EXPLAIN. Nó sẽ không cho bạn biết thời gian của các bước riêng lẻ trong một truy vấn nhưng nó sẽ cho bạn biết cách truy vấn được thực thi.

http://www.sqlite.org/lang_explain.html

Một câu lệnh SQL có thể được đi trước bởi từ khóa "GIẢI THÍCH" hoặc bằng cụm từ "giải thích kế hoạch QUERY". Việc sửa đổi làm cho câu lệnh SQL hoạt động như một truy vấn và trả về thông tin về cách câu lệnh SQL sẽ hoạt động như thế nào nếu từ khóa hoặc cụm từ EXPLAIN bị bỏ qua.

Khi từ khóa EXPLAIN xuất hiện tự nó làm cho câu lệnh hoạt động như một truy vấn trả về chuỗi các lệnh máy ảo mà nó đã sử dụng để thực hiện lệnh có từ khóa EXPLAIN không có mặt. Khi cụm từ EXPLAIN QUERY PLAN xuất hiện, câu lệnh trả về thông tin mức cao về những chỉ số nào đã được sử dụng.

Đầu ra từ GIẢI THÍCH và GIẢI THÍCH QUERY PLAN chỉ nhằm mục đích phân tích và khắc phục sự cố tương tác. Các chi tiết của định dạng đầu ra có thể thay đổi từ một bản phát hành của SQLite sang phiên bản tiếp theo. Các ứng dụng không nên sử dụng GIẢI THÍCH hoặc GIẢI THÍCH QUERY PLAN vì hành vi chính xác của chúng là không có giấy tờ, không xác định và biến.

+0

Tôi sẽ chấp nhận câu trả lời này mặc dù đó không phải là câu trả lời tôi muốn nghe. Tôi đã hy vọng cho một công cụ cấp cao hơn một chút cho công việc. – bryn

+1

@ bryn, tôi đồng ý với bạn, SQLite thường thiếu các công cụ cấp cao tốt. Nó thực sự khá đáng ngạc nhiên xem xét việc sử dụng rộng rãi như thế nào. Có lẽ phần lớn các ứng dụng của nó được phân lập thành các cơ sở dữ liệu nhỏ (tức là các thiết bị nhúng) với các lược đồ đơn giản không yêu cầu các công cụ quản lý hoặc lược tả tốt. –

32

Điều này sẽ chỉ trả lời một phần của câu hỏi (phần không hữu ích nhất, thật không may).

Tôi googled điều này bởi vì tôi đang tìm kiếm một cái gì đó để truy vấn thời gian và khách hàng sqlite3 có một lệnh meta hẹn giờ.

sqlite> .timer trên

từ đó trở đi, tất cả kết quả truy vấn sẽ được thêm thống kê cpu. Hy vọng điều này sẽ giúp ít nhất một chút.

+6

+1 mặc dù điều này không trả lời được câu hỏi, tôi đặt cược 50% số người truy cập vào trang này đang tìm kiếm – tjb

+1

Điều này chắc chắn là những gì tôi đã đến đây; cảm ơn! –

2

Bây giờ SQLite có thử nghiệm sqlite3_tracesqlite3_profile (xem https://www.sqlite.org/c3ref/profile.html để biết chi tiết). Họ có thể có ích để có thống kê/điều tra thủ phạm trong các bài kiểm tra dài.

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