powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / при добавлении поля в таблицу размер базы не увеличился!
25 сообщений из 88, страница 1 из 4
при добавлении поля в таблицу размер базы не увеличился!
    #32672721
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть достаточно большая таблица - 1665344 записей (2 поля типа Long без индексов), размер mdb ~ 26М.
Я добавил в эту таблицу третье поле типа Boolean - через конструктор.
Размер mdb не увеличился ни на один байт, даже после "сжатия и восстановления" ... как такое возможно???
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672737
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем размеру увеличиваться :)
В одном байте может храниться до 8 Boolean полей
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672743
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном байте может храниться до 8 Boolean полей
Правда что-ли?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672750
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а мужики то и не знают...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672763
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSРазмер mdb не увеличился ни на один байт
Хорошо хоть не уменьшился.

Да, мне бы твои проблемы:)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672818
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelХорошо хоть не уменьшился.
Нет, все-таки хорошо, что не увеличился - после восстановления и сжатия
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672822
Shubnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Sh
В одном байте может храниться до 8 Boolean полей
Так то в MS SQL
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672826
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShА зачем размеру увеличиваться :)
В одном байте может храниться до 8 Boolean полей
- ну и в каком же "байте" они будут храниться? может быть - внутри одного из моих Long-полей? ;-))
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672831
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох ПозорныйНет, все-таки хорошо, что не увеличился - после восстановления и сжатия
- во, блин ... крутизна - зашкаливает!
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672856
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для тех кто в танке: На каждые 8 булевских полей в mdb файле выделяется один байт.

Доказательства см. http://sourceforge.net/projects/mdbtools
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672873
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShДля тех кто в танке: На каждые 8 булевских полей в mdb файле выделяется один байт.
- еще раз повторяю: в исходной таблице НЕ БЫЛО булевских полей, были только два поля типа Long.
Жду ответа, как соловей - лета.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672886
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для тех кто вылез из танка
хелп Тип данных: BIT
Размер: 1 байт
Описание: Значения «Да» (Yes) и «Нет» (No), а также поля, содержащие одно из двух возможных значений
Доказательства - жми кнопку Ф1

З.Ы. Хотя и не проверял. Может аксес их и компрессирует все-таки.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672892
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный В одном байте может храниться до 8 Boolean полей
Правда что-ли?
Это действительно так.
На 8 полей выделяется специальный индикатор размером 1 байт. Поэтому добавление Boolean поля могло не вызвать изменения размера, если последний индикатор обслуживал меньше 8 полей.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672898
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох и дался вам этот 1 байт ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672899
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShДля тех кто в танке: На каждые 8 булевских полей в mdb файле выделяется один байт.

Доказательства см. http://sourceforge.net/projects/mdbtools
Не совсем так, не на 8 булевских полей, а просто на каждые восемь полей добавляется 1 байт
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672903
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что я то сразу???
я в танке сижу, мне сказали что 1 поле занимает 1 байт - я поверил
сказали что 8 полей занимает 1 байт - я опять таки поверил

:)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672949
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, все на самом деле еще более запущено: удосужился разделить объем файла (26 869760 байт) на число записей (1665344). Получилось, что у меня на каждые два значения типа Long приходится 16,13 байт ...
Многовато будет, считай - двойной запас ... как такое возможно?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672964
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллега, вы попробуйте вообще все записи удалить, и потом поделить объем базы на количество записей (=0). А потом спросите - как такое возможно?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672971
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и ... что Вы хотите сказать, кроме как "отметиться"? В чем глубокий смысл Вашей реплики?? :-(
Может быть, Вы просто очень торопитесь и ... отвечаете не думая? ;-)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672981
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, это вы очень торопитесь, и задаете вопросы не думая
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672982
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSУ меня есть достаточно большая таблица - 1665344 записей (2 поля типа Long без индексов), размер mdb ~ 26М.
Я добавил в эту таблицу третье поле типа Boolean - через конструктор.
Размер mdb не увеличился ни на один байт, даже после "сжатия и восстановления" ... как такое возможно???

судя по всему у тебя на страницах данных был запас либо в виде явно незаполненных хвостов страницы, либо в виде груды удаленных записей, количества байт в которых оказалось достаточно, чтобы не увеличивать количества страниц данных для таблицы (после как добавления поля, так и сжатия/восстановления :)) ).

ЗЫ
про то, что акцесс економит байты на битовых полях - для меня тоже хорошая новость.


похоже это если и было, то "уже давно". хотя "в явном виде" слышу об этом впервые
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672983
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSКоллеги, все на самом деле еще более запущено: удосужился разделить объем файла (26 869760 байт) на число записей (1665344). Получилось, что у меня на каждые два значения типа Long приходится 16,13 байт ...
Многовато будет, считай - двойной запас ... как такое возможно?
Дык, мало информации, может индексы какие.
А вообще, если интересуетесь форматом mdb, сходите по ссылке, которую дал Alexey Sh
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32672995
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, например, что пишет сохраненная справка от jetdevguide (dbjet) 3.51 по этому поводу
help
Estimating the Size of a Table or Database
You can estimate the size of a Microsoft Jet table or database. You cannot determine the exact size of a table or database for the following reasons:

The size of system tables can vary greatly.


The estimate doesn’t account for the space taken up by indexes in your database.


For simplicity, the estimate assumes contiguous record storage. Microsoft Jet stores records on 2K pages and doesn’t split records across pages. Therefore, you might have unused space on individual data pages, generally less than the size of an average record.


The length of some fields can vary depending on the data they contain. When you estimate the size of a table that contains a variable-length field, the estimate is based on the maximum size of the field, not on the actual length of the data it contains. For example, suppose you define a variable-length field with a size of 25 characters, and you store the character Y in this field. The actual storage consumed will be 2 bytes: 1 for the character and 1 for the overhead. This is 23 bytes fewer than you might use to estimate the storage space for a table.
Consider the following when you estimate the size of a Microsoft Jet table or database:

Records in Microsoft Jet versions 1.0 through 2.5 databases have an overhead of 7 bytes per record, and records in version 3.0 and 3.5 databases have an overhead of 6 bytes per record.


Fields have an overhead of 1 byte, plus 1 byte for every 256 bytes of record storage.


Fixed-length fields for Yes/No, Byte, Integer, Long Integer, Single, Double, and Date/Time data types have an overhead of 1 byte per field, rounded to the next higher byte.


Zero-length text strings occupy 1 byte in the record (plus the overhead described in the preceding bullet).


For Microsoft Jet versions 1.0 through 2.5, the minimum size of a database is 65,536 bytes. These databases always grow in 32K chunks (32,768 bytes). Versions 3.0 and 3.5 databases have a minimum size of 40,960 bytes and grow in multiples of 2K.


A new database created in Microsoft Access 97 is 60K (61,440 bytes) because of additional system tables added by Microsoft Access.
The following table estimates the size of a table in a Microsoft Jet 3.5 database. The table has 10,000 records.

Field Data type/Overhead description Size in bytes Overhead bytes

1 Text 25 1
2 Text 25 1
3 Number/Double 8 1
4 Date/Time 8 1
Record Overhead N/A 6

Totals 66 10


The total size of the table is 66 + 10, or 76, bytes per record. Because the table has 10,000 records, the total size of the table is 760,000 bytes (76 x 10,000). Because this example takes into account the maximum size of the text fields, this is only an estimate of the table size. The actual size of the values in the text fields determine the actual size of the table.

The following table estimates the size of the Customers table in the Microsoft Jet 3.5 Northwind.mdb sample database. The Customers table has 91 records.

Field name/Overhead description Data type Size in bytes Overhead bytes

CustomerID Text 5 1
CompanyName Text 40 1
ContactName Text 30 1
ContactTitle Text 30 1
Address Text 60 1
City Text 15 1
Region Text 15 1
PostalCode Text 10 1
Country Text 15 1
Phone Text 24 1
Fax Text 24 1
Record Overhead N/A N/A 6
Overhead for >256 bytes of text N/A N/A 1

Totals 268 18


The total size of the Customers table is 268 + 18, or 286, bytes per record. Because the table has 91 records, the size of the table is 26,026 bytes (286 x 91). Again, because the actual sizes of the text field values aren’t known, this is only an estimate.


--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources
(с выражением лица)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673012
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, давно структурку смотрел. Итого: На кажде поле всегда выделяется бит в Null-Mask (даже если поле не может содержать NULL, позволяет не трогая данных менять атрибут Required). Boolean поля хранятся в тех же битах, именно поэтому в mdb , булевские поля не могут быть Null. Ксли в таблице два лонга, в неё без изменения размера влезет ещё 6 Boolean полей

+--------------------------------------------------------------------------+
| Jet4 Row Definition |
+------+---------+---------------------------------------------------------+
| data | length | name | description |
+------+---------+---------------------------------------------------------+
| ???? | 2 bytes | num_cols | Number of columns stored on this row. |
| ???? | n bytes | fixed_cols | Fixed length columns |
| ???? | n bytes | var_cols | Variable length columns |
| ???? | 2 bytes | eod | length of data from begining of record |
| ???? | n bytes | var_table[]| offset from start of row for each var_col |
| ???? | 2 bytes | var_len | number of variable length columns |
| ???? | n bytes | null_mask | Null indicator. size is 1 byte per 8 cols |
| | | | 0 indicates a null value. Also used to |
| | | | represent value of bit type columns |
+--------------------------------------------------------------------------+
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673020
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovДык, мало информации, может индексы какие.

- е-к-л-м-н! Написал же - в первом же постере: 2 поля типа Long без индексов!
В базе нет ничего, кроме этой охренительной таблицы (специально ее выудил и отдельно положил!), и сжатия/восстановления - КОНЕЧНО ЖЕ ПРОИЗВЕДЕНО!

И вообще - ПОЧТИ ровно 16 байт на запись ... какие тут могут быть "незаполненные хвосты страницы", какие "груды удаленных записей"?

PS. Кстати, индекс-без-повторений по одному из указаных Long-полей увеличивает размер базы до 40 275 968 байт (24.18 байт/запись), то есть индекс добавляет 8 байт на запись!
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 1 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / при добавлении поля в таблицу размер базы не увеличился!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]