Tôi đang cố gắng tính toán kích thước cơ sở dữ liệu của mình. Tôi sẽ có một bảng với 3 cột (id, int, tiền) Tôi sẽ có 26 triệu hàng với tất cả các cột đang bị chiếm đóng. Cơ sở dữ liệu của tôi sẽ lớn đến cỡ nào? Ngoài ra, nơi tôi có thể tìm thấy kích thước của tất cả các kiểu dữ liệu SQL Server?Nơi tìm kích thước của kiểu dữ liệu SQL Server
Trả lời
bạn có thể sử dụng dưới đây truy vấn:
SELECT * FROM sys.types
kết quả của truy vấn trên là dưới đây:
name system_type_id user_type_id schema_id principal_id max_length precision scale collation_name is_nullable is_user_defined is_assembly_type default_object_id rule_object_id is_table_type
-------------------- -------------- ------------ --------- ------------ ---------- --------- ----- ----------------- ----------- --------------- ---------------- ----------------- -------------- -------------
image 34 34 4 NULL 16 0 0 NULL 1 0 0 0 0 0
text 35 35 4 NULL 16 0 0 Persian_100_CI_AI 1 0 0 0 0 0
uniqueidentifier 36 36 4 NULL 16 0 0 NULL 1 0 0 0 0 0
date 40 40 4 NULL 3 10 0 NULL 1 0 0 0 0 0
time 41 41 4 NULL 5 16 7 NULL 1 0 0 0 0 0
datetime2 42 42 4 NULL 8 27 7 NULL 1 0 0 0 0 0
datetimeoffset 43 43 4 NULL 10 34 7 NULL 1 0 0 0 0 0
tinyint 48 48 4 NULL 1 3 0 NULL 1 0 0 0 0 0
smallint 52 52 4 NULL 2 5 0 NULL 1 0 0 0 0 0
int 56 56 4 NULL 4 10 0 NULL 1 0 0 0 0 0
smalldatetime 58 58 4 NULL 4 16 0 NULL 1 0 0 0 0 0
real 59 59 4 NULL 4 24 0 NULL 1 0 0 0 0 0
money 60 60 4 NULL 8 19 4 NULL 1 0 0 0 0 0
datetime 61 61 4 NULL 8 23 3 NULL 1 0 0 0 0 0
float 62 62 4 NULL 8 53 0 NULL 1 0 0 0 0 0
sql_variant 98 98 4 NULL 8016 0 0 NULL 1 0 0 0 0 0
ntext 99 99 4 NULL 16 0 0 Persian_100_CI_AI 1 0 0 0 0 0
bit 104 104 4 NULL 1 1 0 NULL 1 0 0 0 0 0
decimal 106 106 4 NULL 17 38 38 NULL 1 0 0 0 0 0
numeric 108 108 4 NULL 17 38 38 NULL 1 0 0 0 0 0
smallmoney 122 122 4 NULL 4 10 4 NULL 1 0 0 0 0 0
bigint 127 127 4 NULL 8 19 0 NULL 1 0 0 0 0 0
hierarchyid 240 128 4 NULL 892 0 0 NULL 1 0 1 0 0 0
geometry 240 129 4 NULL -1 0 0 NULL 1 0 1 0 0 0
geography 240 130 4 NULL -1 0 0 NULL 1 0 1 0 0 0
varbinary 165 165 4 NULL 8000 0 0 NULL 1 0 0 0 0 0
varchar 167 167 4 NULL 8000 0 0 Persian_100_CI_AI 1 0 0 0 0 0
binary 173 173 4 NULL 8000 0 0 NULL 1 0 0 0 0 0
char 175 175 4 NULL 8000 0 0 Persian_100_CI_AI 1 0 0 0 0 0
timestamp 189 189 4 NULL 8 0 0 NULL 0 0 0 0 0 0
nvarchar 231 231 4 NULL 8000 0 0 Persian_100_CI_AI 1 0 0 0 0 0
nchar 239 239 4 NULL 8000 0 0 Persian_100_CI_AI 1 0 0 0 0 0
xml 241 241 4 NULL -1 0 0 NULL 1 0 0 0 0 0
sysname 231 256 4 NULL 256 0 0 Persian_100_CI_AI 0 0 0 0 0 0
CalculatedCreditInfo 243 257 9 NULL -1 0 0 NULL 0 1 0 0 0 1
udt_QoutaDetail 243 258 21 NULL -1 0 0 NULL 0 1 0 0 0 1
BeforeUpdate 243 259 22 NULL -1 0 0 NULL 0 1 0 0 0 1
udt_StoreInventory 243 260 26 NULL -1 0 0 NULL 0 1 0 0 0 1
udt_WKFHistory 243 261 32 NULL -1 0 0 NULL 0 1 0 0 0 1
IDTable 243 262 1 NULL -1 0 0 NULL
bạn có thể sử dụng max_length cho kích thước của từng loại dữ liệu.
điều này không hiển thị kích thước. ví dụ, kích thước của một biến trống XML là 5, nó nói nó ở đâu? –
bạn có thể thấy một bổ sung tốt (nếu không phải là một lựa chọn tốt hơn) cho câu trả lời này [ở đây] (http://dba.stackexchange.com/questions/147296/where-to-find-the-size-of-sql-server -data-types/147315 # 147315) –
nvarchar rộng 2 byte. vì vậy sys.columns.max_length = 44. nhưng độ dài thực tế là 22. nơi nào kích thước thực tế của kiểu dữ liệu được hiển thị? Không phải kích thước tối đa mà một cột thuộc loại đó có thể là. – TamusJRoyce
http://msdn.microsoft.com/en-us/library/ms187752.aspx
Money : 8 bytes
int : 4 bytes
id - depends on what you mean.
+ chi phí hàng khác như 'NULL_BITMAP' và bit trạng thái có thể là con trỏ phiên bản nếu bật chế độ cô lập ảnh chụp nhanh. –
Nếu bảng được chỉ định trong mệnh đề where chứa nvarchar, truy vấn này sẽ cung cấp cho bạn số lượng ký tự có cho cột đó chính xác!
Điều này phát hiện nếu cột là "rộng" và về cơ bản chia cho 2. Rộng hơn chỉ nvarchar.
SELECT c.name, (CASE WHEN LEFT(ts.name, 1) = 'n' AND ts.[precision] = 0 AND ts.[scale] = 0 THEN c.max_length/ts.[bytes] ELSE c.max_length END) AS [length]
FROM sys.columns AS c
INNER JOIN sys.tables AS t
ON t.object_id = c.object_ID
INNER JOIN
(
SELECT *, (CASE WHEN [bits] = -1 THEN -1 ELSE ([bits] + 7)/8 END) AS [bytes]
FROM (
SELECT *, (CASE WHEN max_length >= 256 THEN (CASE WHEN LEFT(name, 1) = 'n' AND [precision] = 0 AND [scale] = 0 THEN 16 ELSE 8 END) ELSE max_length END) AS [bits]
FROM sys.types AS iits
) AS its
) AS ts
ON ts.user_type_id = c.user_type_id
WHERE t.name LIKE 'tb_tablename' -- LIKE is case insensitive
Tất nhiên, bạn chỉ có thể chia max_length trên sys.columns cho 2 nếu bạn biết cột là nvarchar. Điều này là nhiều hơn cho việc khám phá lược đồ bảng theo cách có vẻ tốt hơn nếu các kiểu dữ liệu sql mới được giới thiệu trong tương lai. Và bạn chọn để nâng cấp lên nó. Khá nhỏ cạnh trường hợp.
Vui lòng chỉnh sửa và sửa câu trả lời này nếu bạn thấy một trường hợp cạnh mà byte và bit không chính xác.
chi tiết:
-- ([bits] + 7)/8 means round up
--
-- Proof:
-- o (1 bit + 7 = 8)/8 = 1 byte used
-- o ((8 + 8 + 1 = 17 bytes) + 7 = 24)/8 = 3 byes used
-- o ((8 + 8 + 7 = 23 bytes) + 7 = 30)/8 = 3.75 = integer division removes decimal = 3
SELECT *, (CASE WHEN [bits] = -1 THEN -1 ELSE ([bits] + 7)/8 END) AS [bytes]
FROM (
SELECT *, (CASE WHEN max_length >= 256 THEN (CASE WHEN LEFT(name, 1) = 'n' AND [precision] = 0 AND [scale] = 0 THEN 16 ELSE 8 END) ELSE max_length END) AS [bits]
FROM sys.types AS its
) AS ts
Nếu ai đó biết rằng SQL Server lưu trữ các bit và byte kích thước cho từng loại dữ liệu. Hoặc một cách tốt hơn để có được kích thước sys.columns, xin vui lòng để lại một bình luận!
- 1. Chọn kích thước cơ sở dữ liệu SQL Server
- 2. Làm việc với kiểu dữ liệu XML của SQL Server
- 3. Tôi tìm siêu dữ liệu Sql Server cho các kiểu dữ liệu cột ở đâu?
- 4. Kích thước của kiểu dữ liệu cho actionscript 3
- 5. SQL Server 2005: Xác định kiểu dữ liệu của biến
- 6. Nhận kiểu dữ liệu của cột SQL Server bằng C#
- 7. Kích thước của kiểu dữ liệu sử dụng NumPy
- 8. Nhận tổng số của tất cả các kích thước cơ sở dữ liệu trong SQL Server
- 9. Dữ liệu nào có thể được lưu trữ trong kiểu dữ liệu varbinary của SQL Server?
- 10. SQL Server varbinary (max) đến kiểu dữ liệu hình ảnh
- 11. Kiểu dữ liệu XML Trong truy vấn SQL Server 2008
- 12. Có cách nào để tìm hiểu kích thước/kích thước của các bảng cơ sở dữ liệu của bạn không?
- 13. SQL Server 2005 UniqueIdentifier và C# Kiểu dữ liệu
- 14. giới hạn kích thước cho kiểu dữ liệu XML trong SQL 2005
- 15. Kích thước của trường VARBINARY trong SQL Server 2005
- 16. Loại dữ liệu thập lục phân của SQL Server
- 17. Tạo tập lệnh SQL cho dữ liệu của cơ sở dữ liệu của tôi (SQL SERVER)
- 18. Không thể tìm thấy ngày kiểu dữ liệu trong SQL Server 2005
- 19. Nâng cấp cơ sở dữ liệu SQL Azure kích thước
- 20. Kích thước cơ sở dữ liệu qua WMI trong .NET
- 21. Giới hạn kích thước giao dịch trong SQL Server
- 22. VarBinary vs Image SQL Server Kiểu dữ liệu để lưu trữ dữ liệu nhị phân?
- 23. Tại sao kích thước của kiểu dữ liệu bool chỉ bằng 1 bit trong C#?
- 24. SQL 2008 - varchar (max) vs kiểu dữ liệu văn bản
- 25. Bí danh cơ sở dữ liệu chéo của SQL Server
- 26. Nơi tìm thủ tục lưu trữ msdb.dbo.sp_send_dbmail trong SQL Server
- 27. SQL Server 2005 có tương đương với kiểu dữ liệu ENUM của MySql không?
- 28. Loại dữ liệu Sql cho khóa chính - SQL Server?
- 29. Kích thước tối đa của kiểu dữ liệu "TEXT" trong postgresql
- 30. Kích thước của dữ liệu kiểu enum trong C++ là bao nhiêu?
Có lẽ là một khởi đầu tốt: http://msdn.microsoft.com/en-us/library/ms175991.aspx –
Bạn nhận ra rằng bạn phải biết NHIỀU về nội bộ DB để đến một con số chính xác? Nó có thể dễ dàng hơn để tạo ra một bảng có kích thước với dữ liệu giả với các thiết lập mà bạn mong muốn, và sau đó kiểm tra kích thước. Có một trăm mối quan tâm cấp thấp có thể thêm hoặc trừ đi số byte cần thiết. – delnan