powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / при добавлении поля в таблицу размер базы не увеличился!
88 сообщений из 88, показаны все 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
при добавлении поля в таблицу размер базы не увеличился!
    #32673031
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boolean поля хранятся в тех же битах, именно поэтому в mdb , булевские поля не могут быть Null.
Все гениальное просто. Сенькс.

Ксли в таблице два лонга, в неё без изменения размера влезет ещё 6 Boolean полей
Надеюсь автор получил ответ на свой первоначальный вопрос?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673043
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Ксли в таблице два лонга, в неё без изменения размера влезет ещё 6 Boolean полей
Надеюсь автор получил ответ на свой первоначальный вопрос?
- да, на первоначальный - получил. Спасибо ВСЕМ за конструктивный подход.

Осталось расписать, - как на структуре из 2-х Loнгов набегает 16 байт на запись ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673051
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а системные таблицы где хранится будут?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673054
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может еще какой запрос, форма\отчет или модуль\макрос в mdb затесался.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673063
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelНу а системные таблицы где хранится будут?
- если это вопрос ко мне, то ... при размере таблицы в 26М - "где будут хранится системные таблицы" - меня мало интересует!
На запись приходится 16.13 байта, вот в этих 0.13 байта и "хранятся", очевидно, системные таблицы ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673071
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS- е-к-л-м-н! Написал же - в первом же постере: 2 поля типа Long без индексов!

ну что вы так нервничаете :)
ну пропустил, виноват, работаю одновременно ..
Но я же вам сказал, что вы можете изучить формат сами.
Просто и для страницы нужно описание и для записи.
Даже на первый взгляд видно, что каждой записи надо как минимум 4 байта на описание ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673072
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS Лох Позорный Ксли в таблице два лонга, в неё без изменения размера влезет ещё 6 Boolean полей
Надеюсь автор получил ответ на свой первоначальный вопрос?
- да, на первоначальный - получил. Спасибо ВСЕМ за конструктивный подход.

Осталось расписать, - как на структуре из 2-х Loнгов набегает 16 байт на запись ...

в соответствии с таблицей от Alexey Sh:

2 байта - - к-во полей
2 байта - выровненный до ште описатель дщтпф
4 байта - значение лонга
2 байта - выровненный до ште описатель дщтпф
4 байта - значение лонга
1 байт - нулл маск
--------------------
15
умно было бы выровнять хотябы до ближайшего кратного int
если не так, то лишние байты соберутся в конце страницы, а работа с базой РЕЗКО замедлится
+1
=16
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673135
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Два байта на Offset на каждую запись!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
+--------------------------------------------------------------------------+
| Jet4 Data Page Definition                                                |
+------+---------+---------------------------------------------------------+
| data | length  | name       | description                                |
+------+---------+---------------------------------------------------------+
| 0x01 | 1 byte  | page_type  | 0x01 indicates a data page.                |
| 0x01 | 1 byte  | unknown    |                                            |
| ???? | 2 bytes | free_space | Free space in this page                    |
| ???? | 4 bytes | tdef_pg    | Page pointer to table definition           |
| ???? | 4 bytes | unknown    | Unknown                                    |
| ???? | 4 bytes | num_rows   | number of records on this page             |
+------+---------+---------------------------------------------------------+
| Iterate for the number of records                                        |
+--------------------------------------------------------------------------+
| ???? | 2 bytes | offset_row | The records location on this page          |
+--------------------------------------------------------------------------+
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673194
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha--------------------
15
умно было бы выровнять хотябы до ближайшего кратного int
если не так, то лишние байты соберутся в конце страницы, а работа с базой РЕЗКО замедлится
+1
=16
Супер! Спасибо!!
Но дальше ... интересные вещи продолжаются.
Я решил, что могу в тот же размер впихнуть еще 6 + 8 =14 Booleans (+8 - это 16-й байт, котрый сейчас "пропадает") ... и в самом деле, таблица приняла их не пикнув!
Когда я добавил 15-й Boolean - база подросла на ... 60Кб, но после сжатия - ВЕРНУЛАСЬ В ПРЕЖНИЙ размер!
И так - продолжалось при добавлении Booleans с 15-го по 30-й (т.е - пока ПОЛНОЕ число полей в таблице не стало - 32) ...
А вот когда я добавил 31-й Boolean (число полей в таблице стало - 33) - база выросла до 28 557 312 байт, то есть - добавился "скачком" 1 байт на запись ...
Забавно ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673215
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Add: похоже, будто тот "описатель записи", в котором "на халяву" размещаются Booleans, имеет размер не 1 байт, а 32 бита (4 байта) ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673253
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...если вы сумели диагностировать ослабление крепления картера рулевого управления - значит, вы здорово разбираетесь в таких мудрёных вещах!
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673275
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван , а производственная необходимость состоит в экономии дискового пространства или в поиске способа компактного хранения данных ?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673351
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во многих знаниях многия печали, и умножающий премудрость умножает скорбь (с) Экклезиаст
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673374
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Наверно, я невнимательно читал этот топик, поэтому заранее прошу прощения. Но мне кажется, что размер файла mdb увеличивается скачками по сколько-то байтов. Каждый скачок добавляет место для следующего роста количества информации, пока не понадобится следующий скачок. Если при добавлении поля увеличение файла не произошло - это значит, что предыдущего скачка хватило.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673434
скачек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч... размер файла mdb увеличивается скачками по сколько-то байтов. Каждый скачок добавляет место для следующего роста количества информации, пока не понадобится следующий скачок. Если при добавлении поля увеличение файла не произошло - это значит, что предыдущего скачка хватило.
97 - 2048
> 97 - 4096
размер страницы
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673438
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShuhardИван , а производственная необходимость состоит в экономии дискового пространства или в поиске способа компактного хранения данных ?
- производственная необходимость, говорите? ... А я думал, - экономия ресурсов, - это как бы такой безусловный рефлекс должен быть ... у программистов ... ;-)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673448
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тогда почему бы тебе еще и TMP файлы на диске не чистить паралельно. Тоже экономия ресурсов ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673472
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эт, Вы считаете, конструктивный разговор? ;-)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673474
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Иван FXS :

Решая задачу оптимизации, неплохо бы определиться с целевой функцией

Мы Вас обслужим быстро, качественно , недорого. Просьба выбрать два пункта
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32673939
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS ShuhardИван , а производственная необходимость состоит в экономии дискового пространства или в поиске способа компактного хранения данных ?
- производственная необходимость, говорите? ... А я думал, - экономия ресурсов, - это как бы такой безусловный рефлекс должен быть ... у программистов ... ;-)

тогда mdb не оптимален - легко заметить по коэффициенту сжатия любым архиватором.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674017
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardтогда mdb не оптимален - легко заметить по коэффициенту сжатия любым архиватором.
Не путай оптимальность с нормализацией. Хранилище OLAP в формате mdb ой как жмется, но это совсем не значит что оно не оптимально.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674023
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранилище OLAP в формате mdb
Ахтунг!
Я уже боюсь
Такое бывает?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674080
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Хранилище OLAP в формате mdb
Ахтунг!
Я уже боюсь
Такое бывает?
к Crystal Reports что-то похожее идёт
Pavel - про "рыхлость" куба понимаю ,хочу добиться от Ивана ответа о цели оптимизации,выяснили про устройство mdb каков дальнейший шаг - тестирование всех ISAM форматов ?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674117
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пугайте меня, к кристалу 9 прикладывалась базейка xtrem.mdb и некие Holos Data control File и Holos Data Dimension File, а кубик похоже кристалом из этого добра на лету строится
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674133
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Хранилище OLAP в формате mdb
Ахтунг!
Я уже боюсь
Такое бывает?

Не только бывает а ЕСТЬ ПО УМОЛЧАНИЮ, если иначе не приказать.
Можно сказать - стандарт, а вовсе не АХТУНГ.

ЗЫ

не пужайся сильно. там главным образом описания живут...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674134
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Хранилище OLAP в формате mdb
Ахтунг!
Я уже боюсь
Такое бывает?
С AS пример идет как раз в формате mdb.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674137
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha, не видел твой пост :)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674139
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelVictosha, не видел твой пост :)
и я не видел
:)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674192
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard...хочу добиться от Ивана ответа о цели оптимизации,выяснили про устройство mdb каков дальнейший шаг ...
- да нету никакой "цели оптимизации"!
Есть общее понимание - на уровне здравого смысла - что чем больше полей, тем больше база. Значит - если проектируешь систему ... -мку ..., включающую в себя БОЛЬШУЮ таблицу (на миллионы записей), то нужно себя ограничивать ...
Когда знаешь, что - в некоторых ситуациях - можно себя кое в чем не ограничивать, это ... просто ... приятно. ;-)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674252
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS Shuhard...хочу добиться от Ивана ответа о цели оптимизации,выяснили про устройство mdb каков дальнейший шаг ...
- да нету никакой "цели оптимизации"!
Есть общее понимание - на уровне здравого смысла - что чем больше полей, тем больше база. Значит - если проектируешь систему ... -мку ..., включающую в себя БОЛЬШУЮ таблицу (на миллионы записей), то нужно себя ограничивать ...
Когда знаешь, что - в некоторых ситуациях - можно себя кое в чем не ограничивать, это ... просто ... приятно. ;-)
здравый смысл подсказывает ,что миллионы записей в mdb хранить не есть хорошо.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674304
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shuhard : Зачем так категорично? Если табличка на два лонга и 2 бита с показаниями какого-нибудь датчика в университетской лаборатории, то поиграться с парой-другой миллионов записей в аксессе - вполне нормально, особенно для физика, а не программера например
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674336
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Sh2 Shuhard : Зачем так категорично? Если табличка на два лонга и 2 бита с показаниями какого-нибудь датчика в университетской лаборатории, то поиграться с парой-другой миллионов записей в аксессе - вполне нормально, особенно для физика, а не программера например
с 2 полями не пробовал - весьма редкий случай базы из ОДНОЙ таблицы
документооборот/статистика у меня "умирали" при 70-120 000 записей
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674618
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardдокументооборот/статистика у меня "умирали" при 70-120 000 записей
- что показывало вскрытие, от чего умер больной?
От количества записей, от объема базы, от чего-то еще?

В чем ПРИНЦИПИАЛЬНОЕ ограничение, не позволяющее аццессу работать - например - с миллиардом записей?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674655
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Access'97 из хелпа:
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674658
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последующих версиях размер mdb увеличился до 2 гигов.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674824
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПРИНЦИПИАЛЬНОЕ ограничения см в спецификации Access
в моем случае времена выборки были критичны
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674905
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardв моем случае времена выборки были критичны
- времена выборки - по индексированым полям, надеюсь?
Тогда - непонятно ... индекс, он и в африке - индекс ... бинарное дерево, или что-то типа того ... Каким образом Аццесс может тут оказываться ПРИНЦИПИАЛЬНОЕ медленее других СУБД?
Вы ведь не хотите сказать, что ... он просто не умеет их готовить ... в смысле: Билл Гейтс - индексы?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674935
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этта от запросов зависит, по техническим причинам, JET не может в кэше долго держать страницы как данных, так и индексов

См MSDN, искать "jet locking"
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32674964
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS Shuhardв моем случае времена выборки были критичны
- времена выборки - по индексированым полям, надеюсь?
Тогда - непонятно ... индекс, он и в африке - индекс ... бинарное дерево, или что-то типа того ... Каким образом Аццесс может тут оказываться ПРИНЦИПИАЛЬНОЕ медленее других СУБД?
Вы ведь не хотите сказать, что ... он просто не умеет их готовить ... в смысле: Билл Гейтс - индексы?
ищи луну в небе ,а не в пруду.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32675109
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShЭтта от запросов зависит, по техническим причинам, JET не может в кэше долго держать страницы как данных, так и индексов

См MSDN, искать "jet locking"

- спасибо за ликбез. А зачем нужно "долго держать в кэше страницы как данных, так и индексов"? Чтобы лишний раз их туда не загружать?
Типа ... если "страниц данных и индексов" в базе - мегабайт этак ... на 10 (100?) - хочется держать их постоянно в кэше?

И - какая тогда есть РЕАЛЬНАЯ альтернатива аццессу:
а. для использования в качестве ПЕРСОНАЛЬНОГО инструмента
б. на ЛОКАЛЬНОЙ
в. машине из-по WINDOWS
?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32675128
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, хочется держать в кэше максимум возможного

А что касается локальной базы на локальной машине для одинокого юзера - я собственно никогда и не возражал против аксесса
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32675248
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
И - какая тогда есть РЕАЛЬНАЯ альтернатива аццессу:
а. для использования в качестве ПЕРСОНАЛЬНОГО инструмента
б. на ЛОКАЛЬНОЙ
в. машине из-по WINDOWS

для решения какой задачи ищется альтернатива ,что значит реальная,отличия персонального инструмента,и нужен ли Linux ?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32675298
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родился Джет, рос себе, развивался. Был у него старший брат - Эмэс Эскуэл. Эскуэл выполнял всю тяжелую работу, а Джет делал что попроще. Причем мелкую работу делал очень быстро, практически без подготовки, и ел при этом гораздо меньше старшего брата. Но вот тяжелую работу он делал с трудом, часто ее запарывал, и поэтому поручали ее Эскуэлу.
В один прекрасный день проснулся Эскуэл, и понял, что стал совсем другим. И может есть мало, и работать делать мелкую не хуже младшего брата, и жить может не только в барских покоях, но и в халупе. И стали ему поручать всякую работу, и простую и сложную, и быструю и долгую, а про Джет родители стали говорить - не выйдет из него толку, перестал он рости и развиваться, и мы больше не хотим с ним возится, не давайте ему работы, пусть перебивается от случая к случаю, еще не все про Эскуэла знают, так что и Джету пока работы хватит!

Вот такая сказка.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32676334
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Pavel
Душевная сказка, я плакаль! :-)
Прямо скажем, не всякий может так просто, легко и доходчиво пояснить, что есть как и почему. :-)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32676671
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShДа, хочется держать в кэше максимум возможного

- да уж - не стесняйтесь, - говорите сразу: "хочется держать в кэше" ВЕСЬ индекс и ВСЮ обрабатываемую таблицу ЦЕЛИКОМ!

Ибо - какая разница: удается нам "держать в кэше" 50% или 5% - все равно нужно будет выгружать одно и загружать другое ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32676790
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корневые и близкие к ним страницы индексов и системные таблицы в кэше удивительно полезны
Если конечно речь идёт о быстродействии а не экономии RAM. Я не зря спрашивал про целевую функцию
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32676884
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShКорневые и близкие к ним страницы индексов и системные таблицы в кэше удивительно полезны
- ок, убедили, сдаюсь: если у аццесса И С ЭТИМ - проблемы, то он в самом деле ни на что не годится ...

Alexey ShЯ не зря спрашивал про целевую функцию
- "целевую функцию" - для выбора между чем и чем?

Ок, предположим, есть задачка:
1. ключевое поле 4 байта (т.е. - типа Long),
2. к нему прилагаются еще несколько (минимум - одно, максимум - пять) полей по 4 байта
3. число записей - несколько миллионов ... возможно - несколько ДЕСЯТКОВ миллионов ...

Нужно:
4. как можно более эффективно ИЗВЛЕКАТЬ из таблицы запись - по значению ключевого поля
5. как можно более эффективно ПОДДЕРЖИВАТЬ эту таблицу, то есть - добавлять (по мере необходимости) в нее новые записи
6. в последствии - анализировать эту таблицу, то есть - вычислять по ней различные СТАТИСТИКИ ...

Какое решени будет ПРИНЦИПИАЛЬНО лучше, чем MS Access (с учетом - Windows, локальная, персональная машина)
???
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32676941
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем такой задаче нужен sql - файл постоянной структуры(запись фиксированной длины) - прямой доступ

т.е. ключ->смещение от начала файла

соответсвенно файлов 2 шт - данные и индекс

получается dbf
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677036
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardключ->смещение от начала файла
- "адресное пространство" для значений типа лонг - это 4 с хвостиком миллирда "ячеек" ... я ничего не путаю?
То есть Вы предлагаете производить "смещение от начала" в файле размером несколько ДЕСЯТКОВ гигабайт ... ага?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677168
ячейка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1)путаете
2) НЕ ага
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677193
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прямой доступ - этот термин не о чём не говорит ?
автор
Читает данные из открытого файла на диске в переменную.
Синтаксис
Get [#]номерФайла, [номерЗаписи], имяПеременной
Синтаксис инструкции Get содержит следующие элементы:
Элемент Описание
номерФайла Обязательный. Любой допустимый номер файла.
номерЗаписи Необязательный. Тип Variant (Long). Номер записи (для файлов в режиме Random) или номер байта (для файлов в режиме Binary), с которого следует начать чтение.
имяПеременной Обязательный. Допустимое имя переменной, в которую следует поместить считанные данные.
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677283
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, Вы написали:
авторключ->смещение от начала файла- я не понимаю, как я по 4-байтному ключу буду узнавать это самое смещение?
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677317
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSИзвините, Вы написали:
авторключ->смещение от начала файла- я не понимаю, как я по 4-байтному ключу буду узнавать это самое смещение?
при записи в файл данных определяется номер свободной записи ,пара номер записи+смещение записываюися в файл индексов
ну а способ хэширования Иван выберете самостоятельно
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677335
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть Вы мне предлагаете ... склепать "на коленке" индексный поиск ... и утверждаете, что я смогу "обставить" аццесс??? :-(
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677356
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSТо есть Вы мне предлагаете ... склепать "на коленке" индексный поиск ... и утверждаете, что я смогу "обставить" аццесс??? :-(
написав на C/Asm под свою узкую задачу несомненно обскачите
решение будет не расширяемое,зато максимально оптимизированное

у меня крутилься на старой работе не реляционный OLTP под FreeBsd - по времени выборки в десятки раз перекрывая все щупанные СУБД(но жёсткий аки панцирь).
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677360
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно можно обставить!

А какго рода обращения к табличке ожидаются?
от ответа на вопрос зависит правильный выбор "сорта" дерева для индекса
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677384
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShА какго рода обращения к табличке ожидаются?
от ответа на вопрос зависит правильный выбор "сорта" дерева для индекса
- дык:Ок, предположим, есть задачка ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677407
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнить всё :) ИМХО оставить в покое C++, смириться с потерей 7 байтов на запись и запрограммировать на аксессе. Для оптимизации запускать аксесс монопольно и подкрутить параметры Jet
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677411
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык Вам быстро читать и долго писать/быстро писать и долго читать
Alexey Sh и спросил об этом
автор
4. как можно более эффективно ИЗВЛЕКАТЬ из таблицы запись - по значению ключевого поля
5. как можно более эффективно ПОДДЕРЖИВАТЬ эту таблицу, то есть - добавлять (по мере необходимости) в нее новые записи

более эффективно - означает осознанный выбор баланса
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677488
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, давайте - для определенности - "быстро читать и долго писать".

// Я надеюсь, что "долго писать" не выльется в БЕСКОНЕЧНО долго ... ;-)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677502
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShВспомнить всё :) ИМХО оставить в покое C++, смириться с потерей 7 байтов на запись и запрограммировать на аксессе.
- дык! Рубка-то идет уже не за семь байтов, а за то, что индексы в аццессе, якобы, никуда не годятся!

Alexey ShДля оптимизации запускать аксесс монопольно и подкрутить параметры Jet
- а с этого места - пожалуйста, по-подробнее ...
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677534
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотреть в хелпе или MSDN

Initializing the Microsoft Jet 4.0 Database Engine Driver

P.S. Оптимизировать можно не только программу, но и затраты своих сил и времени. Вопрос с целевой функцией остаётся открытым :)
...
Рейтинг: 0 / 0
при добавлении поля в таблицу размер базы не увеличился!
    #32677617
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS Alexey ShВспомнить всё :) ИМХО оставить в покое C++, смириться с потерей 7 байтов на запись и запрограммировать на аксессе.
- дык! Рубка-то идет уже не за семь байтов, а за то, что индексы в аццессе, якобы, никуда не годятся!

Alexey ShДля оптимизации запускать аксесс монопольно и подкрутить параметры Jet
- а с этого места - пожалуйста, по-подробнее ...
1 я собственно постился о том,что мои широкие таблицы мёрли на 100000 записях,
и 10 миллионов записей я бы в mdb не хранил.
2 существует и клиент-серверная технология в рамках персонально/локальной идиомы
MySql под Windows для данной задачи (ИМНО) подойдёт полностью,а комбинация VmWare+Linux+MySql будет ещё и шустрой.
...
Рейтинг: 0 / 0
88 сообщений из 88, показаны все 4 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / при добавлении поля в таблицу размер базы не увеличился!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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