|
|
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
У меня есть достаточно большая таблица - 1665344 записей (2 поля типа Long без индексов), размер mdb ~ 26М. Я добавил в эту таблицу третье поле типа Boolean - через конструктор. Размер mdb не увеличился ни на один байт, даже после "сжатия и восстановления" ... как такое возможно??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 10:56:43 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
А зачем размеру увеличиваться :) В одном байте может храниться до 8 Boolean полей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:03:00 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
В одном байте может храниться до 8 Boolean полей Правда что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:04:40 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
а мужики то и не знают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:06:32 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Иван FXSРазмер mdb не увеличился ни на один байт Хорошо хоть не уменьшился. Да, мне бы твои проблемы:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:09:52 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
PavelХорошо хоть не уменьшился. Нет, все-таки хорошо, что не увеличился - после восстановления и сжатия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:30:36 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Alexey Sh В одном байте может храниться до 8 Boolean полей Так то в MS SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:31:13 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Alexey ShА зачем размеру увеличиваться :) В одном байте может храниться до 8 Boolean полей - ну и в каком же "байте" они будут храниться? может быть - внутри одного из моих Long-полей? ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:32:02 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Лох ПозорныйНет, все-таки хорошо, что не увеличился - после восстановления и сжатия - во, блин ... крутизна - зашкаливает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:33:09 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Для тех кто в танке: На каждые 8 булевских полей в mdb файле выделяется один байт. Доказательства см. http://sourceforge.net/projects/mdbtools ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:42:44 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Alexey ShДля тех кто в танке: На каждые 8 булевских полей в mdb файле выделяется один байт. - еще раз повторяю: в исходной таблице НЕ БЫЛО булевских полей, были только два поля типа Long. Жду ответа, как соловей - лета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:46:47 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Для тех кто вылез из танка хелп Тип данных: BIT Размер: 1 байт Описание: Значения «Да» (Yes) и «Нет» (No), а также поля, содержащие одно из двух возможных значений Доказательства - жми кнопку Ф1 З.Ы. Хотя и не проверял. Может аксес их и компрессирует все-таки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:49:39 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Лох Позорный В одном байте может храниться до 8 Boolean полей Правда что-ли? Это действительно так. На 8 полей выделяется специальный индикатор размером 1 байт. Поэтому добавление Boolean поля могло не вызвать изменения размера, если последний индикатор обслуживал меньше 8 полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:51:11 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Ох и дался вам этот 1 байт ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:53:16 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Alexey ShДля тех кто в танке: На каждые 8 булевских полей в mdb файле выделяется один байт. Доказательства см. http://sourceforge.net/projects/mdbtools Не совсем так, не на 8 булевских полей, а просто на каждые восемь полей добавляется 1 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:53:37 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
а что я то сразу??? я в танке сижу, мне сказали что 1 поле занимает 1 байт - я поверил сказали что 8 полей занимает 1 байт - я опять таки поверил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 11:54:00 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Коллеги, все на самом деле еще более запущено: удосужился разделить объем файла (26 869760 байт) на число записей (1665344). Получилось, что у меня на каждые два значения типа Long приходится 16,13 байт ... Многовато будет, считай - двойной запас ... как такое возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:05:05 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Коллега, вы попробуйте вообще все записи удалить, и потом поделить объем базы на количество записей (=0). А потом спросите - как такое возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:08:50 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Ну и ... что Вы хотите сказать, кроме как "отметиться"? В чем глубокий смысл Вашей реплики?? :-( Может быть, Вы просто очень торопитесь и ... отвечаете не думая? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:11:39 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Нет, это вы очень торопитесь, и задаете вопросы не думая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:14:18 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Иван FXSУ меня есть достаточно большая таблица - 1665344 записей (2 поля типа Long без индексов), размер mdb ~ 26М. Я добавил в эту таблицу третье поле типа Boolean - через конструктор. Размер mdb не увеличился ни на один байт, даже после "сжатия и восстановления" ... как такое возможно??? судя по всему у тебя на страницах данных был запас либо в виде явно незаполненных хвостов страницы, либо в виде груды удаленных записей, количества байт в которых оказалось достаточно, чтобы не увеличивать количества страниц данных для таблицы (после как добавления поля, так и сжатия/восстановления :)) ). ЗЫ про то, что акцесс економит байты на битовых полях - для меня тоже хорошая новость. похоже это если и было, то "уже давно". хотя "в явном виде" слышу об этом впервые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:14:36 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Иван FXSКоллеги, все на самом деле еще более запущено: удосужился разделить объем файла (26 869760 байт) на число записей (1665344). Получилось, что у меня на каждые два значения типа Long приходится 16,13 байт ... Многовато будет, считай - двойной запас ... как такое возможно? Дык, мало информации, может индексы какие. А вообще, если интересуетесь форматом mdb, сходите по ссылке, которую дал Alexey Sh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:14:39 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
вот, например, что пишет сохраненная справка от 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 (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:17:37 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
да, давно структурку смотрел. Итого: На кажде поле всегда выделяется бит в 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 | +--------------------------------------------------------------------------+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:24:12 |
|
||
|
при добавлении поля в таблицу размер базы не увеличился!
|
|||
|---|---|---|---|
|
#18+
Serge GavrilovДык, мало информации, может индексы какие. - е-к-л-м-н! Написал же - в первом же постере: 2 поля типа Long без индексов! В базе нет ничего, кроме этой охренительной таблицы (специально ее выудил и отдельно положил!), и сжатия/восстановления - КОНЕЧНО ЖЕ ПРОИЗВЕДЕНО! И вообще - ПОЧТИ ровно 16 байт на запись ... какие тут могут быть "незаполненные хвосты страницы", какие "груды удаленных записей"? PS. Кстати, индекс-без-повторений по одному из указаных Long-полей увеличивает размер базы до 40 275 968 байт (24.18 байт/запись), то есть индекс добавляет 8 байт на запись! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:28:10 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32672971&tid=1672025]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 353ms |

| 0 / 0 |
