|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Очень часто я слышу вопросы об оптимизации базы данных TecDoc Transbase в MySQL, мол почему так много весит база сконвертировання в MySQL (TecDoc-14Гб=MySQL-50Гб), а как там обстоит дело с индексами, конвертируются ли они при помощи вашего скрипта. Сразу отмечу: Transbase (на которой стоит TecDoc) это не MySQL, и способ организации данных, индексирование у него отличается от способа хранения данных в MySQL. А отсюда и все различия. Второе, это то что TecDoc это не такая себе "серебряная пуля" или "панацея от всех болезней", его тоже разрабатывают люди, и в нем тоже есть ошибки: ошибки в кросах, ошибки в программе, ошибки в базе. ТекДок не универсален (как и все в этом сером мире :) ), многое в нем заложено на будущее, многое используется не очень редко или вообще не используется. А посему база ТекДок в том виде, в котором она есть и конвертируется требует оптимизации под задачи клиента (Можно конечно заюзать базу так как она есть, купить выделенный сервер, залить 50-ти гиговую базу, написать свою оболочку и радоватся жизни, но смысл? ) Перед использованием базы данных ТекДок в своем приложении (инет магазине) клиент а соответственно разработчик, которого он нанимает, должны задать себе ряд вопросов: 1) что собой будет представлять проект: интернет магазин, оф-лайновый стол заказов, каталог запчастей 2) для кого проект предназначен (категория потребителей: авто-мастера, розничные покупатели, оптовики, менеджеры продаж....) 3) определение границ проекта 4) График выполнения работ 5) ВАЖНО! БЮДЖЕТ! (это пожалуй один из самых важных вопросов) 6) Планы на будущее (т.е планируется развитие проекта, или нет) А коль тема у нас оптимизация, расмотрим пример на таблице артикулов TOF_ARTICLES В "сыром" виде эта таблица занимает 736,127Кб (в МБ переведете сами) Простой поиск по аритикулу в этой "сырой" таблице выполняется достаточно долго как для веб-приложения - 19.20 сек. Как видим, даже для локальной машини такие показатели не подходят. Давайте попытаемся немного оптимизировать эту таблицу. Исходя из ее структуры, видим, что в поле ART_ARTICLE_NR хранятся сами артикули, и их мы будем искать очень часто, а значит это поле нужно сделать индексным. Еще у нас есть поле ART_CTM - выясняем, что поле это не используется ТекДоком и заложено на будущее для оптимизации поиска или как бытует мнение на форумах для оптимизации поиска (возможно). Удаляем это поле из базы данных. После этих нескольких нехитрых действий, получаем следующую картину Как видим, база данных с индексами уже занимает 129,366 Кб, что практически на 600 мб меньше. И это только после 2-х простых действий. Соответственно и запрос выполняется намного быстрее, сотые доли секунды Картинки можно посмотреть здесь Вот, так вот на примере только одной таблицы TOF_ARTICLES мы увидели как нужно "доводить до ума" нашу базу TecDoc ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2010, 15:12 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Exceptional, без лишних слов. но подскажите пожалуйста если можно наити применение таблице авторTOF_PRICE, насколько я понимаю, ето зашифрованные цены изделии, но может у кого-то наидутся другие идеи по этому поводу, т. к. мои региональный дилер текдок не может дать никаких деталии ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2010, 21:20 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Bacalov, Во первых таблицы Код: plaintext
Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Какая суть этой таблице, мне сейчас трудно сказать, но есть несколько предположений: - ТекДок это только справочник и они (насколько я знаю) на данный момент не занимаются продажей запчастей, хотя наверное заложили эти возможности в свою программу - те кто "вскрывают" ТекДок скорей всего не используют даную таблицу, потому что в том виде, в котором она представлена в текдоке она не подойдет для большинства задач реального бизнеса по продажи автозапчастей: для магазина нам интересно будет держать цену запчасти из прайсов нескольких производителей + свою, + возможные наценки, а это уже две и больш таблиц, а не одна, с ценами, как сейчас сделано в текдоке Но это только мои предположения, буду копать в этом направлении, как нарою что то интересненькое сразу отпишусь ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2010, 01:39 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
ILoveTecDoc А коль тема у нас оптимизация, расмотрим пример на таблице артикулов TOF_ARTICLES В "сыром" виде эта таблица занимает 736,127Кб (в МБ переведете сами) Не самая большая таблица. Скажу так, сделать из текдока конфетку с маленьким размером не получится в любом случае. Основные моменты для оптимизации размера базы - это поля _CTM. Если надобность в них есть, то стоит подумать над заменой таких полей на более компактный вариант. Еще одно узкое место, это картинки. Также следует обратить внимание на таблицы TOF_DESIGNATIONS, TOF_TEXT И на последок оптимизация самих запросов, так как в текдоке они слишком громоздки и не всегда быстры. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2010, 15:53 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
elisayILoveTecDoc А коль тема у нас оптимизация, расмотрим пример на таблице артикулов TOF_ARTICLES В "сыром" виде эта таблица занимает 736,127Кб (в МБ переведете сами) Не самая большая таблица. Да, не самая, но часто используемая, поскольку в ней хранятся артикулы, да и нужно же было взять какую то таблицу в качестве примера :) Скажу так, сделать из текдока конфетку с маленьким размером не получится в любом случае. 100% к примеру EWA Mercedes занимает порядка 30 Гб дискового пространства, но суть заключается наверное в кросах а не хранении в базе неоптимизированного "муссора" Основные моменты для оптимизации размера базы - это поля _CTM. Если надобность в них есть, то стоит подумать над заменой таких полей на более компактный вариант. в 90% случаев (исходя из моего опыта) эти поля не были востребованы Еще одно узкое место, это картинки. Также следует обратить внимание на таблицы TOF_DESIGNATIONS, TOF_TEXT С текстовыми таблицами можно сделать так: удалить все тексты и записи в которых LNG_ID <> RUSSIAN или LNG_ID <> German или LNG_ID <> ENGLISH (заменить на соответствующие цифры) И на последок оптимизация самих запросов, так как в текдоке они слишком громоздки и не всегда быстры. от себя еще добавлю, что можно посмотреть в сторону memchased На нем работает LiveJournal как видим успешно и достаточно быстро ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2010, 22:09 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
ILoveTecDoc, да. вы правы насщет названия. сам предпологал что начали вливать цены т. к. они продаю также и "TecDoc WEB SHOP". а вливать цены в одну таблицу - думаю что можно, основав поиск по номеру поставщика афтер макет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2010, 14:55 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
а сколько будет весить база в MSSQL знаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 18:12 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
BacalovExceptional, без лишних слов. но подскажите пожалуйста если можно наити применение таблице авторTOF_PRICE, насколько я понимаю, ето зашифрованные цены изделии, но может у кого-то наидутся другие идеи по этому поводу, т. к. мои региональный дилер текдок не может дать никаких деталии Эти прайсы сильно используются в Германиии. Узнал я про это (и не только только) когда германский клиент заказывал выгрузку данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2010, 10:21 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
А где можно купить данные из ТекДока за 2010 год или хотя бы посмотреть сырые наработки как их оттуда в тот же Access перегнать? Насчет таблицы цен, то для большинства задач одной таблицы с ценами будет маловато по этому с интересом бы посмотрел как они туда цены будут вливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 17:59 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Миколай, Купить данные из ТекДока за квартал 1 2010 год можно здесь здесь а за квартал 4 2009 здесь Также можно скачать пример данных отсюда ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 18:30 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
thedesа сколько будет весить база в MSSQL знаете? 30 Гб - квартал 1 2009 год ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 18:31 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
автор ILoveTecDoc Соответственно и запрос выполняется намного быстрее, сотые доли секунды А сколько выполняться будет запрос по неполному номеру при LIKE %НЕПОЛНЫЙ_НОМЕР%? Те же 19 секунд? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2010, 13:58 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
МиколайА где можно купить данные из ТекДока за 2010 год или хотя бы посмотреть сырые наработки как их оттуда в тот же Access перегнать? Насчет таблицы цен, то для большинства задач одной таблицы с ценами будет маловато по этому с интересом бы посмотрел как они туда цены будут вливать. Наша компания предлагает за 10% реферальских (вкладка "Партнерская программа") типовое решение магазина запчастей с текдоком http://www.mstarproject.com/?action=tecdoc_mysql_site Примеры выполненных проектов в портфолио. Как вариант, если есть заказ, но не можете осилить полностью разработку. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2011, 17:29 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Кого интересует струкрута базы данных TecDoc 2_2011, можете скачать ее для ознакомления Кому нужна база полностью, пишите в личку или стучите в асю 199195309 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2011, 19:18 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
ILoveTecDoc, Да занимаюсь TecDoc вплотную обращайтесь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2011, 19:59 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
ILoveTecDocПростой поиск по аритикулу в этой "сырой" таблице выполняется достаточно долго как для веб-приложения - 19.20 сек. Как видим, даже для локальной машини такие показатели не подходят. Очень спорный момент! В общем-то даже самый не продвинутый программист понимает что при поиске нужны индексы и тем не менее если их нет, то как TecDOC без них работает?! А все оказывается очень просто - искать надо не по ART_ARTICLE_NR да и вообще искать надо совершенно не в этой таблице. Для поисков предназначена таблица TECDOC_TOF_ART_LOOKUP и поле ARL_SEARCH_NUMBER. Там все индексы созданы и присутствуют! А уже из этой таблицы получаем номер нужной нам детали. Мало того. Если вы подумаете что, нафик такие сложности и решите не заморачиваться насчет таблицы TECDOC_TOF_ART_LOOKUP и вы создадите индекс в таблице TOF_ARTICLES по полю ARL_SEARCH_NUMBER, то это все равно не позволит вам всегда найти нужную деталь по ее номеру! Если, при поиске, номер детали вы укажете например без пробелов 123456789, а в таблице он хранится как 123 456 789 (или через точки, тире или все вместе взятое), то никакой индекс и никакие танцы с %LIKE% не помогут. Нужно приводить все к единому стандарту. В таблице TECDOC_TOF_ART_LOOKUP в поле ARL_SEARCH_NUMBER все номера указаны без пробелов, проводя по этому полю поиск и найдя нужную запись можно получить то, как этот номер должен выглядеть из поля ARL_DISPLAY_NR - там номер будет со всеми пробелами, точками, тире и прочим, а в поле ARL_ART_ID - как раз код нашей искомой детали из таблицы TOF_ARTICLES. ILoveTecDocЕще у нас есть поле ART_CTM - выясняем, что поле это не используется ТекДоком и заложено на будущее для оптимизации поиска или как бытует мнение на форумах для оптимизации поиска (возможно). Удаляем это поле из базы данных. Поля *_CTM используются во всех запросах TecDOC. Причем очень и очень интенсивно! Вот один из самых простых и коротких запросов TecDOC к своей БД: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
в пятой строке, восьмой, десятой строчках : ..._ctm subrange(186 CAST INTEGER)=1... - это и есть обращение к _CTM полю. Не многовато ли "ошибок" делают программеры TecDOC!!! Не думаю что программеры TecDOC "ошибаются" или "недоглядывают" практически в каждом запросе. Надо разбираться. Давайте попробуем! ;) Функция subrange получает из поля указанного перед ней символ в указанной позиции. В данном случае символ стоящий в строке на 186 месте. CAST INTEGER - это просто приведение к типу INTEGER. То есть не слишком углубляясь в смысл запроса в целом можно сказать что из таблицы необходимо получить только те строки у которых в поле *_CTM на 186 месте стоит число 1. Так вот в результате множества экспериментов убирая и возвращая обратно вызовы subrange(186 CAST INTEGER)=1 из разных запросов я с уверенностью могу сказать что результаты выполнения запросов в большом количестве случаев ОЧЕНЬ разные! Так что будьте аккуратны с разными "оптимизациями" своих баз. Отсекать лишнее можно только после доооооолгого обдумывания! :) P.S. Кстати текдоковцы выжимают из своего движка практически невозможное! :) Очень долго не мог понять почему после выгрузки данных в моей БД деталь не находится (точнее ее просто не существует) а если искать через программу TecDOC - она есть! :) Всю голову себе сломал! Оказалась очень хитрая фишка! :) Например есть деталь - Деталь-1. У нее есть производитель - Производитель-1. Эта деталь с ID производителя хранится в таблице TOF_ARTICLES. А мы ищем Деталь-2. Она полный аналог Детали-1 со всеми ее характеристиками и прочим, но у нее ДРУГОЙ ПРОИЗВОДИТЕЛЬ. Так вот этой детали в таблице TOF_ARTICLES нет. Ее физически там нет! А показывается она таким образом: 1. Ищем деталь по артикулу производителя № 2 в таблице TECDOC_TOF_ART_LOOKUP 2. Поле ARL_ART_ID ссылается на Деталь-1 3. ВНИМАНИЕ! А вот поле ARL_BRA_ID - показывает под каким соусом (то есть под каким производителем) эту деталь отдать. В итоге: одна запись в БД олицетворяет 2 детали! ))))) P.S.S А по поводу быстродействия - я сменил движок БД и ПОЛНОСТЬЮ переосмыслил структуру данных. Так что если сейчас у меня запрос LIKE на 28 000 000 записей работает больше 500 милисекунд - я расстраиваюсь! Но это редкость! )))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2011, 09:41 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
BacalovExceptional, без лишних слов. но подскажите пожалуйста если можно наити применение таблице авторTOF_PRICE, насколько я понимаю, ето зашифрованные цены изделии, но может у кого-то наидутся другие идеи по этому поводу, т. к. мои региональный дилер текдок не может дать никаких деталии TecDOC может выступать в качестве не только справочника, а так же стола заказов. То есть вы осуществляете подбор детали в программе, и тут же не отходя от кассы можете формировать "корзину" заказа по аналогии с интернет магазином. После того как клиент сказал "Все! Мне больше ничего не надо!" вы должны сказать сколько стоит его заказ - правильно? Вот тут-то как раз и задействуется эта табличка. Потом эту "корзину" можете отправить своему поставщику для подвоза вам нужных деталей. (Но в России ни одного не встречал который этим реально пользуется!) Хотя было бы неплохо привязать 1С к этому делу! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2011, 10:01 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Убедительная просьба помочь. Подключаю TECDOC к сайту. Есть ощущение что получение дерева товарных групп делаю не правильно, так как на Denwere этот процесс занимает от 5 секунд, а на хостинге вообще валится в 504 Gateway Timeout. Примечание: Из базы удалены все записи, CTM в нужной позиции не соответствует России, и так же удалены поля CTM за ненадобностью. Помогите оптимизировать или поделитесь своим запросом, если не жалко. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2011, 13:37 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
e.s.l, ну так проверь на EPXLAINE и добавь нужные индексы ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2011, 13:41 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Мих, TOF_LINK_LA_TYP возвращает 4615 записей "Using index; Using temporary; Using filesort", но не пойму по какому полю делать индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2011, 13:47 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Нужно было сделать индекс на STR_ID_PARENT таблицы TOF_SEARCH_TREE :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2011, 20:00 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Я хочу заказать результатов по группам. Пожалуйста, скажите мне, что таблицы должны допросить tecdocu. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2011, 20:19 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Таблицы в чем используете Innodb ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2012, 08:49 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Подниму старую тему. Я пытаюсь скачать некоторые данные в 1С. Все бы ничего, почти все нашел, но надо получить данные по диаметру цилиндра, ход поршня, степень сжатия. Такие поля есть в таблице Engines, но запросом мне выдает везде 0. Если смотреть из самого тек дока - данные есть. Предположение, что данные в другой таблице пока не подтвердилось - не могу найти ни одной подходящей таблицы, просмотрел все со ссылками на таблицу двигателей. Может кто-то знает в чем фишка? Откуда и как вытаскивать эти данные? База 02.2013. Помогите кто разбирается в этом! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2013, 22:03 |
|
Несколько слов об оптимизации БД TecDoc Transbase, сконвертированной в MySQL
|
|||
---|---|---|---|
#18+
Всем спасибо, что навели на мысль, хоть и не ответили! Так же отдельное спасибо за подробное описание полей с указанием типов - помогло понять проблему! Короче, вышел из ситуации так: (tof_ENGINES.ENG_DRILLING CAST varchar(10)) AS DRILLING Возвращает строку! Реально возвращает. Потом преобразуешь уже в 1С как хочешь. PS. Пробовал умножить на 1000 и преобразовать в интеджер - не вышло. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2013, 22:31 |
|
|
start [/forum/topic.php?fid=29&fpage=7&tid=1525909]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
102ms |
get tp. blocked users: |
2ms |
others: | 290ms |
total: | 479ms |
0 / 0 |