2009-08-23 173 views
3

我正在學習mysql認證指南。在位數據類型部分,它說MySQL位數據類型存儲空間

一個BIT(4)每瘡值

和存儲要求4比特爲一個BIT(n)的列是(N + 7)/ 8。我不明白這個部分。 (4)只佔用4位存儲空間?

回答

4

其實這是一個笨拙的方法來收集結果。這意味着BIT(1)到BIT(8)需要1個字節,BIT(9)到BIT(16)需要2個字節,等等。沒有7位開銷。將位數除以8,並將結果四捨五入。 BIT(4)將佔用1個字節。

+0

實際上,根據excel和mysql的書中公式,位(1-4)取1個字節,位(5-12)2個字節, (3-20)3個字節,這是相當奇怪的,我認爲公式你的意思是簡單的N/8四捨五入?那麼我認爲你的方法是有道理的,但如果我要參加認證考試,我想我需要遵循這本書?他們是對的?除非是勘誤表? – iceangel89 2009-08-24 06:27:11

+1

我認爲「/ 8」是一個整數除法,與此類似:SELECT(7 + 7)div 8; – 2009-08-24 22:02:36

+0

好吧,那麼我想清除的東西,猜計算機存儲btyes不是位?或者更確切地說,使用部分字節的任何東西都會被舍入? – iceangel89 2009-09-05 03:52:24

2

似乎有一個7位的開銷 - 可能確定一塊內存作爲位存儲。

這7位被添加到由BIT(n)所請求的數目,並且總數除以8以給出字節數。 本手冊將(n + 7)/ 8定義爲BYTES

所以4位需要少於2個字節。該手冊說'大致',因爲它取決於你是否談論整個字節或分數。

+0

除表結構定義之外沒有開銷。公式的結果以字節爲單位。然而變量n在BITS中。 1-8位= 1字節存儲,9-16位= 2字節等。 – Beanow 2013-01-14 13:27:02