hn4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com
Full version available at http://4u.jcisio.com/r/article226.htm

Không rõ

Có thể tạo ra 256 kết nối đồng thời vào DB MS Access không?

Như chúng ta đã biết, MS Access là một phần mềm quản trị Cơ sở dữ liệu rất nổi tiếng của Microsoft vì tính tiện dụng và gọn nhẹ của nó. Access hoạt động tốt trên Desktop, quản trị các DB dành cho cá nhân. Tuy nhiên, khi người dùng có nhu cầu phát triển ứng dụng trên Access ở mức rộng lớn hơn, dành cho nhiều người dùng thì một câu hỏi được đặt ra là : DB Access có thể hổ trợ nhiều (khoảng 256) kết nối đồng thời không ?

Câu trả lời của MS là có. Tuy nhiên, qua thực tế sử dụng của nhiều, còn nhiều tranh luận về vấn đề này.

Dưới đây chúng tôi xin giới thiệu đến các bạn một số ý kiến của những người đã làm việc nhiều trên DBMS này để bạn tham khảo:

Ian Sheds

Bằng kinh nghiệm của mình, tôi có thể nói với bạn rằng Access không thể chấp nhận 255 kết nối đồng thời. Tôi không quan tâm đến những gì MS nói. Chúng tôi có một DB với nhiều table. Table chính, nơi mà phần lớn dữ liệu được lưu trữ và truy xuất có khoảng 5000 record. Sau khoảng 7-8 kết nối đồng thời thì chúng tôi gặp phải những trục trặc về truy xuất đối với Access (nếu như đó không phải là trục trặc của ASP. 5000 record và 7-8 kết nối đồng thời thì chưa phải là nhiều. Chúng tôi có khoảng 1000-2000 session mỗi ngày. Do đó chgúng tôi phải thay đổi DBMS sang SQLServer 7.0 và thế là mọi việc hoạt động tốt.

Qua đây tôi muốn nói với bạn rằng, nếu bạn muốn thực hiện một ứng dụng với khoảng 255 kết nối đồng thời thì xin đừng dùng MS Access mà hãy nên sử dụng một DBMS khác, MS SQLServer chẳn hạn.

Access chưa từng được thiêt kế là một database server. Đây là một chương trình tuyệt với dành cho Desktop Database, nhưng thực tế cho thấy nó hoàn toàn không thích hợp cho các thao tác mà trong đó đòi hỏi đến khoảng hơn 12 kết nối đống thời. MS không hề nói điều này và họ cũng không mong muốn như thế, tuy nhiên hạ chế này là có thực.

Một yếu tố nữa xin bày tỏ cùng các bạn là việc sử dụng Jet (access database engine) trên IIS sẽ làm cho toàn bộ web site hoạt động chậm lại. Nếu bạn phát triển ứng dụng Web trên IIS, ASP thì tốt nhất là bạn hãy dùng SQLServer

Michael

Cơ chế hoạt động của Access là Single Threaded... (single use), khi có truy xuất đồng thời thì các truy xuất này được xếp hàng để xử lý.

SQL Server là multithread, cho phép nhiều người dùng cùng lúc.

Access được sử dụng tốt nhất là khi số kết nối đồng thời chỉ trong khoảng 1-10 và còn phụ thuộc vào dung lượng của DB. Nếu có yêu cầu cao hơn thì bạn nên dùng một DBMS khác.

Ken Adds

Bạn có thể download các tài liệu: the Kevin Collins Whitepaper on Microsoft Jet Locking tại địa chỉ: http://support.microsoft.com/support/kb/ar...s/Q176/6/70.ASP

Theo đó :256 kết nối đồng thời là hoàn toàn có thể - mỗi kết nối có thể thực hiện thao tác trên các table khác nhau nên có thể không cần thiết phải dùng cơ chế exclusive hay non-shared locks...

Frightened Danny

Tôi đang dùng Access trên một máy W2Kvà không hề gặp bất kỳ một vấn đề gì. Tôi ước tính có khoảng 100 kết nối đồng thời vào DB. Doanh nghiệp của chúng tôi không đủ lớn để có thể mua một bản SQL server giá khá cao thay cho Access hiện có.

Lời khuyên từ Marcos

Sao bạn không thử dùng MySQL trên Linux, sẽ không có những rắc rối như thế này gặp phải nữa. Tôi đã có kha nhiều kinh nghiệm trên Access97,2000. Access thì tốt trong một chùng mực nào đó thôi, khi đòi hỏi cao hơn, truy xuất của client nhiều thì bạn nên xem lại.

Khi tôi bắt đầu làm việc tại công ty hiện nay, tôi phải quản lý hỏn 10 DB Access của công ty. Nay, tôi đã chuyển tất cả các DB này sang SQL Server 2000, tất cả các DB riêng lẻ của Access đã được hợp nhất thành một, thao tác rất thuận tiện và dễ dàng.

Tuy nhiên, rẻ tiền nhất, bạn có thể dùng MySQL trên môi trường Linux với PHP.

Stephen giải thích sự khác nhau giữa kết nối đồng thời và các kết nối thông thường:

Bạn nhớ rằng kết nối đồng thời khác với người dùng đồng thời. Nếu bạn viết đoạn code tốt (tạo kết nối khi cần thiết và đóng các kết nối khi không cần dùng nữa), chỉ cần vài kết nối đồng thời thì đã có thể hỗ trợ đến hàng trăm người dùng. Một kết nối đồng thời có nghĩa là một kết nối với database được mở ra. Trong một ứng dụng được viết tốt, kết nối này chỉ được mở ra khi thực thi một câu query. Nếu có hàng trăm người dùng truy xuất vào một trang web dùng database access, tuy nhiên không phải các truy xuất này tạo ra hàng trăm kết nối đồng thời đến DB đâu.

Nhiều người cho rằng dùng Access trong các ứng dụng nhiều người dùng, nhiều kết nối là nguy hiểm, riêng tôi thấy rằng các ứng dụng mà mình đã từng viết hoạt động khá tốt (khoảng 25.000 truy xuất trong một ngày).

Vậy, trước khi bạn phàn nàn về access, xin bạn hãy xem lại ứng dụng hiện tại của mình có được thiết kế tốt hay không.

Roger Adds

Nếu bạn dùng cơ chế caching tốt thì Access sẽ hoạt động tốt.


hainam4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com