PDA

View Full Version : Tổng số dòng trong SQL



Mr_Bac
20-05-2010, 13:41
Mình đang sử dụng SQL 2005 để lưu mã sản phẩm của công ty.
Một ngày công ty sản xuất khoảng 5000 sản phẩm.
Vậy mình muốn hỏi là trong 1 Table của SQL thì nó sẽ có tối đa là bao nhiêu dòng?
Vì với khoảng 5000 mã 1 ngày thì 5 năm nữa thì không biết SQL có lưu nổi hay không vì nó lên tới vài triệu dòng rùi.
Có bác nào biết chỉ giùm cái nhé. Nếu không được thì tớ sẽ kiếm cách khác để lưu.

xuanhau
20-05-2010, 14:43
http://technet.microsoft.com/en-us/library/ms143432.aspx
Rows per table : Limited by available storage

Mr_Bac
20-05-2010, 15:14
"Rows per table : Limited by available storage"

Vậy là cũng không biết được sẽ khoảng bao nhiêu dòng nhỉ.
Mình dùng kiểu dữ liệu varchar(30) cho mã sản phẩm, không biết sẽ lưu được khoảng bao nhiêu dòng nhỉ ?

bvnguyen
20-05-2010, 15:25
"Rows per table : Limited by available storage"

Vậy là cũng không biết được sẽ khoảng bao nhiêu dòng nhỉ.
Mình dùng kiểu dữ liệu varchar(30) cho mã sản phẩm, không biết sẽ lưu được khoảng bao nhiêu dòng nhỉ ?

có nghĩa là, nó bị giới hạn bởi dung lượng ổ lưu trữ, nếu ổ lưu trữ của bạn là vô hạn thì số dòng là vô hạn

vuht2000
20-05-2010, 19:53
Cần lưu ý là về mặt lý thuyết SQL Server có thể quản lý được một số vô hạn bản ghi, nhưng trên những hệ thống phần cứng và ứng dụng cụ thể thường sẽ có một giới hạn nào đó (khi performance của hệ thống giảm hẳn). Khi đó bạn phải nghĩ đến nâng cấp phần cứng hoặc partition dữ liệu.
Trong trường hợp của bạn, với một thiết kế hợp lý thì vài triệu bản ghi không có gì là trở ngại ngay cả với server có cấu hình vừa phải (tuy nhiên cũng còn tùy vào độ phức tạp của ứng dụng, bao nhiêu người dùng đồng thời...)

dinhanhency
20-05-2010, 20:30
SQL còn giới hạn khả năng lưu trử toàn bộ DB nữa. Cái này do dữ liệu ở các bảng quyết định.

vzic
20-05-2010, 20:44
Cứ thoải mái ông anh ạ. Khi nào limit thì tính sau :D. Ông a còn làm ở cty đó nhiều mà lo gì :D

hieuno
20-05-2010, 20:45
bạn hoàn toàn có thể ước lượng dc trong bao lâu thì csdl nó chết .
nếu bạn khai báo varchar(30) .
vd : 0000000000............1
0000000000............2
thì khi
9999999999............9
là csdl của bạn chết , tức là không lưu được nữa . còn về lưu lưỡng ổ cứng hay gì đó thì là các yếu tố bên ngoài thui hoàn toàn có thể khắc phục được. theo mình nghĩ thế

Mr_Bac
21-05-2010, 09:49
Cám ơn mọi người. Mình đã hiểu được phần nào về nó.
Chương trình của mình nhỏ lắm, chỉ có 12 Table thôi à.
Nếu mỗi ngày có khoảng 5000 sản phẩm. Thì sau 30 năm sẽ có khoảng gần 55 triệu sản phẩm. Vẫn lưu vô tư.
Mà 30 năm nữa thì chắc khỏi phải lo. Lúc đó không biết mình còn sống không chứ đừng nói đến việc còn làm cái này hay không.

Cám ơn mọi người nhiều nhé.

megaownage
21-05-2010, 09:51
Về mặt kỹ thuật phần mềm:
5000/ngày => 1800000/năm => 9000000/5 năm
Hoàn toàn không có vấn đề gì cả. Tôi thấy bảng vài chục triệu dòng cũng chạy bình thường. Sau 5 năm kỹ thuật phần cứng và phần mềm đều tăng tiến, thừa sức theo kịp nhu cầu.

Về mặt kỹ thuật dữ liệu:
9 triệu sản phẩm. Làm sao kiểm soát nổi. Nên theo lời khuyên của vuht2000 mà phân chia (partition) nó ra thành từng khoảng thời gian khác nhau. Mấy bảng vài chục triệu dòng tôi kể trên, chuyên viên db đều phải đặt ra cách kiểm soát chặt chẽ - vd họ đặt ra luật record sau 1 năm không được bôi sửa, vv...

kuzumi_sanhdieu
07-09-2010, 12:01
cho mình hỏi là cái này nó có ảnh hưởng tới tốc độ truy xuất dữ liệu không vậy? Tức là quá nhiều dòng ấy!

vzic
08-09-2010, 17:36
cho mình hỏi là cái này nó có ảnh hưởng tới tốc độ truy xuất dữ liệu không vậy? Tức là quá nhiều dòng ấy!
Tất nhiều rồi bạn, càng nhiều record query càng chậm. Đó là điều không thể tránh khỏi :D. Cố gắng tối ưu truy vấn để nhanh nhất thôi!

cao_hung
10-09-2010, 14:19
Hehe. Mình có gặp vấn đề này một lần. chia sẻ cho bạn, không biết có giúp được gì hog. Lúc trước mình có test thử MS SQL 2005 chỉ lưu được 5G thôi, mặc dù dung lượng ổ đĩa còn trống tới 20G. nó bảo là chỉ giới hạn cho dữ liệu tới đó thôi(lỗi như thế nào mình không nhớ chính xác).
Cũng xin nói thêm, cách test của mình lúc đó là chuyển các đoạn video có dung lượng lơn thành byte[] rồi lưu vào. chứ khôg lưu dạng text. vì dạng text đợi chạy lên 5G rất là lâu.

Red Devilic 1
10-09-2010, 19:04
Bản SQL Server 2005 của bạn là bản nào, chắc chắn không phải là bản Enterprise. Có thể bản bạn đang dùng là Express

Hoặc Database của bạn không chọn thuộc tính Auto Extend mà chỉ giới hạn cho nó là 5 GB.

Các hệ CSDL lớn như SQL Server, Oracle, dung lượng DB hầu như là vô hạn, tùy thuộc vào Storage của máy thôi :)