Hỏi về kết nối và đóng database liên tục

Liên hệ QC

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
873
em có 1 file Access hoặc Excel và em có viết 1 đoạn code để nhiều người dùng kết nối qua internet và khi người dùng Connect và Close liên tục như vậy có ảnh hưởng đến hiệu xuất không ?
anh chị nào biết giải thích giúp em với.
Cám ơn mọi người quan tạm
 
có ảnh hưởng đến hiệu xuất không
Chưa rõ là hiệu suất gì nhưng chắc chắn có ảnh hưởng tới:

- Băng thông đường truyền mạng, ít kết nối thì nhanh và ngược lại;
- Tốc độ xử lý của máy tính chứa dữ liệu, tốc độ xử lý của chương trình/ phần mềm đó.
 
em có 1 file Access hoặc Excel và em có viết 1 đoạn code để nhiều người dùng kết nối qua internet và khi người dùng Connect và Close liên tục như vậy có ảnh hưởng đến hiệu xuất không ?
anh chị nào biết giải thích giúp em với.
Cám ơn mọi người quan tạm
Để kiểm soát tốt kết nối trước khi chạy lệnh truy vấn, tôi chọn đóng mở liên tục. vì nhìn chung thao tác trên Excel có tính độc lập cho mỗi lệnh (trong ứng dụng của tôi).
Kinh nghiệm thực hiện của tôi là vậy.

(Tôi đổi chuyên mục cho phù hợp với nội dung đề tài)
 
Để kiểm soát tốt kết nối trước khi chạy lệnh truy vấn, tôi chọn đóng mở liên tục. vì nhìn chung thao tác trên Excel có tính độc lập cho mỗi lệnh (trong ứng dụng của tôi).
Kinh nghiệm thực hiện của tôi là vậy.

(Tôi đổi chuyên mục cho phù hợp với nội dung đề tài)
Vâng cám ơn anh.
(Em cũng thiên về cái này, nhưng không biết nếu vậy có ảnh hưởng nhiều đến xử lý của CPU Server không)

Cái này em viết cho Sever để cho phép Client kết nối đến nhiều File hoặc 1 File tức là cái Connect Database có thể thây đổi liên tục nên em đang lăn tăng chọn giải pháp cho tối ưu nhất để cho máy Sever xử lý.
 
Lần chỉnh sửa cuối:
Vâng cám ơn anh.
(Em cũng thiên về cái này, nhưng không biết nếu vậy có ảnh hưởng nhiều đến xử lý của CPU Server không)

Cái này em viết cho Sever để cho phép Client kết nối đến nhiều File hoặc 1 File tức là cái Connect Database có thể thây đổi liên tục nên em đang lăn tăng chọn giải pháp cho tối ưu nhất để cho máy Sever xử lý.
Trả kết quả cho client xong rồi đóng kết nối lại để dành tài nguyên đón nhận và xử lý các request khác từ client em nhé.
 
Ví dụ 1:
Máy A: dim connecttionA = new(connection) =>{làm việc}
Máy B: có thể dùng connecttionA để làm việc!?

Ví dụ 2:
Máy A: dim connecttionA = new(connection) =>{làm việc}
Máy B: dim connecttionB = new(connection) =>{làm việc}
Nếu máy A không đóng kết nối, nếu máy B không đóng kết nối => máy n không đóng kết nối ...?
 
Ví dụ 1:
Máy A: dim connecttionA = new(connection) =>{làm việc}
Máy B: có thể dùng connecttionA để làm việc!?

Ví dụ 2:
Máy A: dim connecttionA = new(connection) =>{làm việc}

Ví dụ 1:
Máy A: connecttionA =>{làm việc}
Máy B: connecttionA =>{làm việc}
Máy B: connecttionB (File B) =>{cũng có thể connect đến File B làm việc vừa A, vừa B}

Ví dụ 2:
Máy A: connecttionA = {làm việc}
Máy B: connecttionB =>{làm việc}
 
Đóng mở liên tục thì đương nhiên ảnh hưởng đến hiệu suất. Vấn đề là hiệu suất của cái gì? Có những cái ảnh hưởng hiệu suất cũng chả sao cả.

Điểm quan trọng hơn ở đây là những cái món mà người ta mở nhiều như vậy thì để trong file Excel mới giảm hiệu suất.
 
Nói đóng + mở liên tục hôm Mạnh quậy 2 máy trong LAN đua nhau ghi liên tục vào cái Database.accdb xem sao thì dữ liệu nó nhảy linh tinh loạn xì ngầu cả lên

VD: thay vì nó nối nhau xuống dòng theo thứ tự của nó ... đường này tổng dữ liêu vẫn như nhau còn đang dòng đầu nó nhảy xuống cuối có khi vào giũa cái tablname Tại sao Ư = Tịt toàn tập
đó là Sharing Full Folder đấy ... còn qua TCP/IP = không biết -0-0-0-
 
Trên VB6 Server + Client khi Client Gửi cái SQL thì Server nó lấy lên xong gửi lại client theo từng dòng 1 = Gói một cho tới khi gửi hết
và Client nhận lần lượt hết từng gói 1 thì gán dữ liệu xuống Sheet vvv

vậy giả thiết quá trình kết nối và gửi liên tục đó ===> điều gì sẻ xảy ra + đường truyền In tét nét vv + mây mây ....

Còn 1 cách gửi và Nhận nữa là 1 Array = thấy Google nói thế chứ chưa biết xài ra sao cả -0-0-0-

Có lẻ tất cả thua cách HLMT chỉ Sharing Folder qua Internet xong thiết lập cấm xóa là ok Nhất .... còn lại cũng chỉ cho vui à
 
em có 1 file Access hoặc Excel và em có viết 1 đoạn code để nhiều người dùng kết nối qua internet và khi người dùng Connect và Close liên tục như vậy có ảnh hưởng đến hiệu xuất không ?
Nếu tôi không lầm thì thắc mắc của chị liên quan tới cái app Kết nối Access, Excel, chia sẻ dữ liệu. Thế thì có vẻ chị nhập nhằng một số ý niệm ở đây rồi. Theo cách tôi hiểu, thực chất chỉ có duy nhất cái chương trình chạy trên server là có kết nối đúng nghĩa với CSDL thôi chứ các chương trình client làm gì có kết nối dữ liệu đúng không? Vậy thì chị cứ nhìn nhận cái app trên server này như một chương trình sử dụng CSDL bình thường thôi chứ nó không hề có sự khác biệt nào về cách dùng CSDL cả. Do vậy chị hoàn toàn có thể dùng các kinh nghiệm đã từng viết các ứng dụng có kết nối CSDL trước đây để tự giải đáp vấn đề này một cách dễ dàng. Thắc mắc nầy rốt cục là do chị suy nghĩ mông lung vì nhầm lẫn ý niệm hoặc là chị "tạo chủ đề" cho mọi người chém gió giải khuây đây mà --=0
 
Thế người ta mới sinh ra lập trình server -client , sinh ra công nghệ AJAX

Tóm lại, cái nào xử lý được ở client thì nên xử lý càng nhiều càng tốt
Cái nào Gửi server thì càng gửi nhẹ càng đơn giản càng tốt. - load 1 lần còn hơn nhiều lần nhấp nháy.

Từ đó bạn rút ra tùy ứng dụng yêu cầu mà xử lý cho hợp lý, 2 cái yêu cầu xa nhau mà vẫn để kết nối thì hiệu suất thấp. 2 kết nối liên tiếp nhau mà cứ mở và đóng kết nối từng cái thì cũng ảnh hưởng hiệu suất. Kiểu vậy thì đánh giá hiệu suất thì phụ thuộc vào trường hợp riêng.
Nhưng nếu máy trạm đếm trên đầu ngón tay thì chắc không phải lo hiệu suất chi (trừ đường truyền quá tệ)
 
Lần chỉnh sửa cuối:
đường này tổng dữ liêu vẫn như nhau còn đang dòng đầu nó nhảy xuống cuối có khi vào giũa cái tablname Tại sao Ư = Tịt toàn tập
Đoán là anh dùng mảng duyệt từng phần tử trong đó rồi đưa vào bảng. Cách này không nên làm vì có thể trong cùng một lúc có các máy khác thực hiện đồng thời sẽ gây lỗi hoặc không toàn vẹn dữ liệu. Nếu muốn thực hiện việc này ta phải dùng các câu lệnh thuần SQL nhé.
 
Thế người ta mới sinh ra lập trình server -client , sinh ra công nghệ AJAX

Tóm lại, cái nào xử lý được ở client thì nên xử lý càng nhiều càng tốt
Cái nào Gửi server thì càng gửi nhẹ càng đơn giản càng tốt. - load 1 lần còn hơn nhiều lần nhấp nháy.

Từ đó bạn rút ra tùy ứng dụng yêu cầu mà xử lý cho hợp lý, 2 cái yêu cầu xa nhau mà vẫn để kết nối thì hiệu suất thấp. 2 kết nối liên tiếp nhau mà cứ mửo và đóng kết nối thì cũng ảnh hưởng hiệu suất. Kiểu vậy thì đánh giá hiệu suất thì phụ thuộc vào trường hợp riêng.
Nhưng nếu máy trạm đếm trên đầu ngón tay thì chắc không phải lo hiệu suất chi (trừ đường truyền quá tệ)
cảm ơn bạn. mình thấy có ý kiến hay trong đây rồi
 
Nói đóng + mở liên tục hôm Mạnh quậy 2 máy trong LAN đua nhau ghi liên tục vào cái Database.accdb xem sao thì dữ liệu nó nhảy linh tinh loạn xì ngầu cả lên

VD: thay vì nó nối nhau xuống dòng theo thứ tự của nó ... đường này tổng dữ liêu vẫn như nhau còn đang dòng đầu nó nhảy xuống cuối có khi vào giũa cái tablname Tại sao Ư = Tịt toàn tập
đó là Sharing Full Folder đấy ... còn qua TCP/IP = không biết -0-0-0-

VIết ứng dụng cho nhiều người dùng cùng lúc thì code phải thêm mắm muối, khác chút ở công đoạn truy cập, chèn, sửa xoá dữ liệu chứ không viết như ứng dụng cho một người dùng.
Một ví dụ đơn giản là: tạo khoá không trùng khi thêm mới dữ liệu. Nếu hy hữu có 2 người cùng thao tác thêm mới dữ liệu 1 thời điểm thì cái khoá mới tạo sẽ bị trùng khi lưu xuống database. Client 1 duyệt database hiện tại tạo một khoá mới, khi đó Client 2 cũng cùng lúc duyệt database và toạ khoá mới => trùng khoá.

em có 1 file Access hoặc Excel và em có viết 1 đoạn code để nhiều người dùng kết nối qua internet và khi người dùng Connect và Close liên tục như vậy có ảnh hưởng đến hiệu xuất không ?

Nếu cái App chia sẻ file để nhiều người kết nối vô (giống SQL Server) thì nếu code được thì code để quản lý số Connection thôi. Còn việc đóng/mở kết nối là tuỳ theo quan điểm, nhu cầu của người lập trình ứng dụng Client họ viết.
Khi có nhiều kết nối tới máy chứa Database chia sẻ thì tất nhiên máy phải mở cổng, socket, name pipe... các kiểu để nhận kết nối. Khi đó tài nguyên máy phải bị ảnh hưởng rồi. Lúc này thì em mới xem xét nên cho kết nối cùng lúc 10, 20, 100, 200... connection cùng lúc thì máy chạy có ì ạch không từ đó mới không chế chỉ cho duy trì 10 kết nối đồng thời thôi, kết nối nào tới sau thì xếp hàng chờ.
Nếu có thời gian em ngâm cứu cái công nghệ Connection Pooling của ADO xem. Khi Client đóng kết nối thì nó không hẳn là đóng kết nối hoàn toàn tới Database mà đưa vào cái tạm gọi là hồ chứa (Pool) các kết nối để đó, khi một connection có cùng tham số như vậy yêu cầu mở lại, thì nó tìm trong cái hồ chứa lấy ra dùng lại, khỏi tạo kết nối mới.
 
VIết ứng dụng cho nhiều người dùng cùng lúc thì code phải thêm mắm muối, khác chút ở công đoạn truy cập, chèn, sửa xoá dữ liệu chứ không viết như ứng dụng cho một người dùng.
Một ví dụ đơn giản là: tạo khoá không trùng khi thêm mới dữ liệu. Nếu hy hữu có 2 người cùng thao tác thêm mới dữ liệu 1 thời điểm thì cái khoá mới tạo sẽ bị trùng khi lưu xuống database. Client 1 duyệt database hiện tại tạo một khoá mới, khi đó Client 2 cũng cùng lúc duyệt database và toạ khoá mới => trùng khoá.



Nếu cái App chia sẻ file để nhiều người kết nối vô (giống SQL Server) thì nếu code được thì code để quản lý số Connection thôi. Còn việc đóng/mở kết nối là tuỳ theo quan điểm, nhu cầu của người lập trình ứng dụng Client họ viết.
Khi có nhiều kết nối tới máy chứa Database chia sẻ thì tất nhiên máy phải mở cổng, socket, name pipe... các kiểu để nhận kết nối. Khi đó tài nguyên máy phải bị ảnh hưởng rồi. Lúc này thì em mới xem xét nên cho kết nối cùng lúc 10, 20, 100, 200... connection cùng lúc thì máy chạy có ì ạch không từ đó mới không chế chỉ cho duy trì 10 kết nối đồng thời thôi, kết nối nào tới sau thì xếp hàng chờ.
Nếu có thời gian em ngâm cứu cái công nghệ Connection Pooling của ADO xem. Khi Client đóng kết nối thì nó không hẳn là đóng kết nối hoàn toàn tới Database mà đưa vào cái tạm gọi là hồ chứa (Pool) các kết nối để đó, khi một connection có cùng tham số như vậy yêu cầu mở lại, thì nó tìm trong cái hồ chứa lấy ra dùng lại, khỏi tạo kết nối mới.
chịu chưa hình dung ra viết như thế nào vì lâu nay chỉ viết cho mình xài nên ko có biết cách viết cho nhiều người dùng cùng 1 lúc !!!
Còn cái khúc Tô đâm kia lần đầu tiên nghe thấy ... tò mò cũng muốn biết đầu con cua tai con heo ra sao ???!!!
 
Nếu cái App chia sẻ file để nhiều người kết nối vô (giống SQL Server) thì nếu code được thì code để quản lý số Connection thôi. Còn việc đóng/mở kết nối là tuỳ theo quan điểm, nhu cầu của người lập trình ứng dụng Client họ viết.
Khi có nhiều kết nối tới máy chứa Database chia sẻ thì tất nhiên máy phải mở cổng, socket, name pipe... các kiểu để nhận kết nối. Khi đó tài nguyên máy phải bị ảnh hưởng rồi. Lúc này thì em mới xem xét nên cho kết nối cùng lúc 10, 20, 100, 200... connection cùng lúc thì máy chạy có ì ạch không từ đó mới không chế chỉ cho duy trì 10 kết nối đồng thời thôi, kết nối nào tới sau thì xếp hàng chờ.
Nếu có thời gian em ngâm cứu cái công nghệ Connection Pooling của ADO xem. Khi Client đóng kết nối thì nó không hẳn là đóng kết nối hoàn toàn tới Database mà đưa vào cái tạm gọi là hồ chứa (Pool) các kết nối để đó, khi một connection có cùng tham số như vậy yêu cầu mở lại, thì nó tìm trong cái hồ chứa lấy ra dùng lại, khỏi tạo kết nối mới.
vâng cám ơn anh, để em nghiên cứu cái này, để e test thử cách nào tốt nhất thì sử dụng (xử lý dữ liệu nhanh nhất, tốn ít cpu + ram nhất có thể)
 
Web KT
Back
Top Bottom