Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: So sánh tốc độ SQLite và MS Access trong lập trình Winform

  1. #1
    Ngày gia nhập
    11 2010
    Bài viết
    86

    Mặc định So sánh tốc độ SQLite và MS Access trong lập trình Winform

    Các bạn lập trình có kinh nghiệm cho mình hỏi khi viết các chưong trình trình nhỏ thì nên dùng SQLite hay MS Access sẽ tốt hơn, mình nghe nói SQLite vừa miễn phí mà lại rất mạnh nên cũng có thử nhưng sao thấy tốc đọ của nó chậm hơn MS Access nhiều quá.

    Mình thử insert 500 dòng vào 1 table thì tốc độ như sau:

    MS Access: khoảng 18 giấy
    SQLite: khoảng 31 giấy


    đây là code mình dùng để insert vào:

    Code:
    string knAcc = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\Desktop\db.mdb;";
    OleDbConnection con = new OleDbConnection(knAcc);
                for (int i = 0; i < 500; i++)
                {
                    OleDbCommand cmd = new OleDbCommand("insert into NhanVien values(@ID,@Ten,@NgaySinh,@DiaChi,@ghiChu)", con);
                    cmd.Parameters.Add("@ID", OleDbType.VarChar).Value = i.ToString();
                    cmd.Parameters.Add("@Ten", OleDbType.VarChar).Value = "aaaaaaaa";
                    cmd.Parameters.Add("@NgaySinh", OleDbType.Date).Value = "04/05/2013";
                    cmd.Parameters.Add("@DiaChi", OleDbType.VarChar).Value = "ssssssssssss";
                    cmd.Parameters.Add("@GhiChu", OleDbType.VarChar).Value = "Lý Nhược Đồng - Carman Lee";
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }

    Code:
    string knIte = @"Data Source=C:\Documents and Settings\Administrator\Desktop\db.db;Password=123;";
    SQLiteConnection con = new SQLiteConnection(knIte);
                for (int i = 0; i < 500; i++)
                {
                    SQLiteCommand cmd = new SQLiteCommand("insert into NhanVien values(@ID,@Ten,@NgaySinh,@DiaChi,@ghiChu)", con);
                    cmd.Parameters.Add("@ID",DbType.AnsiString).Value = i.ToString();
                    cmd.Parameters.Add("@Ten", DbType.AnsiString).Value = "aaaaaaaa";
                    cmd.Parameters.Add("@NgaySinh", DbType.DateTime).Value = "04/05/2013";
                    cmd.Parameters.Add("@DiaChi", DbType.AnsiString).Value = "ssssssssssss";
                    cmd.Parameters.Add("@GhiChu", DbType.AnsiString).Value = "Lý Nhược Đồng - Carman Lee";
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }

  2. #2
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Trích dẫn Nguyên bản được gửi bởi vienchantam Xem bài viết
    Các bạn lập trình có kinh nghiệm cho mình hỏi khi viết các chưong trình trình nhỏ thì nên dùng SQLite hay MS Access sẽ tốt hơn, mình nghe nói SQLite vừa miễn phí mà lại rất mạnh nên cũng có thử nhưng sao thấy tốc đọ của nó chậm hơn MS Access nhiều quá.

    Mình thử insert 500 dòng vào 1 table thì tốc độ như sau:

    MS Access: khoảng 18 giấy
    SQLite: khoảng 31 giấy


    đây là code mình dùng để insert vào:

    Code:
    string knAcc = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\Desktop\db.mdb;";
    OleDbConnection con = new OleDbConnection(knAcc);
                for (int i = 0; i < 500; i++)
                {
                    OleDbCommand cmd = new OleDbCommand("insert into NhanVien values(@ID,@Ten,@NgaySinh,@DiaChi,@ghiChu)", con);
                    cmd.Parameters.Add("@ID", OleDbType.VarChar).Value = i.ToString();
                    cmd.Parameters.Add("@Ten", OleDbType.VarChar).Value = "aaaaaaaa";
                    cmd.Parameters.Add("@NgaySinh", OleDbType.Date).Value = "04/05/2013";
                    cmd.Parameters.Add("@DiaChi", OleDbType.VarChar).Value = "ssssssssssss";
                    cmd.Parameters.Add("@GhiChu", OleDbType.VarChar).Value = "Lý Nhược Đồng - Carman Lee";
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }

    Code:
    string knIte = @"Data Source=C:\Documents and Settings\Administrator\Desktop\db.db;Password=123;";
    SQLiteConnection con = new SQLiteConnection(knIte);
                for (int i = 0; i < 500; i++)
                {
                    SQLiteCommand cmd = new SQLiteCommand("insert into NhanVien values(@ID,@Ten,@NgaySinh,@DiaChi,@ghiChu)", con);
                    cmd.Parameters.Add("@ID",DbType.AnsiString).Value = i.ToString();
                    cmd.Parameters.Add("@Ten", DbType.AnsiString).Value = "aaaaaaaa";
                    cmd.Parameters.Add("@NgaySinh", DbType.DateTime).Value = "04/05/2013";
                    cmd.Parameters.Add("@DiaChi", DbType.AnsiString).Value = "ssssssssssss";
                    cmd.Parameters.Add("@GhiChu", DbType.AnsiString).Value = "Lý Nhược Đồng - Carman Lee";
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
    Mình xem ở đây.
    Thấy thông số ở web đưa ra thấy nhanh lắm mà.
    http://www.sqlite.org/speed.html
    hay do môi trường chạy và ngôn ngữ nữa nhỉ.
    bạn thử chạy với chế độ noasyn xem sao
    Đã được chỉnh sửa lần cuối bởi tuandoi1 : 06-02-2013 lúc 11:28 PM.

  3. #3
    Ngày gia nhập
    11 2010
    Bài viết
    86

    Đây là đoạn code test của nó, nó sử dụng Transaction cho insert 1 lần 25000 dòng luôn, còn tui test thì cho insert 1 lần 1 dòng rồi tạo mới lại các kết nối để insert tiếp. với Access cũng thế mà tốc độ chênh lệch nhiều quá nên thấy hơi ngán thằng SQLite quá. ko biết nó có cách riêng j ko chứ nghe nói nó mạnh lăm mà.
    Code:
    Test 2: 25000 INSERTs in a transaction
    
        BEGIN;
        CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
        INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
        ... 24997 lines omitted
        INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
        INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
        COMMIT;

  4. #4
    Ngày gia nhập
    08 2011
    Bài viết
    117

    Trích một chút ở trang chủ của nó ra đoạn này cho bạn xem nhé :
    SQLite is an embedded SQL database engine. Unlike most other SQL databases, SQLite does not have a separate server process. SQLite reads and writes directly to ordinary disk files. A complete SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file. ...
    Vậy là bạn hiểu vì sao nó chậm rồi chứ ? và mục đích thằng sqlite sinh ra nó có sứ mệnh khác với những thằng DB khác bạn nên tìm hiểu kỹ nên dùng lúc nào.

  5. #5
    Ngày gia nhập
    11 2010
    Bài viết
    86

    Tui cũng có tìm hiểu về nó nên cũng biết nó cũng có nhiều thuận lợi vì miễn phí, chạy trên nhiều HĐH khác nhau, gọn nhẹ 1 file duy nhất.... Nhưng cái tui muốn biết là néu viết 1 ứng dụng nhỏ bằng winform C# thì sử dụng SQLite hay MS Access sẽ tốt hơn, bởi trước đây tui cũng nghe nói SQLite rất hay nên muốn thử nhưng sau khi test thử bằng Winform C# thì thấy nó thua MS Access.

    Nếu vậy có phải nếu sử dụng Winform C# thì MS Access sẽ mạnh hơn đúng ko?

    còn khi viết web hay các ngôn ngữ khác thì tui ko cần biết, chỉ vậy thôi.

    bạn nào có ý kiến hay kinh nghiệm chia sẽ với mọi người về vấn đề này với.

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Mặc định So sánh tốc độ SQLite và MS Access trong lập trình Winform

    Trích dẫn Nguyên bản được gửi bởi vienchantam Xem bài viết
    Tui cũng có tìm hiểu về nó nên cũng biết nó cũng có nhiều thuận lợi vì miễn phí, chạy trên nhiều HĐH khác nhau, gọn nhẹ 1 file duy nhất.... Nhưng cái tui muốn biết là néu viết 1 ứng dụng nhỏ bằng winform C# thì sử dụng SQLite hay MS Access sẽ tốt hơn, bởi trước đây tui cũng nghe nói SQLite rất hay nên muốn thử nhưng sau khi test thử bằng Winform C# thì thấy nó thua MS Access.

    Nếu vậy có phải nếu sử dụng Winform C# thì MS Access sẽ mạnh hơn đúng ko?

    còn khi viết web hay các ngôn ngữ khác thì tui ko cần biết, chỉ vậy thôi.

    bạn nào có ý kiến hay kinh nghiệm chia sẽ với mọi người về vấn đề này với.
    Thằng MS access hình như có lẽ cần cài tool khá năng mới chạy được. Dĩ nhiên nó hỗ trợ tốt. Theo tôi nếu bạn cần quản lý dữ liệu không quá lớn thì nên dùng sqlite, vì sqlite nó nhỏ gọn hơn. Tốc độ cũng không đến mức quá tệ đâu.

  7. #7
    Ngày gia nhập
    08 2011
    Bài viết
    117

    Trích dẫn Nguyên bản được gửi bởi vienchantam Xem bài viết
    Tui cũng có tìm hiểu về nó nên cũng biết nó cũng có nhiều thuận lợi vì miễn phí, chạy trên nhiều HĐH khác nhau, gọn nhẹ 1 file duy nhất.... Nhưng cái tui muốn biết là néu viết 1 ứng dụng nhỏ bằng winform C# thì sử dụng SQLite hay MS Access sẽ tốt hơn, bởi trước đây tui cũng nghe nói SQLite rất hay nên muốn thử nhưng sau khi test thử bằng Winform C# thì thấy nó thua MS Access.

    Nếu vậy có phải nếu sử dụng Winform C# thì MS Access sẽ mạnh hơn đúng ko?

    còn khi viết web hay các ngôn ngữ khác thì tui ko cần biết, chỉ vậy thôi.

    bạn nào có ý kiến hay kinh nghiệm chia sẽ với mọi người về vấn đề này với.
    Nói thế này cho bạn dễ hiểu nhé : Người ta chỉ tìm đến Sqlite khi bộ nhớ (Ram) của thiết bị chạy giới hạn, không bật được 1 process khác riêng cho việc quản lý CSDL. VD ứng dụng cho di dộng ...

    Còn bạn viết ứng dụng Windows thì không lo tới mấy cái trên kia. cứ chọn mấy CSDL loại khủng mà chạy nó sẽ tối ưu về khả năng thực thi, khả năng quản lý lương lớn request cùng một lúc tốt hơn nhiều.

  8. #8
    Ngày gia nhập
    11 2010
    Bài viết
    86

    Ý mình là đang phân vân giữa SQLite và MS Access bởi đây là CSDL dạng nhỏ gọn, 1 file duy nhất, dễ dàng khi cài đặt chương trình kèm theo CSDL nên mơi test thử và muốn biết ý kiến của mọi người về vấn đề này.

    Chứ nếu chọn CSDL khủng thì nó rất mắc công khi cài đặt và thấy 1 chưuogn trình nhỏ ko sử dụng hết dc các chức năng của nó

    mình đang muốn tìm kiếm phương pháp nào là tốt nhất cho CSDL 1 chương trình ở mức vừa và nhỏ thôi.

    Cám ơn bạn đã quan tâm, mình nghĩ sẽ sử dụng MS Access quá vì dù sao nó cũng do MS phát hành nên sẽ tốt cho chương trình Winform C# hơn là các CSDL khác.

  9. #9
    Ngày gia nhập
    04 2013
    Bài viết
    49

    mình thấy SQLite nhanh hơn

Các đề tài tương tự

  1. [Help]Load dữ liệu access lên datagridview winform trong c#
    Gửi bởi quannguyen91 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 05-10-2012, 04:46 PM
  2. Lấy bảng thông báo từ access lên winform?
    Gửi bởi goose471 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 26-02-2012, 12:11 AM
  3. Trả lời: 1
    Bài viết cuối: 29-09-2011, 08:49 AM
  4. Cách thao tác với Database Access trong winform??
    Gửi bởi khoaoow trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 03-08-2011, 08:58 AM
  5. ADO.NET Kết hợp giữa Winform và Access 2010
    Gửi bởi kakavip trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 27-02-2011, 10:43 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn