如果我聲明瞭一堆並非總是必需的字段,是爲每個創建的記錄分配的內存,還是在字段初始化之前不分配內存?如何分配數據庫內存?
例如:如果我聲明一個帶有id字段和char(8)字段的表,每次生成一個id並將其輸入到表中時,是爲該字符串分配的內存,還是僅在字符串爲分配了一個值?
如果我聲明瞭一堆並非總是必需的字段,是爲每個創建的記錄分配的內存,還是在字段初始化之前不分配內存?如何分配數據庫內存?
例如:如果我聲明一個帶有id字段和char(8)字段的表,每次生成一個id並將其輸入到表中時,是爲該字符串分配的內存,還是僅在字符串爲分配了一個值?
數據庫將爲類型大小未更改的字段(例如數字字段和char(n)
)分配一組內存。但是,對於類型爲varchar(n)
(可變長度)的字段,例如,它們將與包含在其中的數據一樣大。
在您的示例中,字段類型char(8)
將爲所有8個字符分配內存。如果使字段類型爲varchar(或nvarchar),那麼它只會分配足夠多的空間分配給它。
可以詳細瞭解mysql字符串類型here。
簡答:每次都需要內存(或硬空間)。
如果一個字段是char(8),它總是會分配8個字節(加上數據庫標題的前2個字節)。如果它是一個空的varchar(34),則它將佔用的最小空間爲2.
「字符串」不是有效的數據類型。該字段的實際數據類型是什麼? –