Имя: Пароль:
1C
 
Зачем нужна реструктуризация?
,
0 Deon
 
19.08.14
09:35
Расскажите, пожалуйста, какой профит?
К примеру, добавил я реквизит, таблица реструктуризируется. Но оно бы работало и без реструктуризации. В чем смысл?
1 Maxus43
 
19.08.14
09:41
>>Но оно бы работало и без реструктуризации.
почему? Это изменение структуры таблиц.
У тебя в СУБД такой колонки в табоице нет, грубо говоря. Вот при реструктуризации - сами таблицы и меняет
2 Deon
 
19.08.14
09:45
(1) Почему тогда нельзя просто добавить новую колонку в уже имеющуюся таблицу в БД? Зачем именно создавать новую, а потом в неё копировать все данные?
3 ДенисЧ
 
19.08.14
09:46
(2) руки кривые потому что.
4 shuhard
 
19.08.14
09:47
(2) можно
но без индексов учетная система загнётся
5 ДенисЧ
 
19.08.14
09:49
(4) А индексы тут каким боком??
6 Maxus43
 
19.08.14
09:50
(2) имхо просто сделано универсально... понять и простить (с)
7 Deon
 
19.08.14
09:50
(4) Индексы субд перестроит сама, я в неё верю.
8 Deon
 
19.08.14
09:51
Я могу предположить, что это сделано для дефрагментации, чтобы данные не были размазаны по файлу БД. Небольшой выигрыш в быстродействии.
Зачем может быть ещё?
9 shuhard
 
19.08.14
09:51
(7) а она в тебе не верит
10 Maxus43
 
19.08.14
09:52
(7) а кто скажет субд что это поле надо индексировать? в какой именно индекс (кластерны и др)?
11 Maxus43
 
19.08.14
09:53
Вся структура таблиц меняется при реструктуризации. Все мелочи и нюансы, про которые люди тупо забудут, а железка не догадается
12 Irbis
 
19.08.14
09:53
Я сильно отстал от жизни но помнится в заголовке файла писалось смещение в байтах или ещё в чём. Добавив колонку мы меняем это самое смещение и к каждому элементу должны приписать значение нового реквизита. Как тут без реструктуризации.
13 Deon
 
19.08.14
09:55
(11) Какая связь между копированием всех данных и изменением структуры таблиц?
14 shuhard
 
19.08.14
09:58
(13) в 100% флюдорастическом топике связей нет и быть не может

как платформа работала так и будет работать
15 Maxus43
 
19.08.14
09:58
(13) ты частный случай рассматриваешь, добавление простого реквизита. Случаи бывают разные. Копирование Нужных данных идёт. Не всегда они все нужные (случаи удаления реквизитов, изменение типа и прочее). Имхо.
Затраты на удаление записей например будут больше, чем копирование с последующим дроп тэйбл старой. Тут надо конечно смотреть
16 Maxus43
 
19.08.14
10:00
(12) отстал... на файловых никто не работает))
17 Deon
 
19.08.14
10:02
(15) Вот смотри. Если, допустим, ваять БД руками, то мы добавляем колоночки в таблицы, удаляем колоночки, меняем индексы как нам хочется. И СУБД там как-то что-то само с данными делает, и всё работает.
Но при такой работе для каких целей нам придется создать точную копию какой-либо таблицы и скопировать в неё все данные?
18 Maxus43
 
19.08.14
10:05
(17) я не разработчик платформы, но верю в МногоУважаемогоБорисаИСергеяНуралиева, не просто так они сделали именно эдак.
Или ты надеешся на мисте познать истину?
Моё имхо - в (6)
19 Asmody
 
19.08.14
10:06
(17) а БД в твоем случае наделена магическими способностями?
Добавление поля в таблицу — далеко не тривиальная задача, особенно, если таблица большая.
20 Maxus43
 
19.08.14
10:08
(19) добавление то ещё ладно... а вот удаление типа из составного - тут никакая СУБД не проймёт, там же 3-4 колонки на тип составной
21 Deon
 
19.08.14
10:08
(19) В чем же нетривиальность? Вошел я в SQL Server Management Studio и легко добавил 3-4 колонки в любую таблицу.
22 Asmody
 
19.08.14
10:08
Просто открой книжку по MSSQL и почитай как хранятся записи таблиц. И что происходит под капотом
23 Ndochp
 
19.08.14
10:08
(20) Сформулируем иначе, добавление поля (двух полей для ссылочного типа) в таблицу SQL средствами MSSQL занимает столько же времени?
24 Deon
 
19.08.14
10:10
(22) Т.е. суть таки в дефрагментации?
25 Maxus43
 
19.08.14
10:11
(24) скуль хранит данные постранично. каждая страница фиксированного размера... короче там это. нанотехнологии.
26 Deon
 
19.08.14
10:11
(25) Хорошо хорошо. И что? )
27 Maxus43
 
19.08.14
10:13
(26) и всё)
И чего к скули привязались? СУБД много разных поддерживается. Вариант с созданием новой таблицы - универсальный для любой СУБД
28 Deon
 
19.08.14
10:13
(27) А какие-то СУБД не позволяют тупо добавить колонку в уже имеющуюся таблицу с данными?
29 neckto
 
19.08.14
10:13
Имхо, суть в том, что добавление реквизита должно выполняться в транзакции и в любой момент должна быть возможность откатить ее. Фиксация транзакции - добавление записей в таблицу Config.
А теперь, если произошел сбой до добавления записи в Config, транзакция как бы сама собой откатывается. Config еще ничего не знает о новой таблице (копии исходной таблицы) - структура данных не нарушена.
30 Deon
 
19.08.14
10:15
(29) Да, это разумно
31 Maxus43
 
19.08.14
10:15
(28) давай более сложные случаи, что за примитив с добавлением реквизита?
32 Deon
 
19.08.14
10:16
(31) Удаление 3х колонок от реквизита составного типа. Суть-то не меняется
33 РенеДекарт
 
19.08.14
10:16
(24)>Я могу предположить, что это сделано для дефрагментации
- совершенно верно. Плюс просто лишний раз шерстит базу 1с на предмет структуры таблиц, мало ли что там поломается...
(22)>Просто открой книжку по MSSQL
- и каким боком "MSSQL" к файловой реструктуризации? А она там есть.
34 ptiz
 
19.08.14
10:16
В 1С решили, что надежнее пересоздать таблицу заново. Думаю - правильно сделали, иначе кривизна рук их программистов могла привести к тому, что при добавлении/удалении реквизитов что-нибудь плохое могло случиться с базой.
В 8.3 додумались до фоновой реструктуризации, но всё равно приходится всех выгонять для окончательного обновления.
35 tdm
 
19.08.14
10:16
(0) >>Но оно бы работало и без реструктуризации.

вспоминаю времена 7.7 помню умельцев которые базу обновляли копированием туда нового *.md - "а чо оно же работает)"

имхо суть в том что наша 1с платформа анализирует ту структуру данных что имеем и ту что хотим получить ну и принимает решение за нас...на эту тему еще можно вспомнить что у нас например явного описания типа переменных нет и т.д. и т.п. - 1с многое берет на себя))потому и 1с-ников за программистов не считают)
36 РенеДекарт
 
19.08.14
10:17
(31) во времена еще не совсем улета 1с в дебри Такси она сама говорила - реструктуризация нужна лишь для упорядычевания расположения талиц. Все.
37 Deon
 
19.08.14
10:19
(36) Жаль не сделают эту шляпу опциональной. База 100Гб реструктуризируется сутки. Утомила.
38 РенеДекарт
 
19.08.14
10:19
(35)>имхо суть в том что наша 1с платформа анализирует ту структуру данных что имеем и ту что хотим получить ну и принимает решение за нас
- это как все работает, объясните?
>явного описания типа переменных нет
- потому что хранится все не так явно.
>1с многое берет на себя
- много в платформе сделано "по умолчанию", причем замалчивание настолько секретное, что ЦРУ позавидует. Отсюда и 90% проблем и ошибок в 1С.
39 Asmody
 
19.08.14
10:20
(21) а самолет тоже просто работает — сел и полетел
40 РенеДекарт
 
19.08.14
10:20
(37) галочку отключите
41 Deon
 
19.08.14
10:21
(40) У меня переход БП с 2.0 на 3.0.
42 РенеДекарт
 
19.08.14
10:21
(39) вообще, все базы так и работают - сел и полетел. И только 1с не может добавить "руками программиста" колонку в таблицу БД.
43 РенеДекарт
 
19.08.14
10:22
(41) так это опять прихоть/принудительно-добровольно 1С - все, как и с платформой.
44 Deon
 
19.08.14
10:22
(39) Паспортный контроль утомляет так же, как и реструктуризация. Но эту тему я подниму чуть позже.
45 РенеДекарт
 
19.08.14
10:23
*90% платформенных ошибок
46 tdm
 
19.08.14
10:24
(38) - это как все работает, объясните?
- много в платформе сделано "по умолчанию", причем замалчивание настолько секретное, что ЦРУ позавидует.
я в 1с не работаю и в "секреты" не посвящен))...а было бы интересно кстати в дебри залезть)но тут имхо мы где-то на грани лицензионнного соглашения балансируем)
47 РенеДекарт
 
19.08.14
10:24
(41)> У меня переход БП с 2.0 на 3.0.
- вы смелый. По-моему, проблема реструктуризации - далеко не самая главная будет у вас в ближайшие полгода. Даже не в сотне.
48 РенеДекарт
 
19.08.14
10:25
(46) потому и закрыто, что сами плохо понимают.
49 РенеДекарт
 
19.08.14
10:27
Поэтому начинают объяснять ".. вот SQL работает так.. блокировки... оптимизатор..."
Ты объясни, как работает 1С В КАЖДОМ КОНКРЕТНОМ случае, и что ожидать на выходе.
А про SQL можно у Микрософт все прочитать.
50 ДенисЧ
 
19.08.14
10:28
(49) У тебя с этим проблемы? Ты хочешь об этом поговорить?
51 РенеДекарт
 
19.08.14
10:28
(50) ты можешь?
52 Deon
 
19.08.14
10:30
(47) Не первый раз, сдюжим. Ещё б реструктуризация так не тормозила, было б куда веселее.
53 Maxus43
 
19.08.14
10:30
тема слилась. Пришёл ненавистник своего рабочего инструмента (1с), своей профессии и всеговсего что связано с нуралиевыми
54 ДенисЧ
 
19.08.14
10:31
(51) Я могу объяснить любое поведение 1с, которое меня затрагивает.
Но вот _тебе_ я ничего объяснять не буду.
55 РенеДекарт
 
19.08.14
10:32
тема слилась давно - лет 10 назад, когда в 1С пришли "оптимисты, шапкозакидатели, все-ни-по-чем, легко-решается-в-1С"
56 РенеДекарт
 
19.08.14
10:33
(54)>Я могу объяснить любое поведение 1с
- конечно-конечно.
Вот так: "1С так работает". И троектратное "да здравствует!" в конце.
Спасибо, все все поняли.
57 РенеДекарт
 
19.08.14
10:35
(54)>Но вот _тебе_
- ты с _собой_ сначала искренне побеседуй, а потом будешь выделять подчеркиванием остальных.
58 ДенисЧ
 
19.08.14
10:35
(56) намекаю. У меня дядя на бисерной фабрике не работает.
И на апельсиновой плантации тоже.
59 ptiz
 
19.08.14
10:41
(37) Не должна так долго база реструктуризироваться. Какой регистр так долго обрабатывается?
60 rendez-vous
 
19.08.14
10:41
(2) Для надежности.
61 РенеДекарт
 
19.08.14
10:45
(59) реструктуризация - самая длительная операция в ТИИ.
Если данных много - будет долго.
62 ptiz
 
19.08.14
10:49
(61) Но не сутки же на базе всего в 100 гб !
63 РенеДекарт
 
19.08.14
11:09
(62) если без ошибок - то почему бы и нет.
Опять же - никто не в силах объяснить (даже если сильно-сильно надуть щеки и сделать умный вид, написав "я знаю"), что там происходит, и почему где-то быстро, а тут - долго.
64 Deon
 
19.08.14
12:08
(59) Долго документы и регистр Хозрасчетный. Может и не сутки, может часов 10.
65 Deon
 
19.08.14
12:10
(60) А в чем ненадежность в (2)?
66 Lama12
 
19.08.14
12:21
(0) Могу предположить что простое добавление реквизита реализовано в корп версии платформы. Там можно "на лету" менять структуру данных.
А реструктуризация для нищих :)
67 VladZ
 
19.08.14
12:25
(66) Ась?
68 tdm
 
19.08.14
12:27
(66) можно подробнее ?
69 ДенисЧ
 
19.08.14
12:29
(66) На лету нельзя. Можно в фоне, с кратковременным выгоном зверей в конце, на финальной стадии
70 rendez-vous
 
19.08.14
12:36
(65) Библиотека XBase нечего не знает про транзакции. Такую реструктуризацию сделали для файлового варианта. А потом она (реструктуризация) в том же виде перекочевала на клиент-серверный вариант. Где она конечно же не нужна. Тут автор прав.
71 МихаилМ
 
19.08.14
13:27
реструктуризацию (пересоздание таблиц с копированием) можно отключить с помощью ddl триггеров и подменой таблиц на пустые.
72 Lama12
 
19.08.14
13:30
(69) Вот ведь блин. А тут написано http://v8.1c.ru/news/newsAbout.jsp?id=9320 фоновое обновление...
Я уж обрадовался.
73 Deon
 
19.08.14
13:45
(71) Подменять таблицы всей базы как-то шибко геморно
74 МихаилМ
 
19.08.14
14:02
(73)

естественно в триггере.