|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Добрых времен, специалисты! Нужен совет по логике? (пните куда рыть) Дано: Delphi 2007, FireBird 2.1 (+EhLib, +Fib, + сторонние компоненты) Все было разработано, все работало как надо, но в один миг СИЛЬНО увеличилась нагрузка (в сотни раз, фирма развивается и на такие нагрузки, я просто не расчитывал) Логика значит сейчас такая: Коннект к сторонней базе. Получаю в клиента ~3000 записи. Беру первую запись. Делаю Select к своей базе проверяю по 3 значениям (индексы, план все вроде в порядке, запрос летит шустро, НО ИХ МНОГО). Если есть такая запись - забыли. Иначе полез по таблицам, добавляю в справочники инфу. Добавляю новую запись. Записал. Следующую запись... и по кругу, и так до конца... (ну там за одно еще справочники проверяются, но это не критично.) Естественно на сервере вскипает процессор под 100% пиком. Все хорошо пока сторонних баз было 3-5. Но когда их стало под 200. Из каждой выдернуть все записи и на каждую запись кинуть Select в мою базу. Тут процессор чето приуныл. Тяну данные из 10 баз одновременно. Процессор в шоке. Полный цикл проходит за 40 минут, без ошибок и т.п.. Но процессор в это время "жужжит" и не дает работать бухгалтерии, от слова совсем. Такой импорт делается 4-5 раз в день, сами понимаете, бухгалтерии времени на работу не остается. Лирика кончилась. Проект буду переделывать. Теперь вопрос: Вот чтоб не убивать сервер тупыми запросами select, можно ли как-то выдернуть кусок таблицы "от даты, до даты(которые известны при старте импорта" в память клиента и уже у него проводить сверку по конкретным параметрам? Куда копать MemtableEh? Желательно у клиента в памяти создать "нечто" к чему можно обращаться Query, т.е. виртуальную (БД) табличку. Куда рыть? (Если вариант совсем глупый, пинайте ногами. За сумбурность извините, не спал, проект горит. Побеспокоил, потому, что времени на переработку НЕТ. Все перечитать не могу... пните что читать, куда думать? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, сначала объясни откуда взялись 200 БД и почему их нельзя слить в одну. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:43 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, что мешает импортировать записи только от штампа времени последнего импорта? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, сначала объясни откуда взялись 200 БД и почему их нельзя слить в одну. 1. БД разные. 1С. Самописные Firebird. Текстовые файлы банковских выписок. Вот так вот, а сливаются в одну УЖЕ в моей базе. Собственно она для этого и нужна. 2. Почему приходится перепроверять фигову тучу записей? Потому, что какой-нибудь бухгалтер нафигачит проводок задним числом... и пипец... какой-то оператор, перебьет к чертям вчерашнюю проводку. Поэтому каждую запись получил и лезу в свою базу проверять есть такая или подобная? (если есть подобная, то еще алгоритм "а не измененная ли это?") Ну суть вопроса хочу уйти от сотен тысяч запросов к серверу. Получить кусок таблицы на клиента, там разобраться и уже с чистой совестью писать в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
1) Добавь в свои таблицы поле LAST_CHANGE: TIMESTAMP и на триггере BEFORE UPDATE OR INSERT заполняй его current_timestamp Вот тебе и "можно ли как-то выдернуть кусок таблицы "от даты, до даты(которые известны при старте импорта" Вместо сравнения "на клиенте" можешь делать сравнение сразу на основном сервере БД ( execute statement с подключением к внешней БД и вычитывание по времени иззменения в GTT ) - может стать лучше, а может и зуже, наверное особенно на супере. 2) а вообще тебе надо делать репликацию из "фильиальных" БД в master database https://habrahabr.ru/post/117917/ http://www.codenet.ru/db/interbase/Interbase-Replications/ 18299570 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogКуда копать MemtableEh? ClientDataSet? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
rdb_devdgdog, что мешает импортировать записи только от штампа времени последнего импорта? Старые записи могут добавиться, измениться (бухгалтерии косячят. 1С откатывается в БэкАп...) Из вводных данных имею только конкретные даты "от... и до..." Остальное я и разбираю. Но слишком много обращений к бд. Они плевые, но их много. Мнеб вот это "От... и до..." как-то на клиента утянуть и там уже крутить - вертеть и к базе лишний раз не лезть. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog1. БД разные. 1С. Самописные Firebird. Текстовые файлы банковских выписок. Вот так вот, а сливаются в одну УЖЕ в моей базе. Собственно она для этого и нужна. 2. Почему приходится перепроверять фигову тучу записей? Потому, что какой-нибудь бухгалтер нафигачит проводок задним числом... и пипец... какой-то оператор, перебьет к чертям вчерашнюю проводку. Поэтому каждую запись получил и лезу в свою базу проверять есть такая или подобная? (если есть подобная, то еще алгоритм "а не измененная ли это?") тогда похоже тебе надо не централизовывать это на сервере, а наоборот распараллеливать. Пусть на каждой из "200 БД" запускается служба подготовки к выгрузке. На сервере формулируешь условия/требования к выгрузке, и на каждой из 200 БД подготавливается пакет, который уже потом отправляется основнму серверу ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, открой для себя репликацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:54 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис, ага, репликацию баз FB с текстовыми файлами.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, с трудом представляю сервак который потянет 200 БД одновременно. Ну 10 ещё куда ни шло. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:56 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, ну как вариант записать всё полученное в промежуточную табличку в своей базе и в ХП все скопом обработай ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, я так понял что он сначала текстовые файлы в отдельные БД на firebird сливает, а потом из этих БД в центральную ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 11:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogДелаю Select к своей базе проверяю по 3 значениям (индексы, план все вроде в порядке, запрос летит шустро, НО ИХ МНОГО). Покажи код, которым это делаешь и план запроса. dgdogможно ли как-то выдернуть кусок таблицы "от даты, до даты(которые известны при старте импорта" в память клиента и уже у него проводить сверку по конкретным параметрам? Можно, но не нужно. Слияние двух отсортированных потоков делается проще и работает быстрее. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:02 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, я так понял что он сначала текстовые файлы в отдельные БД на firebird сливает, а потом из этих БД в центральную ещё. Нет. Цепляюсь например (клиентом) к 10 1С ком соединением. Получаю из каждой кусок данных от ДАТЫ до ДАТЫ. Потом клиент берет каждую запись и лезет в мою базу с проверкой есть такая или нет? Если есть - забыли. Если нет - добавить. (Это грубо там логика в клиенте сверка всяких параметров полученной записи и записей в БД... я такую логику в самом Firebird не осилю.) (Базы разные от 1С и до папки с файлами платежных поручейний из банков.) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денися так понял что он сначала текстовые файлы в отдельные БД на firebird сливает хорошо если так, у меня сложилось впечатление - что нет. Хотя я не вполне автора понимаю. ну вот на этом шаге ему и надо прописывать всю инфу, определяющую отсылать их на центральный сервер или нет. эта инфа должна быть уже в промежуточной базе. PS. За сумбурность извините, не спал, проект горит Таки пойти и лечь спать. Альтернатива - перестанешь понимать собственные деййствия и наворотишь второпях такого - что придется потом месяц разгребать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЦепляюсь например (клиентом) к 10 1С ком соединением. Получаю из каждой кусок данных от ДАТЫ до ДАТЫ. Потом клиент берет каждую запись и лезет в мою базу с проверкой есть такая или нет? Если не "цепляться к 1С", а получать от них штатные файлы изменений, генерируемые !С репликацией, то можно обойтись без проверки существования записи в БД. А так ты, конечно, раз за разом молотишь тонны одного и того же бесполезного мусора. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Получаю из каждой кусок данных от ДАТЫ до ДАТЫ. Потом клиент берет каждую запись и лезет в мою базу с проверкой есть такая или нет? Если есть - забыли. Если нет - добавить. я бы сначала сливал все данные от ДАТЫ до ДАТЫ как есть в GTT уровня транзакции, а потом в ХП раскладывал всё по полочкам и всё это в одной транзакции. Это будет быстрее чем тягать все данные из обоих БД в клиента и там сравнивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНет. Цепляюсь например (клиентом) к 10 1С ком соединением. Получаю из каждой кусок данных от ДАТЫ до ДАТЫ. Потом клиент берет каждую запись и лезет в мою базу с проверкой есть такая или нет? готовь на сервере пакет с требованием к репликации. те самые "от ДАТЫ до ДАТЫ" и любые данные требуемые любому из клиентов для полной "проверкой есть такая или нет" такой вот мега-файл, достаточный для любого клиента из 200 для создания пакета репликации 200 клиентов этот файл скачивают, распаковывают и начинают каждый локально у себя сверять что нужно отослать в центр потом на каждом клиенте в отдельности - не трогая сервер вообще - формируется выжимка, пакет который надо выгрузить на сервер. Также в виде файла. и только потом готовый пакеты с клиентов раззиповываютс я и втягиваются в основную БД. распараллеливай работу, всё, централизовать поздно, основной сервер уже захлебнулся. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис, ....это если сервер классик. что-то мне страшно за такую работу прямо на сервере. если клиент бешено тормозит - это проблемы клиента. но если у него весь сервер ляжет и все работающие с ним программы начнут тормозить в такой момент.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Пусть на каждой из "200 БД" запускается служба подготовки к выгрузке. (базы разные от 1С, Firebird, ... и до простых текстовых файлов экспорта из клиентбанков) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, с трудом представляю сервак который потянет 200 БД одновременно. Ну 10 ещё куда ни шло. Сервак тянет 1 БД Firebird Остальные базы лежат где-как и в локальной сети и на удаленках... я из них только данные тяну на клиента, а уже потом фигачу в БД (плохо я задачу объясняю, завтра высплюсь мож легче будет ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, я как бы склонен к тому что ТС не идиот чтобы использовать супер в 2.1 для многопользовательского доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПроцессор в шоке. Полный цикл проходит за 40 минут Показывай код. И назови архитектуру сервера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис, система строилась когда фирма была мааааленькая и удаленных БД было 3-5 штук а перевели ли с тех пор на класика - хз ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, и какая связь между количеством БД 1С'овских и архитектурой? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денися как бы склонен к тому что ТС не идиот чтобы использовать супер в 2.1 Я практически уверен в обратном. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:23 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПусть на каждой из "200 БД" запускается служба подготовки к выгрузке. (базы разные от 1С, Firebird, ... и до простых текстовых файлов экспорта из клиентбанков) вот и делай под каждый источник данных - свою локальную службу подготовки к репликации, заточенную именно на его формат. грубо говоря, берешь своего клиента, вырезаешь из него все источники, кроме одного нужного на конкретном месте, и делешь программу выгрузки данных для Ивановой Марьи Владимировны. Остальные базы лежат где-как и в локальной сети и на удаленках... я из них только данные тяну на клиента, а уже потом фигачу в БД БД сдохла, забудь. Эту работу можно теперь делать только на других машинах. Либо на самих источниках данных по мега-файлу запроса к репликации - НЕ ТРОГАЯ ОСНОВНОЙ СЕРВЕР вообще Либо создавать второй сервер, на него выгружать полную копию основной БД - см. nbackup - и там молотить твои 40 минут опять таки НЕ ТРОГАЯ ОСНОВНОЙ СЕРВЕР, сохраняе изменения в файл-пакет, и уже готовую выжимку не требующую больше проверок - отсялать на основной. Во втором случае, однако, потенциально будут две проблемы: 1) пока твои 40 минут шли бухи что-то сделали с основной БД и пакет подготовленный по слепку 40-минутной давности уже не подходит 1 в 1, нужно его обрабатывтаь напильником. Может такое быть или нет? Не знаю, только ты знаешь с какими данными кто работает в твоей системе. 2) сегодня у тебя 200 баз, а завтра 20 000 - и второй сервер так же захлебнётся. То есть второй вариант - это быстро заткнуть дырку и отдышаться. А в конечном итоге тебе все равно придется работу распараллеливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:25 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Hello, Симонов Денис! You wrote on 25 июля 2016 г. 12:24:36: Симонов Денис> я как бы склонен к тому что ТС не идиотты склонен недооценивать влияние мировой энтропии на всеобщую идиотию человеческих индивидуумов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:26 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Дениси какая связь между количеством БД 1С'овских и архитектурой? прямой нету но примерно в такой же пропорции увеличивались и остальные рабочие места - в том числе работающие с его ФБ-самопиской. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
[quot Dimitry Sibiryakov] dgdogДелаю Select к своей базе проверяю по 3 значениям (индексы, план все вроде в порядке, запрос летит шустро, НО ИХ МНОГО). Покажи код, которым это делаешь и план запроса. Клиент формирует Код: pascal 1.
отсылает авторPlan PLAN (SDELKA INDEX (SDELKA_IDX2)) Adapted Plan PLAN (SDELKA INDEX (SDELKA_IDX2)) ------ Performance info ------ Prepare time = 15ms Execute time = 0ms Current memory = 1 846 464 Max memory = 3 084 544 Memory buffers = 75 Reads from disk to cache = 3 Writes from cache to disk = 0 Fetches from cache = 15 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов Денися как бы склонен к тому что ТС не идиот чтобы использовать супер в 2.1 Я практически уверен в обратном. Классик ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:28 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogКлиент формирует За использование непрепарированных запросов в таких условиях надо отрывать руки. Используй параметры и получишь нужное ускорение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:33 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Надеюсь, запросы не текстом каждый раз наново формируются, а используют параметры и prepare ? группируй свои запросы, хотя бы по дате Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:33 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
http://bobby-tables.com/ru_RU/delphi.html ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:35 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochdgdogПусть на каждой из "200 БД" запускается служба подготовки к выгрузке. (базы разные от 1С, Firebird, ... и до простых текстовых файлов экспорта из клиентбанков) вот и делай под каждый источник данных - свою локальную службу подготовки к репликации, заточенную именно на его формат. грубо говоря, берешь своего клиента, вырезаешь из него все источники, кроме одного нужного на конкретном месте, и делешь программу выгрузки данных для Ивановой Марьи Владимировны.... Практически так оно и есть. Запускается десять разных клиентов которые тащат конкретные данные из конкретных источников. Но мне каждую строчку надо сверить с моей базой. Они наваливаются разом ... и привет ЦП. Логика проверки вся на клиенте. В Firebird у меня мозгов не хватит все перетянуть. ЦП кстати гавно I5. Лучше ближайшие три месяца не будет. ВотТакВота ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:38 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ну и до кучи линейный поиск на клиенте (типа FieldByName и ParamByName в Delphi) тоже использовать в цикле НЕЛЬЗЯ если подобное у тебя есть - убирай его наружу циклов ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПрактически так оно и есть. Запускается десять разных клиентов которые тащат конкретные данные из конкретных источников. Но мне каждую строчку надо сверить с моей базой НЕ НАДО делай клиенты, которые не будут трогать основной сервер вообще. сервер должен подготовить ОДИН общий zip-файл с требованием к репликации и всей сопутствующей инфой, которого будет достаточно ЛЮБОМУ клиенту для проверки всех его записей НЕ ТРОГАЯ сам сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:41 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЗапускается десять разных клиентов которые тащат ЦП кстати гавно I5 ну так запускай свои 10 клиентов на 10 разных процессоров если даже один i5 для тебя мелочь несущественная, то 10 штук i5 побыстрее будут ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:43 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochсервер должен подготовить ОДИН общий zip-файл с требованием к репликации и всей сопутствующей инфой, которого будет достаточно ЛЮБОМУ клиенту для проверки всех его записей НЕ ТРОГАЯ сам сервер Во-первых, вы с ТСом клиентами называете разные вещи. Во-вторых, у него на подготовку файла уйдёт больше ресурсов, чем сейчас. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЦП кстати гавно I5. Лучше ближайшие три месяца не будет. - Сам ты такое слово. (падобраму канешна) :-) Потому как нефег сваливать на ЦП свое не знание и не понимание, прикрываясь "Он железный, вот пусть и пашет..." ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochНадеюсь, запросы не текстом каждый раз наново формируются, а используют параметры и prepare ? группируй свои запросы, хотя бы по дате Код: sql 1. 2. 3.
Пробовал и собирать строку и через параметры. А смысл? Нагрузка то на сервер не уменьшается. Сейчас параметрами шьет. Но один фик, там математика сначала обрабатывает ибо надо обрезать пробелы, проверить формат прилетевший из 1С по COM. Еще этот долбаный NULL ))) Чего и как нафигачили в назначении платежа и т.п. Но это отлаженная логика. Дело только в забое ЦП кучей запросов. Которые я хочу свести к одному запросу. Вытянуть данные по Клиенту от даты, до даты на клиента и там в памяти разобрать. Подготовить файл-табличку и её залить в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВо-вторых, у него на подготовку файла уйдёт больше ресурсов, чем сейчас. судя по вышесказанному файл по сути будет линейной срезкой нескольких таблиц за три последних месяца так что ресурсы если какие и будут нужны - то disk i/o и больше ничего у него затык в процессоре => поставить отдельный винчестер исключительно под формирование пакета и прием ответных пакетов означает разгрузить его бутылочное горлышко, что ему и требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНагрузка то на сервер не уменьшается. Сейчас параметрами шьет. Prepare делаешь ? как минимум Prepare добавляет нагрузку серверу на каждый отдельный запрос либо решай радикально - избавляй сервер от этой работы вообще либо грызись за каждый каждый процент, в том числе и по возможности убирай каждый лишний случай парсинга SQL-запросов на сервере ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LInedgdogЦП кстати гавно I5. Лучше ближайшие три месяца не будет. - Сам ты такое слово. (падобраму канешна) :-) Потому как нефег сваливать на ЦП свое не знание и не понимание, прикрываясь "Он железный, вот пусть и пашет..." А кто? Я за него, чтоли буду считать и тригерры с процедурами на логарифмической линейке высчитывать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogКлиент формирует За использование непрепарированных запросов в таких условиях надо отрывать руки. Используй параметры и получишь нужное ускорение. Ускорение чего? Как быстро запрос долетит до сервера???? Так в этом нет беды... Сервак, что так, что эдак переварить не успевает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПробовал и собирать строку и через параметры. А смысл? Нагрузка то на сервер не уменьшается. Значит плохо пробовал. Потому что от применения препарированных запросов нагрузка должна уменьшаться. В твоём случае - в 15 раз. Код показывай. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:52 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
троллетопег. имхо. ТС - картонная дурилка. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, твое дело, конечно не руками считать - а заранее продумать как сделать, чтобы не гонять процессор попусту и считать только то, что надо потому что как-то это все странно звучит, если вместе и i5 - дерьмо (вы русские есть очень много кушать!) и одного нового процессора не получишь, хотя фирма растёт на дрожжах и заела себе сотни новых компьютеров с базами данных на них странно это звучит вместе взятое ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:54 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogУскорение чего? Как быстро запрос долетит до сервера???? Ускорение обработки запроса сервером. За счёт понижения нагрузки на ЦПУ, который, по твоим словам, и является у тебя бутылочным горлышком. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:54 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogУскорение чего? Как быстро запрос долетит до сервера? срочно читай, что такое sql query prepare, и переставай болтать ерундой ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
МимопроходящийТС - картонная дурилка. Возможно, ему действительно пора хорошенько выспаться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogMemory buffers = 75 Хмммм.... и мегатонны запросов "дай мне вот эту запись! а теперь дай соседнюю! и ещё сто соседних" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochХмммм.... Не придирайся. А то ещё заставишь его управление транзакциями переделывать и параметры лок-менеджера крутить. А он явно на данный момент на такую мозговую работу неспособен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochdgdogНагрузка то на сервер не уменьшается. Сейчас параметрами шьет. ... либо решай радикально - избавляй сервер от этой работы вообще .... Ну а я в чем и прошу помощи))) Как бы одним запросом свалить нужную выборку ИЗ МОЕЙ БАЗЫ на клиента. Там разобрать и слить обратно только нужное. ВОт вопрос то ВО ЧТО слить? Ну не в текстовый же файл. Куда в память это можно засунуть... в какой компанент? Вообще в идеале чтоб до этого компанента можно было QUERY добраться (тогда вообще все в шоколаде) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, если к FB такие бестолковые запросы, то что говорить о других к "источникам данных"?.. Там лопатить всю систему надо и с нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:02 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Hello, Dimitry Sibiryakov! You wrote on 25 июля 2016 г. 13:01:16: Dimitry Sibiryakov> Возможно, ему действительно пора хорошенько выспаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:02 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogПробовал и собирать строку и через параметры. А смысл? Нагрузка то на сервер не уменьшается. Значит плохо пробовал. Потому что от применения препарированных запросов нагрузка должна уменьшаться. В твоём случае - в 15 раз. Код показывай. Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА то ещё заставишь его управление транзакциями переделывать Кстати, да: аффтар, а не идёт ли там у тебя каждый запрос к серверу в отдельной транзакции?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:06 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А он явно на данный момент на такую мозговую работу неспособен. Во-первых подкрутка ОДНОГО параметра в конфиге - это далеко не изчение лок-менеджера. У него там 15 чтений из кэша и три с диска, однако.... Хотя если затык в процессоре, то это действительно не важно (если только винчестер в PIO-режим не свалился, или гипер-агрессивный анивирус не проверяет каждую страницу БД). Во вторых, на счет "не способен", я ещё на первой странице советовал AriochPS. За сумбурность извините, не спал, проект горит Таки пойти и лечь спать. Альтернатива - перестанешь понимать собственные действия и наворотишь второпях такого - что придется потом месяц разгребать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:06 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogform1.pfibquery4.SQL.Text:='select * from SDELKA where PP='+quotedstr(pp)+' and Prihod='+ summtmp+' and DATA='+quotedstr(datetostr( zapros_tab.Получить(y).Дата)) И в каком месте это использование параметров, чудак?.. PS: За звёздочку - отдельный ицых с гвоздями. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogDimitry Sibiryakovпропущено... Значит плохо пробовал. Потому что от применения препарированных запросов нагрузка должна уменьшаться. В твоём случае - в 15 раз. Код показывай. Код: pascal 1. 2. 3. 4.
ад и холокост... 1. приходы и даты бери не значениями а диапазонами, для каждого PP выбираешь диапазаоны - минимум и максимум 19450595 2. Текст запроса задается ОДИН раз, потом делается Prepare. При изменении значений любых параметров текст запроса не меняется. Вообще не меняется. Никогда. После изменения значений параметров повторнo запускаешь Open/ExecQuery не меняя текст. 3. FieldByName и PrepareByName делается ОДИН раз, после Prepare и никогда не повторяется внутри циклов, перебирающих строки 19450626 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch3. FieldByName и PrepareByName ParamByName ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochНадеюсь, запросы не текстом каждый раз наново формируются, а используют параметры и prepare ? Запутал конкретно))) Arioch... Prepare делаешь ? как минимум Prepare добавляет нагрузку серверу на каждый отдельный запрос ... Запутал. Но сути дело не меняет. Сейчас строкой формирую. Параметрами пробовал смысла не увидел. Про FieldByName и иже с ними понял. Подумаю как убрать из цикла... но суть не в этом. Хотя подумаю, да есть на запись все идет в таком виде Код: pascal 1.
Но до записи из 3000 проверенных-сверянных записей добирается 1-2. Не критично... остальные по If срезаются. Т.е. до этого места вооообще редко доходит дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Запутал. Но сути дело не меняет. Сейчас строкой формирую. Параметрами пробовал смысла не увидел. Если ты текст запроса снова и снова перед каждым ExecQuery присваивал - то его и не будет. Тект запроса задается ОДИН раз для всех данных сразу. Потом делается prepare. Потом только меняются параметры не трогая текст запроса. остальные по If срезаются. Т.е. до этого места вооообще редко доходит дело. а в if-e у тебя что? такой же fieldbyname ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:18 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogУскорение чего? Как быстро запрос долетит до сервера???? Ускорение обработки запроса сервером. За счёт понижения нагрузки на ЦПУ, который, по твоим словам, и является у тебя бутылочным горлышком. Спасибо, не знал. Почитаю. Вечером попробую. Но пробовал на одном из вариантов Клиента, не видел разницы. Но блин попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogне видел разницы если у тебя нагрузка процессора уже сильно больше 100% - то ты ее и не увидишь, освободившуюся часть процессора просто возьмет другая задача такие есты надо проводить рпи загрузке чуть меньше 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:23 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogне видел разницы. Учитывая приведённый образец кода, это вполне возможно. Особенно, если он (говнокод) крутится на том же компьютере, что и Firebird. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPS: За звёздочку - отдельный ицых с гвоздями. в коде типа "form1.pfibquery4" редко случается что-то другое.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Практически так оно и есть. Запускается десять разных клиентов которые тащат конкретные данные из конкретных источников. Но мне каждую строчку надо сверить с моей базой. Они наваливаются разом ... и привет ЦП. Логика проверки вся на клиенте. В Firebird у меня мозгов не хватит все перетянуть. ну раз так тебе стоит записаться на курсы повышения квалификации http://www.ibase.ru/courses/ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:25 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochdgdog, ... и i5 - дерьмо (вы русские есть очень много кушать!) и одного нового процессора не получишь, хотя фирма растёт на дрожжах и заела себе сотни новых компьютеров с базами данных на них странно это звучит вместе взятое Ээээ. Извини Человек. Не думал, что так все в штыки. Рабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка. I5 Это мой нубук на котором ставлю все эксперименты. И Xeon и I5 Уходят в 100% загрузку. Нет, я могу запускать импорт из баз не с 10, а с 5 одновременно и тогда забиваю ЦП скачкообразно и бухи могут работать, но тогда импорт длится 3-5 часов. Вопрос процессором не решить. Моя база не была важной для конторы до последнего времени, поэтому о железе специально под нее никто не думал. Да и не в железе дело. Косяк в проектировании. Походу Delphi-стам надо вопрос переадресовать чтоли? Чего на клиент накрутить, чтобы туда кусок таблицы выгрузить и обращаться к данным. (текстовый файл не подходит) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:28 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochХмммм.... Не придирайся. А то ещё заставишь его управление транзакциями переделывать и параметры лок-менеджера крутить. А он явно на данный момент на такую мозговую работу неспособен. Да я собственно в Firebirde только в 2002м проектировал чето... дипломы студентам и т.п. Ну и вот в 2014 чето эту халтурку слепил. Им на время надо было... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:30 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Чего на клиент накрутить - знания и понимание. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:31 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogРабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка. это ни разу не сервер, а говно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:31 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogРабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка. I5 Это мой нубук на котором ставлю все эксперименты. это не так ещё есть упомянутые тобой несколько сотен БД - а значит и несколько сотен комьютеров, на которых те БД работают ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog эту халтурку слепил. Что слепил, то и получил.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochdgdogMemory buffers = 75 Хмммм.... и мегатонны запросов "дай мне вот эту запись! а теперь дай соседнюю! и ещё сто соседних" Как высчитать правильно буффер? Ссылку бы? Или цифру? Реально глаза в кучу. ДА РЕБЯТА, В БД Я ЛОШАРА. Признаю. Сам не рад, что связался с этой темой, но отступать некуда, за спиной ипатека и ребенок. Херня война прорвемся. Надо будет, значит всю ночь буду читать и не одну. Вот про буффер сказали - СПАСИБО. Дайте ссылку как поправить... и продалжайте тыкать носом. Только признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:35 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog в 2014 чето эту халтурку слепил. Им на время надо было... раз "на время", значит они ещё тогда знали куда поедут дальше, когда халтурки перестанет хватать время пришло пусть выполняют свое тогдашнее решение либо пусть переводят халтурку в статус постоянной части инфраструктуры фирмы, чтобы никаких "админ больше не даст" даже не звучало. Раз больше не даст - пускай сам руками обсчитывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch срочно читай, что такое sql query prepare, и переставай болтать ерундой Ушел в Яндекс-Хренадекс... вы если че не поминайте лихом ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovDimitry SibiryakovА то ещё заставишь его управление транзакциями переделывать Кстати, да: аффтар, а не идёт ли там у тебя каждый запрос к серверу в отдельной транзакции?.. Ну я думал не спросите)))) А чё???? Сейчас как раз копаюсь в своем коде двухгодичной давности))) Нет не скажу. Вы ругаться будете))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogКак высчитать правильно буффер? Ссылку бы? Или цифру? Реально глаза в кучу. ДА РЕБЯТА, В БД Я ЛОШАРА ЕСЛИ у тебя затык только в процессоре и не в диске, то ПОКА тебе это не актуально чтобы ПОСЧИТАТЬ значения - нужно преставлять сколько и каких данных твоим программам реально нужно, и как сбалансировать 2гб оперативки между ВСЕМИ подключенными программами в качестве грубой прикидки можешь глянуть в http://ib-aid.com/ru/optimized-firebird-configuration/ но повторяю, ЕСЛИ у тебя затык только в процессоре и не в диске, то ПОКА тебе это не актуально ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:41 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, я же сказал на курсы. Ну не возможно в форуме обучить человека. Скажи ка сколько у тебя пользователей на Firebird и сколько весит БД. 2 Гб памяти на классике это конечно пипец, если коннектов хотя бы 50, то тушите свет. Давать советы по увеличению Memory buffers до того как ТС не скажет сколько у него коннектов преждевременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНу я думал не спросите)))) А чё? да так, ещё больше нагрузки на сервер, который и так подыхает как с prepare, который вы неявно гоняете на каждый запрос в отдельности http://www.ibase.ru/dontdoit/ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Дайте ссылку как поправить... и продалжайте тыкать носом. Только признателен. - Дружище.... Отсыпаешься и на свежую голову читаешь IBASE.RU. Начиная для чайников и постепенно в глыбь вопроса. И даже не надейся на "волшебную кнобку" которая разом тебе все исправит. Перепахать реально нужно всё. Начиная с кода, попутно кумекая над оптимизацией таблей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochdgdogРабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка. I5 Это мой нубук на котором ставлю все эксперименты. это не так ещё есть упомянутые тобой несколько сотен БД - а значит и несколько сотен комьютеров, на которых те БД работают Это не так Много 1С баз болтаются на одном SQL сервере... остальное да. Есть файловые базы 1С есть машинки с IB и Firebird... в конце концов есть файл сервер где в папочке валяются текстовые файлы... мне то от этого не легче ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogмне то от этого не легче Всерьёз надеешься, что кто-то тут пожалеет человека, который собственными руками сделал всё возможное для того, чтобы система никогда не работала быстро?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
вот как бы да спать-спать-спать а потом учиться-учиться-учиться dgdogЧего на клиент накрутить, чтобы туда кусок таблицы выгрузить и обращаться к данным. я тебе два варианта уже предложил "как реогранизовать РабКрИн" не в терминах "бросить волшебный компонентик на формочку" а в терминах организации взаимодействия, потоков данных. но на это уровне ты сейчас размышлять не способен. а без этого - без изменения "потоков данных" - вопрос "что накрутить" не имеет смысла. и наоборот, если ты решишь организовать работу своих программ по-новому, то "что накрутить" превращается в элементарное следствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog остальное да. Есть файловые базы 1С есть машинки с IB и Firebird... в конце концов есть файл сервер где в папочке валяются текстовые файлы... мне то от этого не легче в пропагандируемом мной варианте "клиенты не трогают основной FB-сервер, вообще" от этого как раз легче, потому чт оклиенты работают именно на этих машинах не убивая оперативку (которой там считай что нет) и процессор FB-сервера ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:52 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, я же сказал на курсы. Ну не возможно в форуме обучить человека. Скажи ка сколько у тебя пользователей на Firebird и сколько весит БД. 2 Гб памяти на классике это конечно пипец, если коннектов хотя бы 50, то тушите свет. Давать советы по увеличению Memory buffers до того как ТС не скажет сколько у него коннектов преждевременно. Пользователей (вот которые обрабатывают данные) 3 ТРИ. Когда идет импорт я запускаю еще по 10 клиентов. Т.е. пик 13. Одна база закончила импорт, на ее место заступает другая и так до 204 штук. (В идеале надо чтоб все 204 штуки разом летели, но это не реально с моими познаниями БД. )Потом пользователей опять 3 ТРИ. У меня вопрос как облегчить именно ПИК момент загрузки импорта. В память и в диск сервер даже близко не упирается. База 700 метров всего Через час домой. СПАТЬ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Hello, Dgdog! You wrote on 25 июля 2016 г. 13:55:16: Dgdog> Через час домой. СПАТЬ)))вот так всегда! на самом интересном месте... (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Мимопроходящий, Он на склад, завтра тебе еще попкорна принесёт, более забористого Чем далше в лес, тем толще партизаны ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, ну тогда для начал увеличь Memory buffers до значения 512-1024. И перепиши всё с использованием параметров. Хотя по большому счёту там до хрена надо переделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 13:59 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogВ идеале надо чтоб все 204 штуки разом летели, но это не реально с моими познаниями БД как одно связано с другим ? сейчас у тебя просто сервер невытянет 200 одновременных подключений, 2 гб - это мало, да еще на классик-сервере но при чем тут познания ? а чтобы "летали одновременно", они должны летать локально, на машинах с источниками данных, и не трогая твой FB-сервер вообще ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, ну тогда для начал увеличь Memory buffers до значения 512-1024. И перепиши всё с использованием параметров. Хотя по большому счёту там до хрена надо переделать. Ну значит до хрена и будем переделывать. Че уж раз вляпался. Самн нагородил... сам и разгорожу. За любы советы и тычки носом буду рад. Ibase.ru сегодня не вкурю. Ушел читать про буфер и посмотрю где можно уйти в параметры. но в код и к серверу сегодня не полезу))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:02 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogно в код и к серверу сегодня не полезу))) Первая здравая мысль. (смайлик с пивом) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:04 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogУ меня вопрос как облегчить именно ПИК момент загрузки импорта. В память и в диск сервер даже близко не упирается. База 700 метров всего выгрузить в отдельный файл (можно дже и файл БД - клиент его прочитает через FB Embedded) все данные, нужные клиентам для сверки, скорее всего это будет чисто временная срезка нескольких таблиц за последние NN месяцев растиражировать этот файл по компьютерам с источниками данных на тех комьпютерах запустить на каждом по модифицированному клиенту, которые 1) будут сверяться не по освновной перегруженной БД, а по этому файлу 2) будут нужные данные заливать не прямо в базу, а в промежуточный файл потом собираешь все эти файлы с уже проверенными и очищенными данными со всех клиентов на сервер потом на сервере уже ОДНИМ (модифицированным в противоположную сторону) клиентом читаешь эти файлы один задругим и вливаешь их в БД в одном подключении ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
доктор, а вы геморрой по фотографиям не лечите? (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Мимопроходящий, с удовольствием!!! про гарантии результата прочитаете в типовой EULA ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:20 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog.....слить обратно только нужное. ВОт вопрос то ВО ЧТО слить? Ну не в текстовый же файл.. можно и в текстовый - JSON или XML плюс - если что-то не так для отладки можно этот файл открыть в блокноте и своими глазами увидеть содержимое ещё плюс - в один файл можно сливать записи разных форматов, в том числе и просто описание, с какого клиента, с какого источника данных за какой срок эта выжимка сформирована не хочется - возьми простые табличные файлы DBF - http://TDBF.sf.net например но если данные разного формата - придётся несколько файлов-таблиц делать впрочем, никто не мешает после формирования просто упрятать их все в один zip опять же просмотрщиков содержимого DBF как собак нерезанных, даже в Total Commander можно смотреть можно, если тебе так охота, и в SQL БД типа например SQLite или типа Firebird Embedded Но я бы не стал, только если импорт этих данных потом делать изнутри самого сервера средствами чистого FB SQL. А если ты импорт на Паскале пишешь - то варианты выше будут удобнее ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Мимопроходящийдоктор, а вы геморрой по фотографиям не лечите? (с)Это не геморрой, это 3,14..ец, а его мы не лечим. Про external tables автор знает? Хотя при его подходе (в первую очередь) и аппаратуре (во вторую) это тоже не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:38 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, боже упаси ему с его опытом работать напрямую с бинарными данными! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, не грузи чела... Ему бы, для начала, разобраться в элементарных вещах принятых в культурном FB-програминге. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, ты это... ТС умными фразами не путай. Пока что судя по его квалификации он это сделать не способен. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne, а ему все равно придется в этом разбираться, пуст ьсразу составляет список внеклассного чтения на ление каникулы если у них контора реально способна внезапно вырастать в сотню раз - то ему придется переходить к параллельной обработке раньше или позже ....а то он потом ещё одного мертворожденного монстра слепит в итоге. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochесли у них контора реально способна внезапно вырастать в сотню раз - то ему придется переходить к параллельной обработке раньше или позже Не передергивай. Монстру он сваял в 2014 (начало кризиса) , а ща какбэ 2016 на дворе. И оборот мог вполне вырасти в разы. Но не мозги начальства. Бо иначе они не брали бы чела со стороны на раховую халтуру. А искали и растили на постоянке. :-) Такшта... А рано - надо, если по уму, вытянуть ему свою задницу. И ушь потом думать наперед, не в панике: [youtube= ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochDi_LIne, а ему все равно придется в этом разбираться, пуст ьсразу составляет список внеклассного чтения на ление каникулы если у них контора реально способна внезапно вырастать в сотню раз - то ему придется переходить к параллельной обработке раньше или позже ....а то он потом ещё одного мертворожденного монстра слепит в итоге. С буфером разобрался(ну как разобрался?!!! Почитал) . Ночью перенастрою потестирую. Хотя на стенде к производительности получил немного. Только вот вопрос почему на 1024 разницы с 75 не ощутил, а на 512 заметил. Хотя я без секундомера сидел))) Ну значит родЮ еще одного мертворожденного. Хотя в замутненном умишке проскакивает мысль переписать клиента с нуля. Сейчас по возможности выкрутить производительность из того, что под рукой. И переписаться... Но со знаниями БД конечно БЕДА ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
[youtube= ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, прежде чем начать что-то переписывать прочитай как можно больше умных статей, доку по Firebird, книжки умные и продумай архитектуру, а то потом ещё раз будешь переписывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogТолько вот вопрос почему на 1024 разницы с 75 не ощутил, а на 512 заметил. Хотя я без секундомера сидел))) Много хорошо - тоже плохо. :-) У KDV, в общем-то, это все расписано с обоснованием. Теперь вкуривай "параметрические запросы", как их правильно использовать. Ну и в свойства компонет тошь стоит заглядывать. Что не городить: Код: pascal 1.
А юзать культурно, что-нить типа: Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 14:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис, я сейчас плохую вещь скажу, но: 1) в 2014 году он написал временную и убогую затычку. Все - и он сам и контора - знали что это временная дрянь, которую надо как только представится случай заменить на что-то настоящее 2) это значит, что автор должен был готовиться к п-цу и заранее повышать квалификацию, а может и потихонку переписывать программу на ходу 3) это значит, что контора должна была либо искать на замену этой затычке нормальный "коробочный" продукт, либо нанять опытных программеров "со стороны" которые бы написали нужное. ЛИБО принять решение, что затычка становится основной программой и озаботиться обучением автора и оценкой кода самой затычки и его масштабируемости. Ни он ни контора этого не сделали. Два года у них было, но не сделали ничего. И пришла жопа. И лучший вариант для них сейчас - "жопа об жопу и кто дальше". Вот только автор судя по всему догадался на этой своей халтурке-затычке (которая по оределению могла в любую минуту взорваться) основать долгосрочные планы - ребенок, ипотека... Запасов на типовые минимум полгода жизни без работы нет. Причём контора автора всерьёз не очень-то воспринимает (заслужено или нет - не знаю и судить не буду) судя по "вот тебе два гига на сервер и больше не получишь" (и это в критический момент). Так что нормальный вариант для автора был бы - уволиться, пока его не уволили. А волшебный - изучить все нужные концепции, образцы чужого кода и т.д. Потому что если он не успеет найти волшебную палочку, то похоже как будто будет "вариант нормальный, часть вторая". Просто потому что начальству конторы надо будет найти крайнего. Я в свое время на похожее натыкался. Без меня про**али и БД и ее резервные копии. Потом все вместе восстанавливали БД с бумажных распечаток и прочих косвенных документов. А потом меня же и уволили, потому что "написал такую БД, которая в момент перебоев с электричеством сама себя стёрла" и наняли контору со стороны чтобы всё переписать наново. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
тогда уж нe .EOF а .IsEmpty но как вариант - "а что? а вдруг?" - у него там что-то аналогичное left join и проверять надо именно IsNull в общем, советы по частностям реализации я бы поостерёгся давать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, лучше ты ты этого не говорил, а то ведь начальство конторы где работает ТС случайно прочитают этот топик ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, прежде чем начать что-то переписывать прочитай как можно больше умных статей, доку по Firebird, книжки умные и продумай архитектуру, а то потом ещё раз будешь переписывать. Это я уже вкурил. Но сначала надо с начальством обсудить "серьезно" перспективы. Ибо чето я "заикался" спецификацию менять. Ну а че городок маааленький. Сисадмином работал. Программером микроконтроллеров работал. PHP разработчиком работал. Теперь здрасти опять "Привет Дельфи Фиреберд и Яфил"... только начнешь вкуривать тему, то контора закроется, то директор сядет))), то Москва пожрет контору и поставит своих... Я Interbase толком в 1998 изучал ито, как дипломный проект))) Так, несколько раз пересекался потом по жизни и тут вот "Здрасти. Учебник в зубы" ибо это уже не Delphi 4 и не Interbase 5))) Вы меня еще стукните, что в 2014 на Firebird 2.1 (32 bit) залез)))) И кстати да, можно ли без особых последствий, с моей кашей, уйти хотябы на 2.5? Под 2.5 инструменты есть для контроля и просмотра получаемых сервером запросов... очень бы мне пригодилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogТолько вот вопрос почему на 1024 разницы с 75 не ощутил а патамушта Ariochчтобы ПОСЧИТАТЬ значения - нужно преставлять сколько и каких данных твоим программам реально нужно, и как сбалансировать 2гб оперативки между ВСЕМИ подключенными программами ВСЕ программы (точнее все их подключения) вместе взятые при 1024 выжрали больше памяти, чем у сервера в наличии, и сервер упал в пейджинг со всеми вытекающими а при 512 - кажется - пока 2ГБ хватало но если подключений станет больше - всё равно в пейджинг упадёт :-) смешно, но по приведённому запросу судя, для такого импорта суперсервер бы лучше работал, чем классики ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, так ни чего постояннее, чем временное - нибываит! До момента, пока жареный птиц (гы-гы) не клюнет. :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:09 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneAriochесли у них контора реально способна внезапно вырастать в сотню раз - то ему придется переходить к параллельной обработке раньше или позже Не передергивай. Монстру он сваял в 2014 (начало кризиса) , а ща какбэ 2016 на дворе. И оборот мог вполне вырасти в разы. Но-но, парниша! У меня все ходы записаны!!! dgdogВсе было разработано, все работало как надо, но в один миг СИЛЬНО увеличилась нагрузка ( в сотни раз , фирма развивается и на такие нагрузки, я просто не расчитывал) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:09 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис, если бы начальство читало такие форумы - они бы до такого не довели а как подсидеть и свалить вину они и так знают лучше нас с тобой и всех форумов в мире ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, на 2.5 наверное можно, но осторожно. Список несовместимостей с 2.1 там не очень большой. На 3.0 с твоими знаниями пока пожалуй не стоит, хотя его SS мог бы вполне прилично крутится на 2GB оперативы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Есть подозрение, что все тормоза (или хотя бы бОльшая их часть) - тупо из-за параметра даты в виде строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch , а ты не ходы записывай, а смотри по жисти. Имею в практике случай, когда за месяц(!) было подключены несколько десятков точек по стране. То есть практически мгновенно. А прогеров, по понятным причинам, поставили перед фактом. (В какую пазишен - сам догадашься.) Ни я, ни ты - не знаем реальной картины у ТС-а. А делать обобщенные выводы из одного свидетеля, путающегося в показаниях, тошь не следует. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogИ кстати да, можно ли без особых последствий, с моей кашей, уйти хотябы на 2.5? не попробуешь - не узнаешь ОБЫЧНО все нормально, но кто ж знает что там у тебя где написано.... поставь параллельно к 2.1 ещё 2.5, перетащи пользователей security2.fdb (надо ли ее обновлять как-то при этом - не знаю), и попробуй из автозапука убрать 2.1 и поставить 2.5 - и молись потом и не меняй структуру базы под 2.5 - иначе обратно на 2.1 же не вернешься ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПод 2.5 инструменты есть для контроля и просмотра получаемых сервером запросов... очень бы мне пригодилось. правда эти инструменты нагружают сервер больше, чем работа с самой БД так чт оесли у теб сервер уже не шевелится, то с включенной трассировкой и просто помрёт ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:20 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, ты давай не наговаривай. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogибо это уже не Delphi 4 и не Interbase 5 раньше на Ibase.ru был для новчиков список литературы и была там книжка то ли Шувалова то ли Шулимова - название какое-то типа "разработка приложений БД на Delphi для Interbase" причём если на сайте упомяналась D5, то у меня дома лежит вообще её издание для Delphi 3 так вот, если бы вы ее прочитали - то такого кода, который вы привели, вы бы не родили. у вас проблема не в версиях Дельфи, а в принципиальных моментах "что когда и зачем делать", а они с момента поядлвения SQL не менялись ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneА делать обобщенные выводы из одного свидетеля, путающегося в показаниях, тошь не следует. какие же они обобщённые, если они только про его котору и ни про что кроме? а что до свидетеля - если ему не верить, то тогда уже и обсуждать нечего, тогда прав Мимопроходящий и просто надо брать попкорн и смотреть как один тролль всех этих умников кругами гоняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch... тогда прав Мимопроходящий... А ты сможешь припомнить, когда МП был не прав? :-)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch... и просто надо брать попкорн и смотреть как один тролль всех этих умников кругами гоняет. Ээээ))) Парни, парни! Хорошь стебаться. Попкорн им подавай. Мож еще с пивом усядетесь перед мониторами в понедельник то))) Короче 1024 буфера привели (а еще один из запросов переписал в препаре) к загрузке всех баз вместо 40 минут к 30 минутам. Да существенно. Спасибо за советы. Но пиковой загрузки сервера это не решило (конечно, ктоб сомневался) Памяти во время загрузки из двух гиг ел 360-380 мб... пик 421 мб. И всё) Процессоры все 4 на 100% Хмммм... почему-то просел этот запрос Код: pascal 1. 2.
авторPlan PLAN JOIN (T1 NATURAL, T2 SDELKA ORDER SDELKA_IDX3 INDEX (SDELKA_IDX3)) Adapted Plan PLAN JOIN (T1 NATURAL, T2 SDELKA ORDER SDELKA_IDX3 INDEX (SDELKA_IDX3)) ------ Performance info ------ Prepare time = 16ms Execute time = 78ms Avg fetch time = 4,33 ms Current memory = 17 712 512 Max memory = 17 882 200 Memory buffers = 1 024 Reads from disk to cache = 978 Writes from cache to disk = 0 Fetches from cache = 156 920 Вот эта строчка это нормально? Все сдаюсь ( на сегодня) Хотя если бессоница опять придет выползу из дома на IBase. ВСЕМ СПАСИБО ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:06 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog...Процессоры все 4 на 100% ... Процессоры ;-) Все четыре :-))) Ядра имел ввиду. Все. Все... нафиг базу, на сегодня))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:09 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Код: sql 1.
а вот такой запрос, кстати, ЕМНИП в 2.5 уже не пройдёт ибо если ты уж начал ярлыки давать - так давай всем и перед ind2 тоже должно стоять t2 либо t1 если не путают, конечно с другим похожим исправлением ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Hello, Arioch! You wrote on 25 июля 2016 г. 16:12:02: Arioch> в 2.5 уже не пройдётс чего бы? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, он не пройдёт только если этот филд одновременно есть у t1 и t2. Хотя лучше конечно всегда дописывать имя таблицы (алиаса) в запросах которых более 1 таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ребята, а вот подскажите если кому делать нефиг: Значит кинулся переписывать Query под параметры а у меня вот так begin БОЛЬШОЙ ЦИКЛ (ну пербираю базы) begin цикл пербора "расходных сделок" Код: pascal 1. 2. 3. 4. 5.
end цикл пербора "расходных сделок" begin цикл пербора "прибыльных сделок" Код: pascal 1. 2. 3. 4. 5.
end "прибыльные сделки" end БОЛЬШОГО ЦИКЛА Т.е. я 4 раза использую pfibquery4 с разными запросами внутри большого цикла. И как быть с параметризацией? Заводить 4 разных Query??? Или? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 18:11 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЗаводить 4 разных Query??? думаешь, на форме они все не удержатся и попадают вниз? зы. quotedstr(String(pp)) ты так на параметры и не заменил... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 18:18 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЗаводить 4 разных Query??? Да. Но не вижу зачем их четыре: запросы к FULLTABLE идентичны. И я же сказал: убери напрочь звёздочку. Она может тормозить больше чем всё остальное вместе взятое. Выбирай только те поля, которые абсолютно необходимы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 18:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ДокdgdogЗаводить 4 разных Query??? думаешь, на форме они все не удержатся и попадают вниз? зы. quotedstr(String(pp)) ты так на параметры и не заменил... да удержатся конечно))) я думал чем меньше компонентов, тем меньше памяти пожру. Учился на 486х))) Привычка мать ее. вот тут не понял "зы. quotedstr(String(pp)) ты так на параметры и не заменил..." так менять на параметры - ВСЕ или ничего. Я так с сонных шар вкурил что: Prepare дает реальное преимущество. Сервер строит Plan и держит его в кэше до следующего выполнения подобного запроса Query. Логично. Больше не тратим времени на построение Плана. Мне нравится идея))) В принципе только сейчас понял о какой прибавке к производительности толковал Arioch . Теперь бы применить правильно... и не запутаться в замене pFibQuery4. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogЗаводить 4 разных Query??? Да. Но не вижу зачем их четыре: запросы к FULLTABLE идентичны. И я же сказал: убери напрочь звёздочку. Она может тормозить больше чем всё остальное вместе взятое. Выбирай только те поля, которые абсолютно необходимы. "Не ори на мать!" ;) Все поля... все, все, все поля нужны. Заменить звездочку на перечень всех полей? Получу бонусы? (если можешь ответь, нет значит буду посвободней порою инфу по этому поводу) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogвсе, все, все поля нужны. Зачем? Ты же только на уникальность проверяешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:20 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа. Но не вижу зачем их четыре: запросы к FULLTABLE идентичны. Точна!!! Лоханка я!!! Три. А вот еще вопрос по параметризации. (Не догоняю) Занчит: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
Так как-то? На живой базе тяжко эксперементировать))) pfibquery4. Закрывается где-нибудь? т.е. pfibquery4.close или внутри цикла это не обязательно? Prepare - exec, Prepare - exec? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:33 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovdgdogвсе, все, все поля нужны. Зачем? Ты же только на уникальность проверяешь. А?! нет извини, я тебя в блуд ввел. Дальше логика проверки справочников, проверка на внесение уже такой проводки ручками с ВАРИАНТАМИ проверки на человеческий фактор... найдена В ПРИНЦИПЕ похожая проводка МАЯЧИМ бухгалтеру=отмечаем пусть сами разбираются "что это было? Дубль? Чистая проводка? Ошибка"... ну короче, сейчас это не суть и обрабатывается на клиенте, к серваку толком не лезет. Читсо получает в этом селекте все что нужно (а нужно все))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
авторТеперь бы применить правильно... и не запутаться в замене pFibQuery4. Лови простой пример. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
И опять же, раз пошла такая пьянка вот выполнил я pFibQuery Дальше у меня Код: pascal 1.
а на FieldByName в цикле Arioch ругается как компилятор при делении на ноль. И куда за цикл я это выкину? Или обращаться к номеру поля? pFIBQuery4.Fields[3].asString? так чтоли? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ЛюбезныйавторТеперь бы применить правильно... и не запутаться в замене pFibQuery4. Лови простой пример. Очень любезно)) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
И касательно FieldByName: если текст запроса препарируется и содержит перечисление полей, лучше обращаться к полю по индексу, а не через имя: Fields [0].AsString и.т.д. Тоже будет прирост производительности, пусть и не особо большой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogИ куда за цикл я это выкину? Забей пока. Это понадобится когда твоё приложение начнёт жрать больше ЦПУ чем сервер. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ТвоюБогаДушуМатьЧерезКоромыслоРастудытьТебяВКачель... да тут все... ВСЕ перепахивать надо. Дешевле выкинуть весь "импорт" и пересобрать модуль по новой. ((( беда. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 19:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
С самого начала нужно писать максимально просто, чтобы не путаться в коде. Разнес бы логику хотя бы на процедуры (пусть даже на вложенные) - тогда и тебе, и нам стало бы гораздо понятнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, а еще лучше и экспорт дописать (как советовали ранее) с 1С-ки той же сделать обработкой выгрузку в текстовый файл, желательно единого формата с другими файлами... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ЛюбезныйС самого начала нужно писать максимально просто, чтобы не путаться в коде. Разнес бы логику хотя бы на процедуры (пусть даже на вложенные) - тогда и тебе, и нам стало бы гораздо понятнее. Да как это писалось? - А нам вот табличка нужна. Мы бы туда разносили. Простенькая. - Ладно. ... месяц - а вот нам бы суммы считать и формулы как в Ексели - ну ок. ...месяца два прошло - а можно чтоб из выгрузок банков само вставало. вот файлы из банков. - в принципе. Делать в выходные нечего... сделаю. ... прошло полгода - а вот. 1Сник сказал, что можно из 1С напрямую как-то перетаскивать... - угу. только я вообще не помню исходников, я там сам не разберусь уже... ... через месяц -Нам сводная нужна. ... - а сделай, чтоб мы сами новые 1Ски прикручивали... ... - а че так медленно? А выгрузку в ексцель? А вот директору форму с отчетом, чтоб он в вебе видел. ПС сейчас сижу смотрю на этого франкинштейна - это пи*дец. Какие-то невменяемые куски. Как ЭТО вообще работало 2 года... х.з. На некоторые вещи смотрю и хочется спросить "это вот точно Я писал да? Трезвый да?" Сам этой ж*пе не рад, но увольняться не вариант, только не сейчас. Херня, ребзя прорвемся ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
igs123dgdog, а еще лучше и экспорт дописать (как советовали ранее) с 1С-ки той же сделать обработкой выгрузку в текстовый файл, желательно единого формата с другими файлами... В 1С я полный NULL даже не ноль. 1Сник запрос дал. COMсоединением подрубаюсь, получаю данные. Если выгрузка будет делаться по кнопке(пользователем) то этого никто делать не будет ТОЧКА. Если выгружать опять же подрубаясь COMом и командуя 1С то смысла не вижу, напрямую получать данные или в из файла их брать. Если не прав или недопонял пните в нужную степь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogТвоюБогаДушуМатьЧерезКоромыслоРастудытьТебяВКачель... - Да-да, это реплика из лога FB. :-))) dgdog да тут все... ВСЕ перепахивать надо. Дешевле выкинуть весь "импорт" и пересобрать модуль по новой. ((( беда. О чём тебе и грили 3 страницы форума назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЕсли выгрузка будет делаться по кнопке(пользователем) то этого никто делать не будет ТОЧКА. Ну так это уже будет проблема бюстгалтерш. Хотя... Они в 110% случаях тупые и упертые: - Делать так и не иначе! А значить будут. :-) Во всяком случае это проблемы главбушки - гонять своих, а не отдела ИТ... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:28 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogigs123dgdog, а еще лучше и экспорт дописать (как советовали ранее) с 1С-ки той же сделать обработкой выгрузку в текстовый файл, желательно единого формата с другими файлами... В 1С я полный NULL даже не ноль. 1Сник запрос дал. COMсоединением подрубаюсь, получаю данные. Если выгрузка будет делаться по кнопке(пользователем) то этого никто делать не будет ТОЧКА. Если выгружать опять же подрубаясь COMом и командуя 1С то смысла не вижу, напрямую получать данные или в из файла их брать. Если не прав или недопонял пните в нужную степь. Если формат исходных данных будет единым у тебя как минимум в 2 раза код уменьшится и это главное. Ну и External Table есть такое в Firebird http://www.ibase.ru/impexp/ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:35 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LInedgdogЕсли выгрузка будет делаться по кнопке(пользователем) то этого никто делать не будет ТОЧКА. Ну так это уже будет проблема бюстгалтерш. Хотя... Они в 110% случаях тупые и упертые: - Делать так и не иначе! А значить будут. :-) Во всяком случае это проблемы главбушки - гонять своих, а не отдела ИТ... Завтра провентилирую этот вопрос с начальством, но не распинать нам филиалы, посредников и т.п. многого объяснить не могу. Фигня в том, что база работает. Хреново но работает. И это по большому счету всех устраивает, "только скорость импорта нннадА". Зря и не дальновидно прогнулся под самостоятельный импорт в "одно рыло". (не ожидал такого объема) Теперь переломить ситуацию сложно. Если колом программка встанет "Кто виноват?" хммм... Перевесить импорт на бухов "а зачем, работает же... ну медленно, но работает" И да очередной вопрос. Яндекс чето пять минут ответить не может а вы тут шустрые да и в полной теме: в строковую queryprih.ParamByName('pp') передаю просто переменную pp или quotedstr(pp)? (везде на поверхности примеры с Integer) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
igs123Ну и External Table есть такое в Firebird http://www.ibase.ru/impexp/ Башка не варит, но если я правильно понял то это самый удобный вариант перекинуть данные. Но мне нужна промежуточная проверка запись идет в базу или нет. Эта логика реализована на клиенте (встроенными процедурами мне такое не осилить). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
авторв строковую queryprih.ParamByName('pp') передаю просто переменную pp или quotedstr(pp)? Если ты хочешь, чтобы у тебя в базу записалось значение с кавычками (так лучше не делать) - передавай quotedstr. Если нет - просто переменную. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogigs123Ну и External Table есть такое в Firebird http://www.ibase.ru/impexp/ Башка не варит, но если я правильно понял то это самый удобный вариант перекинуть данные. Но мне нужна промежуточная проверка запись идет в базу или нет. Эта логика реализована на клиенте (встроенными процедурами мне такое не осилить). Тогда забей на ExtTbl Но вариант с единым форматом, на мой взгляд, самый оптимальный.. Т.е. читаешь все источники данных - записываешь в один суммарный файл А потом уже пробегаешь по нему, делаешь свои проверки и пишешь что надо в базу... И (если ничего не путаю) - желательно в одной длинной транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 20:59 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog в строковую queryprih.ParamByName('pp') передаю просто переменную pp или quotedstr(pp)? Варианта ашь три: 1. queryprih.ParamByName('pp').AsString='пи-пи'; 2. queryprih.ParamByName('pp').AsString=pp; 3. queryprih.ParamByName('pp').AsString=Квери2.ФиелдБуНаме('Бла-бла').AsString; Привыкай к явному приведению типов в запросе и в полях в БД. Почему так - хоть убей не помню. :-) Вариант: queryprih.ParamByName('pp').AsString= quotedstr(pp) засунет в БД строку вместе с кавычками. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:04 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
[quot igs123]dgdogпропущено... Т.е. читаешь все источники данных - записываешь в один суммарный файл А потом уже пробегаешь по нему, делаешь свои проверки и пишешь что надо в базу... И (если ничего не путаю) - желательно в одной длинной транзакции. Трабл не как взять данные из баз. МОЯ проблема это страшная туча запросов к базе для проверки каждой проводки. ЦП вешается. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:06 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogВсе поля... все, все, все поля нужны. Заменить звездочку на перечень всех полей? Получу бонусы? Ладно, поделюсь мега_хакингом. :-) Есть в одной Табле почти 600 полей. В Дельфе сваял глобальную переменную, типа Full_Colum_Names:='Colim_1,Colim_2,... Colim_J '; И потом курю бамбук: form1.pfibquery4.SQL.Text:='select '+Full_Colum_Names+' from FULLTABLE where '. Так как в процессе жизни Табли кол-во и наименование полей менялось не однократно. И править их приходилось только в одном месте, а не елозить по всему коду. Ну и меньше кнобкотыкать приходится с меньшим числом очепяток. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:20 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogМОЯ проблема это страшная туча запросов к базе для проверки каждой проводки. ЦП вешается. Это - еще не проблема. :-) Тебя еще за индексы не крутили. А так, мирно дают ляписинку. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЦП вешается. Как тебе уже сказали, ЦПУ вешает не само выполнение запросов, а их препарирование. И, вполне вероятно, старт-коммит транзакций. Избавишься от этого - избавишься от проблемы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LInedgdogВсе поля... все, все, все поля нужны. Заменить звездочку на перечень всех полей? Получу бонусы? Ладно, поделюсь мега_хакингом. :-) Вот хакнул, так хакнул)) Разумное зерно есть, но вот в производительности твоя переменная против звездочки даст ли прибыль? Будем посмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne, Понял да. уже выкинул за циклы два главных Query. Тестю. Ошибок не сыпится иладно. А как отработает пусть утром бухи смотрят. (ну базу закопировал конечно) Хм... ребят, а вот базу же можно тупо как файл скопировать в резерв (при выключенном сервере)? Понятно с мусором будет и т.п. Но как самый быстрый вариант прокатит? Жить будет? Блин, я сегодня столько узнал про Firebird...))) Ясно это верхушка айсберга, но все равно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:48 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog... но вот в производительности твоя переменная против звездочки даст ли прибыль?... ...Он над нами издевался, ОдноЦешник, что возьмешь... (R)емейк от мну. :-)))) Или ты думаешь, что всё написанное в коде после form1. - выполняется на FB-сервере? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov... старт-коммит транзакций. Избавишься от этого - избавишься от проблемы. автостарт транзакций и автокоммит компонентами, я так понял зло? Но не осилю сегодня перебирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogавтостарт транзакций и автокоммит компонентами, я так понял зло? Это не зло. Это полный П. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:54 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogА как отработает пусть утром бухи смотрят. (ну базу закопировал конечно) Ну так рихтовкой как раз и надо заниматься, когда на сервере ни кого нету. Тогда все изменения будут очам_видные. А еще лучше, хотя про это не заслужено забыли по не надобности того гурам, иметь с боку в свое мононопольное юзание сервер-профилировщик. Собраный из какого-нить старого компо-хлама, который всегда есть у атишников. Ну то железо, которое выкинуть жалко и в ход пустить не куда. На нем и будут очевидны ЛЮБЫЕ изменения в производительности, как в плюс, так и в минус. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 22:09 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Значит вынес 2 главные (саме частые) Query за цикл. Prepare за циклом. В цикле присвоить параметры Exec проработал Close. Так не так не понял. В работе импорта заметны реальные провалы ЦП уже не все время 100%. Уже хорошо. СПАСИБИЩЕ всем. (но пока правил нарушил логику ;-) задвоились часть проводок) Откатываю базу и спать. Завтра выкидывать все Query за цикл и разбираться с Транзакциями. Всем спасибо. Я СПАТЬ. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 22:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
авторВ цикле присвоить параметры Exec проработал Close. Так не так не понял. Плохо. Теперь вкратце - пример с параметрами для Insert. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Что тут важно: 1. Компоненты транзакций на чтение и запись должны быть разными. Так же лучше разделить компоненты Query. К примеру, к одной транзакции привязываешь все читающие Query, а транзакций на запись лучше сделать по одной на компонент Query. 2. Компоненту транзакции на чтение хорошо бы присвоить классические параметры читающей транзакции: read read committed rec_version nowait. Это позволит стартовать ее всего один раз сразу после коннекта к базе данных и больше не трогать. Такая транзакция будет видеть все закоммиченные изменения на момент открытия SQL-запроса. Пока все. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 05:22 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ЛюбезныйавторВ цикле присвоить параметры Exec проработал Close. Так не так не понял. Плохо. ... 1. Компоненты транзакций на чтение и запись должны быть разными. ... Пока все. Да. Ну, че вилять то? Или врать?! Транзакций всего две. Одна на запись другая на чтение. Компоненты Pfibdataset и pFibQuery кончено раскиданы (по принципу эта Query только читает поэтому Read) по этим двум транзакциям. Вот. И вполне себе хватало пока базы грузились последовательно. При переделке в паралельную загрузку... получились АТОМНЫЕ грабли. Ночью пытался почитать про транзакции (дальше можно смеяться) С удивлением для себя понял, что транзакций может быть НЕ ДВЕ прописанные в Database :) Нет ну самому смешно. Но ребят я на ЖарПтице только дипломную программку писал))). Я не собирался быть админом Firebird и разработчиком такого монстра. Этож вспомогательная утилитка должна была быть и не больше. Но "партия сказала надо", "идея нормальная, PHP направление закрылось, хочешь остаться вот и рули этой темой". Ушел читать про транзакции... тяжело. Тяжело разобраться во всем и сразу. И в правильных настройках сервера и в правильном написании кода... транзакции, параметризация, индексы (тригеры, процедуры - как-то легче, помню чтоли?!!)... Примеры смотришь все просто, на своего монстра начинаешь переносить пи*дец. А база то уже работает. А бухи остановить её на минуту не дают. Пью вместо пива Афобазол и наплевав на все тычки и подгонки пытаюсь разобраться, прежде чем опять что-то дописывать переписывать. Ибо или я остаюсь на сопровождении нормального продукта... или ну его нафик ищу работу, пусть приходит грамотный чел и переписывает с NULL))). Фигня, прорвемся. Не в такие дали шагали. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 08:43 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Любезный, не согласный я. Нужно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 08:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
MikeDDЛюбезный, не согласный я. Нужно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
вот тут подробней бы. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 09:11 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
[quot dgdog]Любезныйпропущено... тригеры, процедуры - как-то легче, помню чтоли не претендую на профи по FB, но.... еще один вариант (без кучи мелких выборок на клиента) DROP TABLE FOR_LOAD (если есть) CREATE TABLE FOR_LOAD (со всеми полями какие ты будешь заливать + check1...N, Check_SUM) Заливка исходных данных Потом либо в процедуре бежать по всему набору и делать проверки, либо с клиента вызывать (предварительно создав индексы) UPDATE FOR_LOAD SET check_1=1 WHERE условие при котором данные не должны заливаться UPDATE FOR_LOAD SET check_N=1.... после всех проверок UPDATE FOR_LOAD SET Check_SUM=check_1+....+check_n INSERT INTO ... FROM FOR_LOAD WHERE Check_SUM=0 ну либо UPDATE по какому-нибудь признаку а потом с клиента опять же по результатам проверок - можно результаты вытащить (что залилось, что обновилось, какие где ошибки и т.д.) и отправить кому следует ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 09:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
[quot igs123]dgdogпропущено... не претендую на профи по FB, но.... еще один вариант (без кучи мелких выборок на клиента) DROP TABLE FOR_LOAD (если есть) CREATE TABLE FOR_LOAD (со всеми полями какие ты будешь заливать + check1...N, Check_SUM) Заливка исходных данных Потом либо в процедуре бежать по всему набору и делать проверки, либо с клиента вызывать (предварительно создав индексы) UPDATE FOR_LOAD SET check_1=1 WHERE условие при котором данные не должны заливаться UPDATE FOR_LOAD SET check_N=1.... после всех проверок UPDATE FOR_LOAD SET Check_SUM=check_1+....+check_n INSERT INTO ... FROM FOR_LOAD WHERE Check_SUM=0 ну либо UPDATE по какому-нибудь признаку а потом с клиента опять же по результатам проверок - можно результаты вытащить (что залилось, что обновилось, какие где ошибки и т.д.) и отправить кому следует Нагрузка на сервер в этом случае будет меньше? Хммм... но запилить все проверки в хранимых. Для меня это АД. Но вариант конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 09:33 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
igs123, зачем DROP? Ты подумал как это будет работать в многопользовательской среде? Уже давно есть GTT. Прежде чем советовать неплохо бы самому чуток разбираться в FB. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 09:33 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, ты его не слушай. Он тебе сейчас такого насоветует, что работать ещё хуже будет. dgdog Хммм... но запилить все проверки в хранимых процедурах Да, но только вместо DROP/CREATE TABLE использовать GLOBAL TEMPORARY TABLE ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 09:35 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneЛадно, поделюсь мега_хакингом. :-) Есть в одной Табле почти 600 полей. В Дельфе сваял глобальную переменную, типа Full_Colum_Names:='Colim_1,Colim_2,... Colim_J '; И потом курю бамбук: form1.pfibquery4.SQL.Text:='select '+Full_Colum_Names+' from FULLTABLE where '. Так как в процессе жизни Табли кол-во и наименование полей менялось не однократно. И править их приходилось только в одном месте, а не елозить по всему коду. Ну и меньше кнобкотыкать приходится с меньшим числом очепяток. :-) Минус №1. Надо менять константу при появлении новых полей Минус №2. Такая портянка дольше передается по сети Минус №3. Такая портянка дольше препарится сервером А в чем плюсы данного решения? ТС, ты главное не вздумай сделать что-то вроде Query.ParamByName('SomeDate').AsString := DateToStr(aDate). Ставлю на то, что это и есть причина твоих тормозов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 09:59 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхи ТС, ты главное не вздумай сделать что-то вроде Query.ParamByName('SomeDate').AsString := DateToStr(aDate). Ставлю на то, что это и есть причина твоих тормозов. Ээээ... а ты нормально на стуле сидишь? Ну тогда вооот: Код: pascal 1.
Было. Дату видишь)))) Правда, вчера местные товарищи с шутками прибаутками меня побили (даже ногами) и я ночью перебил: стало Код: pascal 1. 2. 3. 4. 5.
Ну и большинство Query в этом духе оформил, но еще не все, но самые частые. Да. Чуть, чуть процессор разгрузил. Но очень чуть, чуть))) Транзакции надо разбирать... но это атомный пи*ц. Пью кофе, курю и думаю переписывать модуль заново. И распаралелить всё сразу ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 10:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogа на FieldByName в цикле Arioch ругается как компилятор при делении на ноль на ParamByName тоже так что поправим и еще нa ошибку внутри цикла заложимся - добавим закрытие запроса даже в случае exception Любезный Лови простой пример. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 10:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogigs123Ну и External Table есть такое в Firebird http://www.ibase.ru/impexp/ Башка не варит, но если я правильно понял то это самый удобный вариант перекинуть данные. Это сырые бинарные данные. С одной стороны, если ты микроконтроллеры программировал, то разобраться сможешь. С другой - зачем делать сложно, если можно просто :-) Чуть что напутаешь - отлаживать и искать ошибку тольк осложнее будет В общем, лично я бы не советовал тебе завязываться на сырые неоформленные данные, сиречь External Tables Хотя смотри сам, конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 10:52 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Запускается десять разных клиентов которые тащат конкретные данные из конкретных источников. Но мне каждую строчку надо сверить с моей базой. Они наваливаются разом ... и привет ЦП. А зачем все разом? По одному нельзя? Ну или по три максимум :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 10:59 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
.. и потом, если все это делается автоматически (оператор не учавствует в разборе данных), и днем начинаются проблемы с реально работающей бухгалтерией, почему бы не запускать все это ночью? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogИ это по большому счету всех устраивает, "только скорость импорта нннадА". Так пусть выбирают, им надо "скорость импорта" или чтобы "ничего не менять". Только пусть они официально сами сделают выбор, а ты просто исполнишь. PS. Кстати, "нажимать на клиентах кнопку" может быть и не надо. Сделай службу (WinNT Service) котрая всегда у них работает и "ждёт сигнала" - чтобы твой сервер импорта сам её на клиентах запускал когда надо. Зря и не дальновидно прогнулся под самостоятельный импорт в "одно рыло". (не ожидал такого объема) Теперь переломить ситуацию сложно. И никто не ожидал. Теперь либо вертать объёмы обратно - либо приспосабливаться. Говорят, что у китайцев слово "кризис" сопадает со словом "возможности" :-) Сейчас твоя прога - "дитя природы, хошь дурное - но дитя", все её терпят, но всем она чужая. Админ оперативку на сервере зарезал, бухи хотят чтобы их не трогали но все само работало и т.д. На самом деле ТОЛЬКО сейчас ситуацию можно переломить. Только когда программа начинает захлёбываться и встаёт работа всей конторы - можно поднять статус этой приблуды до законной дочери, до важной части необходимой инфраструктуры. До того, в чем заитероесована и за что отвечает ВСЯ фирма. А вот пока "котлеты не подгорали" так и повода небыло ситуацию пересмотреть. И когда исправишь - снова повода не будет. Только когда всем жмёт, всем стало тесно - только в такой момент и осознается "шкурой" нужность программы и только в такой момент ситуацию можно пытаться менять. Перевесить импорт на бухов "а зачем, работает же... ну медленно, но работает" Вот и пуст ьони под этим подпишутся. Если колом программка встанет "Кто виноват?" хммм... Бухи - они категорически потребовали ничего не менять, несмотря на нарастающие тормоза и мои предупреждения. ...конечно если тебе удастся подписать их на какой-то конкретный и зафиксированный ответ, см. выше. ...а это тебе не удастся, если ты не "переломишь ситуацию" и не эмансипируешь программу до официального статуса обще-фирменно-важной. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneЕсть в одной Табле почти 600 полей. В Дельфе сваял глобальную переменную, типа Full_Colum_Names:='Colim_1,Colim_2,... Colim_J '; И потом курю бамбук: form1.pfibquery4.SQL.Text:='select '+Full_Colum_Names+' from FULLTABLE where ' DRY principle, это архитектурно Но... 1) почему переменную, а не константу ? ненадёжно... 2) почему только поля вынес в константу? если такая пьянка, то уж выносить начиная с select'a и заканчивая 'from FULLTABLE' - уж эти волшебные слова ещё реже меняются, чем столбцы :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogа вот базу же можно тупо как файл скопировать в резерв (при выключенном сервере)? Понятно с мусором будет и т.п. Но как самый быстрый вариант прокатит? Можно. Но я выше тебе уже говорил про nbackup - таки покури его. Получишь почти такую же скорость копирования - но при работающем сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ЛюбезныйТеперь вкратце - пример с параметрами для Insert. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ну про ParamByName я уже на ноль поделил, теперь буду про транзакции и ошибки. не надо вот так делать! во время работы программы могут быть оишбки, в том числе и на подтверждении транзакции. Так что схема выглядит слегка по другому, в самом простом варианте так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
[/quot] 2. Компоненту транзакции на чтение хорошо бы присвоить классические параметры читающей транзакции: read read committed rec_version nowait Этак ты его и на схему с двумя соединениями подпишешь DD В общем совет правильный, но мне кажется пока не актуальный. Достаточно будет просто явно сделать разумное ручное управление вокруг логических блоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:22 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
S.G... и потом, если все это делается автоматически (оператор не учавствует в разборе данных), и днем начинаются проблемы с реально работающей бухгалтерией, почему бы не запускать все это ночью? Долго объяснять. И запарился объяснять на каждой странице, если честно. Загрузка идет 3-5-8 раз в день. Данные нужны СРОЧНО!СЕГОДНЯ! СЕЙЧАС! По три базы разом отрабатывает в легкую. Но это порядка 2-3 часов. Сам понимаешь, 3 раза импорт по 3 часа... бухам работать вообще некогда. Время же уходит еще и на подключение к б.д. (отбой, ошибка, занят, нет инета, связь порвалась). А так по 10 штук хоть разом конектятся, уже плюс (верней, минус минуты).30 - 40 минут против 2х-3х часов. Пошел к задаче с другой стороны (за подсказки по Дельфи, Жарптице спасибо). Но решил разрулить сначала вообще общий принцип работы. Жду 1Сника может даст выгрузку в файл автоматом. (тогда будет проще. Утилита видит файл появился. Хватает его в фоновом режиме и разбирает) Таким макаром обойду загрузку не изменившихся баз и херову тучу не нужных проверок уже имеющихся платежек. Опять же надо выяснить есть ли в 1С датавремя последних изменений проводки?! В мыслях хранить дату последнего импорта по базе и хватать только измененные проводки... Ну короче, начал работу по импорту заново. ПС Вот так вот. Подхалтурил в свое время, "срубил пару штук по легкому". Атомный звиздец)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:22 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Любезный Это позволит стартовать ее всего один раз сразу после коннекта к базе данных и больше не трогать. казалось бы... на самом деле в некоторых условиях такая транзакция тоже течет ресурсами - например БЛОБами так что хотя бы пару раз в час надо "предёргивать" и "вечную" транзакцию :-) и даже если сейчас программы автора может быть по любому дольше и не работают всё равно, но на будущее ему лучше опасные советы давать с примечаниями :-) он ведь сейчас мотает это на ус как универсальный и всегда правильный рецепт на будущее ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:25 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog думаю переписывать модуль заново. И распаралелить всё сразу а вот это правильно безумству храбрых.... если ты себя ещё голову не расколошматил об стену дам тебе всеьма рискованный совет - попробуй найти и прочитать хорошую статью про Map-Reduce. Ну просто чтобы голову себе засрать распахнуть двери восприятия посмотреть на свои задачи под другим углом, научиться планировать программу по другому, как поток данных, а не поток действий. На функциональное программирование не обращай внимание - оно тебе тут не нужно и не осилишь. Обращай внимание на саму логику обработки потока данных, когда вместо типового процедурного "взять элемент данных, провести его через 10 операций, положить результат в копилку, взять второй элемент данных..." выстраивается конвейер "взять первое действие, провести через него все элементы данных; взять второе действие и провести через него все результаты первого действия; взять третье действие". И на то, что "неестественное" для процедурников и очень неэкономная по памяти организация программы в некотрх условиях оказывается и гораздо проще-понятнее и гораздо быстрее, чем "нормальная" оргaнизация. Ну а если oт MapReduce вернуться на землю, то напоминаю про 19450595 Чисто совет как в несколько раз уменьшить количество запросов и транзакций - в своих клиентах сразу группируй данные по разным PP. Или через интерфейс источника данных, если можно и достаточно быстро, или (например при вычитке текстовых файлов) - через временные файлы/таблицы. При этом для каждого отдельного PP выясняешь или запоминаешь минимумы и максимумы Даты и Расхода (или любых других столбцов по которым ты запросы делаешь) и вчитываешь с основного сервера не одну единственную запись, а сразу целую срезку, табличку под этот PP. 19450595 В результате у тебя количество запросов (и автоматических транзакций) будет количество разных PP, а не как сейчас - перемножение количеств PP и Расходов и Дат. В несколько раз меньше, если не порядков. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Подхалтурил в свое время, "срубил пару штук по легкому". Атомный звиздец)))) Какая же это халтура, если ты там корни пустил ? Халтура - это "сунул, вынул и пошёл" ( этические вопросы обсуждать не будем ). А ты не пошёл. А ты там поселился. В своей же халтуре. И при этом фактически приняв, что у тебя с этой программой теперь уже серьёзные отношения, не стал о ней по настоящему заботиться. "Вот это мы с Вованом тормознули" (с) КВН ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ЛюбезныйЧто тут важно: Ни то ни другое для пакетной обработки не важно. Это советы исключительно для интерактивных приложений. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНу и большинство Query в этом духе оформил, но еще не все, но самые частые. Да. Чуть, чуть процессор разгрузил. Но очень чуть, чуть))) Транзакции надо разбирать... но это атомный пи*ц. Надо смотреть, сколько за весь цикл выполняется запросов и каких. Если, к примеру, для каждой локальной базы крутится цикл по 100000 записей, для каждой из которых в рамках своей персональной транзакции выполняется запрос на выборку - тут параметры особо не помогут, конечно всё будет тормозить. Возможно, стоит рассмотреть вариант сделать предвыборку из главной базы, на основе нее предварительно отсеять некоторую часть данных из локальной базы, а потом оставшиеся уже проверять конкретно. Что же касается таблицы в памяти, с которого начался топик, то запрос, связанный с read read_committed транзакцией и которому сделали FetchAll, вполне сойдет за требуемый объект. Только вот если данные из таблицы должны будут меняться для каждой записи локальной базы, то смысла в этой "таблице в памяти" особо не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochdgdog думаю переписывать модуль заново. И распаралелить всё сразу ..."взять первое действие, провести через него все элементы данных; взять второе действие и провести через него все результаты первого действия; взять третье действие". ... Вот не поверишь. Пока жду административных решений и товарища ОдынЭсника. План переписи модуля как раз сложился к тому: А какого х*ра я каждую проводку фигачу?! Сводим весь импорт в 1 файл или таблицу... не суть. Но все в единый формат. 1. Сначала выкидываем все, что выкидывается впринципе. Тупо сравнением таблицы - дубли. Это вообще ОДИН запрос. 2. Потом проверяем из оставшегося чего нет в справочнике банков и других справочниках. Суем все партией. коммитим. 3.Тут немного логики... проверки, но они плевые для клиента-сервака. 4. Суем все оставшиеся проводки в базу. Пачкой. Коммит т.е. я так понял, ты как раз о таком разбиении... и какого х*ра я огород городил? (хотя оправдание есть, я не знал о существовании других источников импорта. И допиливал под сиюминутные требования. Теперь задача раскрыта полностью НАДЕЮСЬ ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 11:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, ну дык я тебя примерно к такой методе и подталкивал с самого начала, разбить на несвязанные куски обменивающиеся пакетами данных на каждом источнике данных запускается полу-импорт и создает стандартный пакет для отправки на центральный сервер, который уже окончательно импортирует все такие одинакового типажа пакеты. вопрос только в балансе, сколько процентов проверок делать на клиентах локально (а для этого потребуется заранее на сервере формировать подробные "требования по импорту", зато потом при новых рабочих местах все параллелится автоматически), а сколько таки на сервере. Грубо отшелушивать лучше всё же удалённо, на процессорах с источниками данных, а окончательную тонкую шлифовку уже можно на сервере. с буферами сервера та же фигня, сделаешь слишком много - в итоге только хуже получится, опять баланс ищи :-) с транзакциями то ж: и миллион транзакций по одной записи плохо и одна на миллион записей не лучше, а лучше тысяча по тысяче и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 12:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхизапрос, связанный с read read_committed транзакцией и которому сделали FetchAll, вполне сойдет за требуемый объек Только вот он подымет сложность алгоритма до O(N^2)... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 12:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochdgdog Подхалтурил в свое время, "срубил пару штук по легкому". Атомный звиздец)))) Какая же это халтура, если ты там корни пустил ? Халтура - это "сунул, вынул и пошёл" ( этические вопросы обсуждать не будем ). Не совсем так)) в 2013-2014 я и думать не мог, что я тут поселюсь))) А пришел я совсем по другому профилю. Правда направление с полгода как свернули и я остался не у дел. Ну не об этом сейчас ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 12:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхиМинус №1. Надо менять константу при появлении новых полей - Ну и чё ставо? (запихивая горсть попкорнв в клюф) У тебя чё, состав полей в табле меняется, как настрояниее у бушек, по 5 раз на дню? Го-стхиМинус №2. Такая портянка дольше передается по сети - Чё-чё? Как порнуху гонять по сети, так ничо не тормозит. А от разовых 6 килобайт - так пипец, как вся сеть ляжет. Го-стхиМинус №3. Такая портянка дольше препарится сервером - А ты и не дергай каждый раз. :-) Справочник он и в африке справочник. В данном случае для проверки дельт. - А есле полей нуна не под 600, а 500? Тогда чё? Бушь в каждой итерации тягать излишки на клиента, напрягая сеть и сервер. Ну не верится мну, что апдейтяться "все-все-все" поля. И тырканье "селект * фром Табля" больше грит о лености прогера и его не желания думать головом ДО. То есть не прогер, а кодер. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 13:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochDRY principle, это архитектурно - Ни фига! DIY principle со всеми втекающими... - Ы? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 13:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
И тырканье "селект * фром Табля" больше грит о лености прогера и его не желания думать головом ДО. То есть не прогер, а кодер. :-)[/quot] А вот сейчас обидно было. Ага. Сорри, за офтоп от полного профана: но тогда уж замути массив переменных, где будут перебраны все варианты полей.)) и потом эти переменные пихай в selectы. Вдруг в DBgrideh вывести придется, она очень любит чтоб последовательность полей совпадала с последовательностью в запросе. Нет ребят без обид, сколько прогеров, столько решений))) Тебе удобно? Ну и зашибись. Работает? Ну и не лезь.))) ПС на вооружение метод принял. Ничего сложного вроде, но вовремя сообразить не всегда же получается. При большом количестве полей попробую... но вот есть ли преимущество перед звездочкой? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 13:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog... но вот есть ли преимущество перед звездочкой? Так ни кто, кроме тебя не знает ВСЕЙ твоей задачи. А по сему - Каждый сверчок свистит как ему видится со своей колокольни. :-) Значит... ~70% свиста букв равны зеленым свисткам в воздух. :-) По этому и дают не точные рецепты и инструкции к действу, кроме тынцов в бумашки, а так-сзать направление для мыслей в правильную сторону, как и бумашках. PS 1: Если чё, я - не кладовщик. :-) PS 2: dgdog...но тогда уж замути массив переменных, где будут перебраны все варианты полей.)) - Ну и как ты, ваш-бродь, всю эту жуйню бушь лопатить под WEB, когда время на сформированный ответ не более 200 мсек? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 14:00 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogвот есть ли преимущество перед звездочкой? есть - это более "fail early" и более определённе поведение если ты потом таблицу поменяешь и в ней убьются некоторые столбцы - то у тебя "фиксированный2 запрос явно и сразу выдаст ошибку, а "звёздочка" сделает вид что так и хорошо и программа споткнеся уже где-то сильно позже. но вот тупой пример с потолка - мы обновляем данные по массиву record'ов, соответсвенно поля таблицы соответсвуют переменным членам record'a. Если поля в SQL-запросе заданы жестко (формируются из типа record'a) и какое-то из полей пропало в результате неудачного развития проги, сервер сразу скажет "нет такого столбца, иди лесом". А в случае звёздочки этого поля просто не будет в запросе. Предположим, далее ты для каждой строки перебираешь все столбцы запроса и их значения запихиваешь в MyRecordArray[i] в соотв. поля - тогда поле одноименное исчезнутому столбцу ты просто пропустишь и сам этого не заметишь, оно просто не будет обновляться из БД и получить "мусор в памяти". пример с потолка, но идею ругани, возможно отражает ---- Кстати, в достаточно современной Дельфи пробег по SQL-запросу можно организовать не только как FieldXXX.AsInteger и потом Query.Next, но иногда и таким трюком: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 14:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТолько вот он подымет сложность алгоритма до O(N^2)... В смысле, будут пробеги по всей таблице главной базы для каждой записи локальной? Ну да, зато сервак не тормозит :) 2 Di_LIne >У тебя чё, состав полей в табле меняется, как настрояниее у бушек, по 5 раз на дню? Нет, но меньше действий - меньше вероятность ошибиться/забыть. А если таких таблиц сто? >А от разовых 6 килобайт - так пипец, как вся сеть ляжет. От разовых нет, а ну как они раз в секунду перегоняются? От ситуации зависит >- А ты и не дергай каждый раз. :-) Справочник он и в африке справочник. В данном случае для проверки дельт. Опять же, по ситуации. У тебя шаблон использования такой, у кого-то - другой... >- А есле полей нуна не под 600, а 500? Тогда чё? Бушь в каждой итерации тягать излишки на клиента, напрягая сеть и сервер. Ежели не подтягивать все записи разом, то оверхед мб незначительный. >И тырканье "селект * фром Табля" больше грит о лености прогера и его не желания думать головом ДО. Леность - двигатель прогресса :) В общем, не думаю, что запрет на применение "*" должен иметь статус непогрешимой заповеди. Лучше уж в каждом случае руководствоваться здравым смыслом и целесообразностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 14:25 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхиЛеность - двигатель прогресса :) - Брехня! (из кины про Неуловимых) Миф для самоуспокоения лохов и гнилая отмаска, которая не катит. :-) Прогресс двигает только шевеление извилины. Но ни как не коденг "по шаблону из книшки". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 14:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochказалось бы... на самом деле в некоторых условиях такая транзакция тоже течет ресурсами - например БЛОБами ты серьезно хотелось бы душераздирающих подробностей с адресами, фамилиями, явками ... конкретными воспроизводимыми примерами ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 22:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ДокAriochказалось бы... на самом деле в некоторых условиях такая транзакция тоже течет ресурсами - например БЛОБами ты серьезно хотелось бы душераздирающих подробностей с адресами, фамилиями, явками ... конкретными воспроизводимыми примерами И вот о чем в моей ветке все эти люди спорят? О_о И кто эти люди? о_О Шучу, шучу. Я не все понимаю из ваших диалогов, но интересно да. На подкорку пишется, время придет вспонится, осмыслится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 07:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Отчитываюсь, кому интересно: 1. Сдвинув папироску в уголок рта поставил ультиматум начальству: Сейчас импортируем КАК ЕСТЬ. Паралельно полностью переделываю импорт. (дали срок две недели, хмыкнул сказал, что за две недели они получат очередную заплатку, но сам думаю, что впринципе, если не отвлекаться и обложиться грамотными примерами ... управлюсь) 2. Покурили с 1Сником, у него там в 1С есть "ПланВыгрузки". Т.е. при выходе из 1С бухгалтера внесшего свежие проводки, (теоретически) он выгружает все изменения в файл (XML) Который я считываю. Собственно ЭТО ОЧЕНЬ БОЛЬШОЕ ПОДСПОРЬЕ для меня. 2.1 не лезу медленным COM соединением к базам. 2.2 не лезу в базы в которых нет изменений. 2.3 получаю болеменее актуальные данные, а не тыркаю базу на проверки всех проводок за период. Вот баз 1С у нас большинство. Жду значит, решение от 1Сника до пятницы. Посмотрю в каком формате он может выкидывать данные и насколько эти данные актуальны. Вопрос к знающим(треп на тему приветствуется): Допустим есть у меня 200 потенциальных файлов на импорт (формат не суть, любой разберу, но скорей всего будет XML). Которые надо проверить, отфильтровать и только потом влить в основные таблички базы. Беда в том, что файлы появляются не одномоментно. Т.е. если бы они были все разом сформированы, считал их в TempTable, обработал процедурами и всё. Но, на деле будет так: появился файл, я его увидел, тутже кинулся считал. Кинул в TempTable обрабатываю... тут появляется еще 4 файла, один из этой же конторы, 3 других из других.... И чего бы сделать, в коем-то веке правильного? 1. Дать какой-то индекс данным из определенного файла и работать с этим куском (паралельно добавляя в TempTable другие файлы и обрабатывать их, каждый отдельно по индексу? 2. Под каждый кусок импорта создавать временную таблицу? И расстреливать ее по окончании обработки? 3. Другие варианты? (тут кто-то говорил про какие-то ГлобалТмпТабле... вроде, но мне не до них было, сейчас найду сообщение еще про них почитаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 09:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, фишка GTT в том что сами таблицы (метаданные) постоянные их не надо каждый раз создавать и удалять, а вот данные в них временные: либо на время сессии, либо на время транзакции. Соответственно каждая сессия/транзакция видит и работает только со своими данными. Почитать можно здесь и здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 09:41 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
еще вопрос, на сколько я правильно понял механизм: Есть Query для чтения. Дал ему отдельную транзакцию (read) "write nowait rec_version read_committed " Select в query забит жестко, не изменяется никогда. Стартую транзакцию. Выполняю Запрос. (Жарптица строит план, выполняет, отдает данные) Получаю данные обрабатываю... Закрываю транзакцию. (Вот здесь, ЖарПтичка похоронит план да? и не будет держать его в кэше? Я правильно понял?) ( как правильно? Стартавать транзакцию Реад перед выполнением запроса, или стартануть ее скажем при открытии формы и обрывать по закрытию формы? Как дольше держать план выполнения запроса в кэше?) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 09:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, 1. план получается при препарировании запроса. Поэтому до тех пор пока ты не грохнешь свой query, или не закроешь коннект, или не сделаешь ему повторный prepare, или не вызовешь unprepare с планом ничего не будет. 2. Если у тебя основные действия будут делаться в ХП, то планы её внутренних запросов кешируются во время загрузки процедуры в кеш метаданных, который для классика будет жить до конца коннекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 09:48 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, 2. Если у тебя основные действия будут делаться в ХП, то планы её... Понял. Спасибо. Но нет это не ХП, это справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят (ну тут еще и DbGridEh, но пока хочу правильно сделать сами запросы, выжать максимум). Т.е. при закрытии транзакции Птичка план оставит до поры до времени? (FB Classic 2.1) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, фишка GTT в том что сами таблицы (метаданные) постоянные их не надо каждый раз создавать и удалять, а вот данные в них временные: либо на время сессии, либо на время транзакции. Соответственно каждая сессия/транзакция видит и работает только со своими данными. Почитать можно здесь и здесь (похоже) То что доктор прописал. Ушел эксперементировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, план запроса никак не связан с транзакцией и временем её жизни ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:06 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
по GTT? (ответ на вопрос сэкономит мне час на эксперименты) Создавая CREATE GLOBAL TEMPORARY TABLE MYSUPPERGTT в одной копии программы, следить чтоб другая копия одновременно создавала CREATE GLOBAL TEMPORARY TABLE MYSUPPERGTT_1 Или это проблема сервера? И я в каждой копии создаю CREATE GLOBAL TEMPORARY TABLE MYSUPPERGTT и CREATE GLOBAL TEMPORARY TABLE MYSUPPERGTT и они не пересекуться (для каждой копии программы свой набор данных)? А как это скажется на мусоре? А производительность сильно просядет от GTT (это ведь надо создать ГТтаблю. Запихать туда данные. Желательно проиндексировать... выполнить пару ХП... грохнуть ГТтаблю) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:09 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Попутный вопрос: ГТТ создается в памяти (ну если логику включить)? Какая интересно логика у разработчиков и как это конкретно работает... Форум КЛАСС. Где я раньше был? Спасибо вам ребята. Все пинки в основном в нужную сторону ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПопутный вопрос: ГТТ создается в памяти (ну если логику включить)? Какая интересно логика у разработчиков и как это конкретно работает... Вопрос снят. Нашел сообщение Dimitr где то в других постах "для начала они в страничном кеше ФБ, как и любые другие таблицы. Затем в кеше оси. И уже потом на диске." ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:26 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, надо не просто на буквы глядеть, но и хоть чуток разобраться что тебе пишут. GTT создаётся ровно один раз и не в твоей программе, а в любом средстве администрирования IBExpert, isql и т.д. Метаданные (поля и их типы) общие, а данные раздельные. И в плане мусора там всё норм. Данные GTT хранится не в самом файле БД, а во временных файлах или оперативной памяти. За временем жизни временных файлов следит сам FB. Ну релиз ноты почитай уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 10:29 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, надо не просто на буквы глядеть, но и хоть чуток разобраться что тебе пишут. GTT создаётся ровно один раз и не в твоей программе, а в любом средстве администрирования IBExpert, isql и т.д. Метаданные (поля и их типы) общие, а данные раздельные. И в плане мусора там всё норм. Данные GTT хранится не в самом файле БД, а во временных файлах или оперативной памяти. За временем жизни временных файлов следит сам FB. Ну релиз ноты почитай уже. Хм. Уже пинают. И это еще Di_LIne и Arioch спят... те выйдут вообще на ноль поделят ,проиндексируют и спишут как ненужную GTTешечку. Денис - да я вкурсе, что надо читать. Что никто конкретную задачу не разгребет кроме недотепы-автора. Но руки и глаза разбегаются, времени катастрофически не хватает. Я вот сюда (на форум) пришел с одной задачкой... а напинали так, что я сижу и перелопачиваю свой код вообще в других модулях. И ДА, помогает.))) Тема GTT в голове, но руки не доходят, ну и кидаю вопросы которые могут возникнуть. За тычок в сторону GTT признателен. За объяснения, даже сквозь зубы СПАСИБИЩЕ. Твои ссылки про GTT прочитал по диагонали. Пока руки заняты перебивкой всяких Query вертятся вопросы, вот и кидаю их, а вдруг кто ответит и хоть часть инфы копать не надо будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogэто справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
я бы вот сам про GTT когда бы узнал, и что это применимо к моим задачам. А так раз пнули, два пнули, башкой в унитаз макнули... О тооочно. Во! то что нужно - GTT)))) Так что не стесняйтесь))) Уяснить надо много. ОЧЕНЬ МНОГО в короткий срок: от правильной конфигурации Птицы, до правильного написания кода в приложении. Чередую задачи, чтоб не свихнуться))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхиdgdogэто справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. Яндексы-Хренадексы не вкурсе запроса "firebird разрядная сетка". Ладно, отложим понимание этого. Или подскажете со временем или... или Яндекс вспотеет в выходные. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:20 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ДокAriochказалось бы... на самом деле в некоторых условиях такая транзакция тоже течет ресурсами - например БЛОБами ты серьезно хотелось бы душераздирающих подробностей с адресами, фамилиями, явками ... конкретными воспроизводимыми примерами копай в обе стороны от 14633271 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:30 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogХм. Уже пинают. И это еще Di_LIne и Arioch спят... те выйдут вообще на ноль поделят ,проиндексируют и спишут как ненужную GTTешечку. щаззз стану я попусту индексировать то, что все равно под списание? а потом индексы еще чистить? так спишешься бе церемоний! :-P ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:38 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, если поделить ТСа на 0, то он в теории должен в бесконечность превратится ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:41 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхиdgdogэто справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. Просто я не могу описать все задачи. Отсюда конечно непонимание... Эти query еще срабатывают после Post в табличке. И пересобирают PickListы. Поэтому если уж залез бух править эту табличку, то вызываются эти запросы часто. Переписал, пересобрал. За одно нашел не проиндексированный справочник))) Чисто субъективно, все начало работать быстрее. Господа ээээ... НОРМАЛЬНЫЕ программисты, (одел каску, залажу под стол... ибо можете ведь и покалечить) PfibDataset.FetchALL это не по феншую??? Это зло? (110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру, "ВСЕ И СРАЗУ!") ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:41 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogГо-стхипропущено... Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. Яндексы-Хренадексы не вкурсе запроса "firebird разрядная сетка". Ладно, отложим Он имеет в виду, что сколько бы у тебя в запросе строк ВСЕГО не было - на экран влезет несколько десятков, в память подтянется (чтобы быть под руками заранее) может быть еще пара сотен. И всё. Остальные данные как правило гриду не нужны, пока юзер не прокрутит его сильно-сильно вниз (что в 90% случаев не делается, люди не читают строки тысячами как правило, а уточняют отбор) Исключение - если ты например в гриде включил какие-нибудь навороты типа "показывать общее количество строк" - тогда да, пока всю выборку до конца не вычитает, рисоваться не начнёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхиdgdogэто справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. А если там сортировка без индексов? пока ВСЕ строки не выберешь - не отсортируешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:43 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, если поделить ТСа на 0, то он в теории должен в бесконечность превратится Угу... представил себя с татухой на лбу "Warning: division by zero!" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, Обычно выбор всех строк (FetchAll) с навигацией по индексу будет медленней, а первой порции (обычный Fetch) быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogБеда в том, что файлы появляются не одномоментно. Т.е. если бы они были все разом сформированы, считал их в TempTable, обработал процедурами и всё. Но, на деле будет так: появился файл, я его увидел, тутже кинулся считал. Кинул в TempTable обрабатываю... тут появляется еще 4 файла, один из этой же конторы, 3 других из других.... а почему нельзя дождаться появления ВСЕХ файлов? все равно тебе надо будет контролировать, что все иточники данных отдуплились, и если откуда-то ответа нет (хотя бы и пустого ответа "нет новостей") - то трезвонить админам разбираться просто ты собирался устроить "глобальную оптимизацию" по поиску дупликатов между клиентами ещё до того, как вся эта бочка мёда польется на сервер. Я не знаю, да и ты сам наверное не знаешь, насколько много данных бы так почистилось, но возможно некоторая задержка чтобы получить все ответы была бы вполне компенсирована общим ускорением после? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:48 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, если поделить ТСа на 0, то он в теории должен в бесконечность превратится это если он изначально не ноль, а то ведь и в случайное число может.... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру как именно они ему нужны? что именно он с ними делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogPfibDataset.FetchALL это не по феншую??? Это нормально если он делается один раз. Это ни к чему если датасет работает как источник для грида. За постоянное перезаполнение PickList надо отрывать руки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogа напинали так, что я сижу и перелопачиваю свой код вообще в других модулях. И ДА, помогает. просто ты сюда зашёл в типовом состоянии x-y-z www.gunsmoker.ru/2008/10/x-y-z.html но к счастью, в отличие от большинства намёртво заклинившихся на этом, тебя попустило уже после одного дня поэтому дальше с тобой имеет смысл говорить а вот если бы ты начал твердолобить типа "не отвлекайте меня, мне просто надо создать таблицу в памяти клиента", то было бы наоборот, форум бы вымер и тебя бы обходили стороной ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, если грид с сортировкой, но не умеет менять ORDER BY в самом запросе, то он поневоле будет делать FetchAll - ибо куда ему деваться для сортировки на клиенте... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, EhGrid умеет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch...а почему нельзя дождаться появления ВСЕХ файлов? Я тебя понял. Да ты прав (был бы). Но базы Москава - Новосибирск... Там уже отдуплились, там еще спят... по "этой" базе сегодня вообще движухи нет и файла нет. Эти загрузку из банка сделали только утром. А там вообще бух болеет и файлов не будет... там бух перебила несколько платежек недельной давности которые уже есть в нашей базе... Разом никак. Только паралелить запросы к файлам. Логика представляется такая: Висит утилитка на сервере, мониторит каталоги. Каталог такой-то (для экспорта-импорта определенной базы 1с) файл появился? Да. Запускается подпрограмма импорта. Считал файл. Файл удалил (1сина понимает, что я получил последний экспорт) Утащил данные на сервер. Разбираю их по тихому.Закрыл подпрограммку импорта. Но утилитка может увидеть 3-5-20 файлов одновременно. Вот и задумался, толи в очередь ставить, толи... ну про ГТТ еще почитаю. (это все еще теория. просто соображаю в какую степь траншею копать) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochdgdog110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру как именно они ему нужны? что именно он с ними делает? в dbgrideh фильтрами елозит. Фильтры " От начала времен" и "по всем столбцам". Я это на откуп отдал DBGridEh. Ну не передергивать же запрос каждый раз в PfibDataset? Не прав, бей. Только не по почкам... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:04 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogPfibDataset.FetchALL это не по феншую??? Это нормально если он делается один раз. Это ни к чему если датасет работает как источник для грида. За постоянное перезаполнение PickList надо отрывать руки. Это почему? Справочник меняется динамически (при паралельном импорте. при изменении записей) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСчитал файл. Файл удалил (1сина понимает, что я получил последний экспорт) не удалил, а перенёс в другую папку для обработанных файлов. Иначе в случае ошибки будет очень весело. А уж из той папки можно периодически вычищать, когда файлы полностью потеряют актуальность. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНо нет это не ХП, это справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят (ну тут еще и DbGridEh, но пока хочу правильно сделать сами запросы, выжать максимум). PickList - то же combobox ? И ты в него пихаешь 110К элементов? Обычно стандартные виндовые контролы этого не сильно любят. Ты можешь разделить операцию: сначала вычитать всю таблицу в массив ( или, если Delphi 2010+ ее лучше в TList<record-type> ), а потом из массива заполнить Picklist ? И на этих трёх точках поставить замеры времени в программе http://www.cryer.co.uk/brian/delphi/howto_time_code.htm http://delphi.about.com/od/windowsshellapi/a/delphi-high-performance-timer-tstopwatch.htm http://stackoverflow.com/questions/6030586/calculating-the-speed-of-routines http://stackoverflow.com/questions/14834534/delphi-how-to-make-timer-in-milliseconds-or-nanoseconds-with-start-stop-functi и посмотреть реальные траты времени на оба эти шага ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, EhGrid умеет при правильной настройкЕ, правиьлной увязке с компонентами-запросами и т.д. а примеры кода мы тут уже видели, так что рабочая связка не гарантирована хотя я тоже надеюсь, что это сделано правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисdgdogСчитал файл. Файл удалил (1сина понимает, что я получил последний экспорт) не удалил, а перенёс в другую папку для обработанных файлов. Иначе в случае ошибки будет очень весело. А уж из той папки можно периодически вычищать, когда файлы полностью потеряют актуальность. Согласен полностью. Но веселье с непонятками в файлах (его например и бух может удалить и вирус покосить) уже предусмотрел импорт "конкретной базы" за конкретные даты вручную. Через те же COMсоединения. Косяки с файлами не моя беда. Вот вам бухи импорт вручную если чуете подлянку. Остальное к сисадмину (куда делся файл?) к 1Снику (почему не сформировался или сформирован не правильно). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochесли грид с сортировкой, но не умеет менять ORDER BY в самом запросе, то ....то это правильный грид и FetchAll здесь - наименьшее зло. dgdogСправочник меняется динамически (при паралельном импорте. при изменении записей) Справочник настолько динамичен, что изменяется ежесекундно? Протухло что-то в датском королевстве... Или это вообще не справочник. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:11 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogДопустим есть у меня 200 потенциальных файлов на импорт (формат не суть, любой разберу, но скорей всего будет XML). Которые надо проверить, отфильтровать и только потом влить в основные таблички базы. - Гуанамо вапроз! :-) В среднем HTML-файлик(страничка) парсится и вгоняется в БД (с полным расчетом релеватности) за 3 (три, числительное) сек. Итого - 10 мин +/- 10%. И не канифоль себе моск их_ем_еле форматом... В нем "накладные расходы" на теги под писят % подскакивают. А при большенстве цифирок - и овер 50% получишь в легкую. Оно тебе надо лопатить?;-) dgdogКоторые надо проверить... Ты сам-то понял, чё написал? И как ты бушь их проверять, если не знаешь чё в них(в каженном файлике) правильно должно быть? И из-за оной кривой строчки - признаем весь файлик левым и отправляем по Е-мылу главбушке на личный ящег СМС-кой в 3 ночи мессагу с текстом: - На, мол, голубушка, разбирайся с ентой фигней! Тута, здеся и не медля. А иначе фигушки чё к 9 утра получишь. А если не успеете - абуза уйдет генерльному. И не гри, что я тебя не предупреждал. (в конце обязательно жирный смайлик "курю бамбук") ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, у меня подозрения что у него из параллельных импортов одни и те же записи могут меняться. Если это так, то идея тухлая и можно сразу в морг, задумка автора помрёт на обработке конфликтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogв dbgrideh фильтрами елозит. Фильтры " От начала времен" и "по всем столбцам". Я это на откуп отдал DBGridEh. Ну не передергивать же запрос каждый раз в PfibDataset? Не прав, бей. Только не по почкам... а фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять? изменение запроса плохо тем, что курсор улетает в начало грида, не фиксируется на текущей строке (случай, что она тоже убивается новым фильтром - особый) возможно FetchAll - при фильтрации гридом - можно делать не сразу, а при включении первого фильтра после открытия запроса. Если фильтры каждый раз заново заполняются, конечно. Тогда и для буха будет видно, что программа не просто тормозит, а реагирует на её последовательные действия - вот данные прогрузились, а вот начали фильтровать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochСимонов ДенисArioch, EhGrid умеет при правильной настройкЕ, правиьлной увязке с компонентами-запросами и т.д. а примеры кода мы тут уже видели, так что рабочая связка не гарантирована хотя я тоже надеюсь, что это сделано правильно сортировка, фильтрация идет локально на клиенте. Запросов в базу не летит. 100% и да фильтр немного переписал уже не помню в каком pas файле EhLib. бух пишет только начало искомого значения... звездочка подставляется автоматом. Нет, с DBGridEh все норм. Есть косяк в ДБГриде поля не в том порядке как в запросе. Говорят дает прирост производительности чуток(клиенту), но пока эксперементировать нет времени. Работает и пусть пока работает. Буху сказал. Хотите 120 тысяч строк разом, пожалуйста, вот вам 5 секунд на открытие формы. Через год у нас будет порядка 500 тысяч строк и килограмм записей в выпадающих списках полей... ну вы тогда вообще покурить успеете. Ничего не ответила золотая рыбка. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochа фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять?... Нет не сохраняются. Получаю новые данные. Фильтры пусты. Данные летят по плану Натураль ибо, "все надо". Первоначальная сортировка (натураль) по уникальному ID... Дальше бух уже соображает неистовую фильтровку и гоняет полученные данные и в хвост и в гриву. (загрузил ей данные и всёё, только справочники перечитываю в пиклисты) Нужна ей адекватная версия данных, жмет кнопку "обновить". И начинает все с начала ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисDimitry Sibiryakov, у меня подозрения что у него из параллельных импортов одни и те же записи могут меняться. Если это так, то идея тухлая и можно сразу в морг, задумка автора помрёт на обработке конфликтов. Нет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. (банк закрылся, под его биком открылся другой... было такое. А у меня по бикам прибиваются... тут косяк возможен, но очень редко) остальное врядли. (но подумаю вечером. спасибо за наводку на возможные грабли) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЕсть косяк в ДБГриде поля не в том порядке как в запросе. - Какой-такой нафех ДБГрид? Ни одного визуал-контры тут и близко не лежало! Ты чё собрался показывать в этой "конвертилке" и главное кому?! Серверу? Маршрутизатору? Или сменному инжинёру, что служба медом не казалась? :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:29 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogпо "этой" базе сегодня вообще движухи нет и файла нет не аргумент лучше пусть присылают пустой файл, просто ради подтверждения что они не умерли и не набухались а работают в штатном режиме там интернет постоянный или dial-up, можешь ты в любую секунду по своему хотению связаться с каким-нибудь их сервером ? Логика представляется такая: Висит утилитка на сервере, мониторит каталоги. Каталог такой-то (для экспорта-импорта определенной базы 1с) файл появился? Да. Ну мне преставляется более нормальной, когда твои программы первичного импорта постоянно, службой windows как тот же firebird, работают на источниках данных. Периодически по своему графику сервер их всех обзванивает (проверяя заодно, что все живые) и говорит "давай апдейт!", а они его автоматически формируют (бухи же не хотят давить лишних кнопок, ты говорил) и выливают на сервер, даже если файл будет пустышкой ("я клиент такой-то, у нас тут всё как вчера, новостей нет"). конечно если добросовестные бухи на местх сами хотят после особо крупных операция вручную инициировать выгрузку вне графика - то дело другое Ну и Висит утилитка на сервере, мониторит каталоги. - это называется polling, не всегда хорошо (разве что будешь заодно мониторить доступность самих серверов с каталогами, двух птиц одним камнем). Я бы сделал наоборот: * на сервере расшаренная на приём папка обновлений * каждый клиент формирует файл-апдейт у себя ( и считает его контрольную сумму типа md5/sha1, если в файле нет встроенной самопроверки как в zip/7z/rar ) * потом под временным названием(достаточно другое расширение например, или какие уж ты сам шаблоны названий файлов выберешь) его заливает на сервер (а сама эта процедура может тоже быть долгой, если связь медленная. Не хотелось бы чтобы импортироваться начал неполный файл) * потом рядом кладет файлик с контрольной суммой * потом переименовывает временный файл в постоянный Соответственно для сервера * можно не перечитывать по таймеру каталоги снова и снова, а просто попросить у Windows сообщать когда в локальной(!) папке такой-то появятся файлы с таким-то названием * не будет ситуации, когда сервер подвис на несколько минут просто пытаясь прочитать расшареную папку неудачного клиента, и в это время не обрабатывает других клиентов у которых все готово ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:31 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne.... dgdogКоторые надо проверить... Ты сам-то понял, чё написал? И как ты бушь их проверять, если не знаешь чё в них(в каженном файлике) правильно должно быть? ... Извини, в непонятки ввел. Ну ятут одной рукой в Delphi, одним глазом на Йбазе: "Проверить" не правильность файла - это пусть у экспортирующей стороны голова болит. А записи "а есть такая проводка в моей базе уже? А не изменения ли это старой проводки?" как-то так. А сами файлы чего их проверять. Получил ошибку? Разбирайтесь с экспортом 1С. Структура файла будет оговорена до тонкостей в пятницу И ТОЧКА (от возможностей 1Сника зависит.) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, а если не могут, то какого хрена у вас в PickList новые данные могут появится во время импорта? Что вообще такое PickList, что туда попадает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogAriochа фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять?... Нет не сохраняются. Получаю новые данные. Фильтры пусты. Данные летят по плану Натураль ибо, "все надо". Первоначальная сортировка (натураль) по уникальному ID... Дальше бух уже соображает неистовую фильтровку и гоняет полученные данные и в хвост и в гриву. (загрузил ей данные и всёё, только справочники перечитываю в пиклисты) Нужна ей адекватная версия данных, жмет кнопку "обновить". И начинает все с начала ну я так и думал поставь себе флажок, был уже FetchAll или нет в датасете на AfterOpen этот флажок сбрасывай при включении фильтров проверяешь флажок и если надо делаешь FetchAll с установкой флажка и часики на экране, часики - http://www.deltics.co.nz/blog/posts/tag/delticshourglass - пока золотой рыбке твои слова про "покурить" - абстрактная фигня, криворук со своей тормозной программой кочевряжится, она их через неделю забудет. А вот когда форма открылась отноительно быстро, а включение фильтров явно вызывает дополнительные тормоза - тогда она уже будет понимать что к чему и думть стоит оно того или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. мне тут недавно сказали, у филиалов одного банка могут совпадать ИНН вот блин десяток разных юр-лиц - и один ИНН на всех, только КПП разные ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneИ не канифоль себе моск их_ем_еле форматом... В нем "накладные расходы" на теги под писят % подскакивают. и пусть подскакивают - винчестер все равно медленнее процессора и оперативки хотя можно и JSON или YAML глянуть конечно но мне сомнительно чтобы два варианта SGML'я - HTML и XML сдается мне, так как-то HMTL и XML не в равных условиях сравниваешь ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Структура файла будет оговорена до тонкостей в пятницу И ТОЧКА (от возможностей 1Сника зависит.) А я тебе как раз и про структуру файлика - в том числе. Ты вводишь св систему еще одну "переменную" неизвестной и теде не подвластной природы. ;-) Бо в самом файлике "битой" может оказаться одно значение, строка, блок (и тп) ну и весь целиком его фтопку. Плюс (туда-сюда) формат одной записи (в терминах БД) может меняться с временем. Бухам же делать неча, вот им и подкидывают постоянно всякие изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogбух пишет только начало искомого значения... звездочка подставляется автоматом. В этом случае PickList должен заполняться не при открытии формы и тем более, не при каждом изменении справочника, а только при раскрытии этого самого списка. Причём заполняться уже с этим вменяемым фильтром. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНе прав, бей. Только не по почкам в переводе на английский это примерно "you may click but do not click [mouse] buttons" Источник - гуртовщики мышей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochсдается мне, так как-то HMTL и XML не в равных условиях сравниваешь А ты бамашку-то возьми и прикинь: среднюю длину чисел (в шт. цифр) и кол-во знаков служебных тегах описывающих что это за число. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНо утилитка может увидеть 3-5-20 файлов одновременно. если она их УЖЕ увидела - и они УЖЕ финализированы а не наполняются по ходу - то кажется лучше их вычитать все и одним пакетом запустить но если какой-то файл из этих лежит "в плохом месте" и будет выкачиваться с обрывами и рестартами целый час - то лучше ну его нафиг итого - усложнение кода импортера, который должен на лету определять ссоставы пакетов и многопоточно тянуть несколько файлов, и обрабатывать ошибки срва соединения.... вот и поэтому тоже я бы выгрузку файла орагнизовал наоборот, каждый клиент свой локальный файл выгружают на общий сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneAriochсдается мне, так как-то HMTL и XML не в равных условиях сравниваешь А ты бамашку-то возьми и прикинь: среднюю длину чисел (в шт. цифр) и кол-во знаков служебных тегах описывающих что это за число. :-) а потом сравнить с соотношением скорости чтения из сети/из файла/из оперативки, "перестать беспокоиться и полюбить бомбу" а если еще SAP-парсер вместо DOM-парсерa исхитриться прикрутить... если файлы одинаковой сложности, то ты что-то с парсером не то делаешь, например может быть заставляешь валидацию XML проводить по схемам, а на HTML того же не делаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:52 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, а если не могут, то какого хрена у вас в PickList новые данные могут появится во время импорта? Что вообще такое PickList, что туда попадает? Новый клиент. Неизвестный до селе Банк. Банк получатель (таже петрушка) Клиент открыл новый счет в другом банке или в этом же. (эти группируются хотябы) Есть страшный пиклист Юрики... всего не объясню, но там тонны записей вываливаются. Сегодня дал сутки подумать бухам "нужен этот пиклист или нет"... по моим данным НЕТ. Ну вот так оптимизируемся, как могу, как могу... что успеваю ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne, html слишком вольный формат, да и предназначен он для отображения, а не передачи данных. xml сложен и избыточен. Тем более при парсинге через DOM жрёт хренову тучу памяти, а парсинг через SAX довольно сложен. А вот json мне нравится, правда в старых Delphi не было поддержки из коробки, а в новых есть ощущение, что то что они там нагородили будет работать не шибко шустро (не пробовал). Ещё есть варианты плоские файлы с разделителем или с фиксированной шириной (как для External table). Ещё есть dbf, но он мне не нравится тем что стандартов на dbf целая тонна, каждый городит что хочет, да и с кодировками бывает геморрой. Но я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Так просто для обзора, если вдруг интересно кому https://quoderat.megginson.com/2007/01/03/all-markup-ends-up-looking-like-xml/ "On a Core2 2.5Ghz Desktop, VTD-XML outperforms DOM parsers by 5x~12x, delivering 150~250 MB/sec per core sustained throughput." http://blog.synopse.info/post/2011/06/02/Fast-JSON-parsing ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:59 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochdgdogНет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. мне тут недавно сказали, у филиалов одного банка могут совпадать ИНН вот блин десяток разных юр-лиц - и один ИНН на всех, только КПП разные Так и есть. Эти грабли пройдены еще на стадии импорта реестра банков. Там адский пипеец. Прибивал по бикам+инн+кпп. и... перематерился когда у одного банка забрали лицензию А ЕГО БИК отдали новому банку. О_о Благо бухгалтерию "отпустило" и они согласились хранить только название банка и головной инн, бик... если взбрыкнут, не знаю, что буду делать. И еще они блеа*ь последнее время взяли моду переименовываться из ЗАО в ОАО из ОАО в ЗАО со сменой инн, без смены инн... Спасибо, что для меня это не очень критичный справочник. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСегодня дал сутки подумать бухам "нужен этот пиклист или нет"... по моим данным НЕТ. Ну вот так оптимизируемся, как могу, как могу... что успеваю опять же, если как-то исхитриться и сделать задержку на формирование пиклиста 1) необязателтельной - не используешь пиклист, нет и задержки 2) явно видимой, с чем это непосредственно связано ....то бухи сами начнут естественным образом про это думать я eh-grid не знаю, но если можно сделать загрузку по требованию - 19461540 - то мысль правильная. тронул пиклист - любуйся на "часики" на экране и думай, так ли сильно надо было его трогать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochтронул пиклист - любуйся на "часики" на экране С правильным фильтром отзыв при раскрытии выпадающего списка меньше реакции пользователя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Дениса в новых есть ощущение, что то что они там нагородили будет работать не шибко шустро (не пробовал). ну а если еще использовать вкусности вроде автоматического заполнения record'ов или объектов из XML через RTTI - так и вообще будет весело, но виноват будет парсер в новых - как и все в новых Delphi - ошибка на ошибке так что rule of thumb - если для какого-то фукционала есть известная FLOSS-библиотека и "из коробки" - лучше выкинуть коробку и брать FLOSS соотв. для JSON в основном используют три либы: SuperObject - из-за "ленивого" простого API и вменемой скорости Synopse mORMot XML - из-за заточенности на максимум скорости. lkJSON - не знаю почему, не трогал, но популярен ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch... например может быть заставляешь валидацию XML проводить по схемам, а на HTML того же не делаешь - Ой-ой-ой... От твоего кидания терминами суть процесса не меняется. Полюбасу - берется файлик и вычитывается от первого до последнего байта, с анализом "а ты кто?".... Такшта... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Вопрос на засыпку то Олл: - Чем отличается кодер и прогера? Тем, что на "ой, нада сделать ко вчера!" прогер с начала думает "как сделать, штоп ни чего не делать?", а кодер - "Да я ща, за 6 сек наваяю!" :-)) Симонов ДенисНо я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники Это - подход кодера. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисЕщё есть dbf, но он мне не нравится тем что стандартов на dbf целая тонна, каждый городит что хочет, да и с кодировками бывает геморрой. в основном стандарты различаются наворотами типа разных форматов индексов, что важно для работы, но не важно для чтения TDBF.sf.net сами данные в основном читает вполне неплохо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochдля JSON в основном используют три либы Ни "в основном", ни в "дополнительном" списке использующих JSON 1C не значится. Не умеет она ничего кроме XML. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисНо я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники так же как и слюбым другим источником исходных данных, например с "папкой с тестовыми квитками от банковских операций" - что дали то и жуй а вот "прожевав" это автор вполне может "выплюнуть" свой собственный унифицированный "пакет обновлений", который будет одинаковой структуры для любых источников. И там он сам может выбирать - хоть XML-zip, хотья Json-zip хоть много-dbf-zip ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochдля JSON в основном используют три либы Ни "в основном", ни в "дополнительном" списке использующих JSON 1C не значится. Не умеет она ничего кроме XML. я же не про 1с с первичными данными понятно - какие они есть, такие и есть, и всё я про промежуточный общий формат, в который перед окончательным импортом в FDB будут сводиться/конвертироваться даные из любых типов/форматов источников ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, а нафига оно надо собирать ещё какие промежуточные форматы? Ты ещё XSLT ему предложи чтобы из XML в любой формат преобразовывать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneПолюбасу - берется файлик и вычитывается от первого до последнего байта, с анализом "а ты кто?" ...а если он не только парсится ? или даже не столько парсится, сколько выполняются другие операции поверх парсинга ? типа валидации и построения дерева объектов, без чего можно бы и обойтись. цитату я приводил, скорость парсера в 2-3 раза выше скорости чтения винчестера ( в идеальном дял посленего случае ) - так что ограничение все равно не в парсере будет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:21 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
[quote Симонов Денис]а нафига оно надо собирать ещё какие промежуточные форматы? 1. чтобы не дублировать код импорта в БД ни по программам, ни по компьютерам 2. чтобы можно было вести истрию обновлений 3. чтобы можно было раследовать ошибки, с помощью п.2 Симонов ДенисТы ещё XSLT ему предложи чтобы из XML в любой формат преобразовывать у него задача противоположная, так что ты cильно не в кассу с XSLT ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:23 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch - что дали то и жуй - Ыщо один...:-))))) PS. Для разрядки. Как-то давным давно пристала фирма "хотим экспорт-импорт с вами!" Ну лана, раз хОчите и денег даете, так пуркуа бы не па?... Давайте через пару дней встретимся и согласуем тех. моменты. В назначенный срок приехал к ним. Ихний сам-глав и главный кодер. Дают мне листок с 2-мя строчками "ТЗ-импорт" и в 3 строки "ТЗ-экспорт". - Хм... Отдал им свою бамашку: 15 страниц "ТЗ-импорт" и 25 стр с "ТЗ-экспорт". Внимание вапрос: - Кто курил бамбук, а кто переплюнул Сизифа? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:30 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochцитату я приводил, скорость парсера в 2-3 раза выше скорости чтения винчестера ( в идеальном дял посленего случае ) - так что ограничение все равно не в парсере будет Отсыл к скорости винта - прыжок в сторону. - Щетай это константой и выноси за скобки, как в математике. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:33 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne, с хрена ли выносить за скобки, если в нрмальном парсере к окончанию загрузки файла 90% его уже будет разобрано ? ну а если и выносить, то тогда время парсинга считай не в секундах, а в процентах от ВСЕЙ задачи в целом ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne - Кто курил бамбук, а кто переплюнул Сизифа? а смотря чей ТЗ выбрали в итоге я вот не думаю, что 1С согласитс на ТЗ написанный автором ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Я это к тому, штоп прекратить кидание на вентилятор терминов. А перевернуть задачу: - Пусть 1-Цешник выгружает дельты, в удобном для меня формате, в удобное место. - Не, ну ачёткова? (одно слово) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochа смотря чей ТЗ выбрали в итоге я вот не думаю, что 1С согласитс на ТЗ написанный автором Пытаешься опровергнуть постулат: - Кому больше надо, тот и пашет? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochс хрена ли выносить за скобки, если в нрмальном парсере к окончанию загрузки файла 90% его уже будет разобрано ? - Сие не есть факт, мистер Дюк. (кина про Неуловимых) Это - оптимистичный прогноз. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne, ну если сравнивать пессимистичные парсеры - то я со всем согласный, кривые парсеры XML на порядки хуже хороших парсеров JSON ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneВопрос на засыпку то Олл: - Чем отличается кодер и прогера? Тем, что на "ой, нада сделать ко вчера!" прогер с начала думает "как сделать, штоп ни чего не делать?", а кодер - "Да я ща, за 6 сек наваяю!" :-)) Симонов ДенисНо я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники Это - подход кодера. :-) Ща обидно было. И да у меня варианта нет. Или лазить самому по базам. Или 1сники формируют файл как могут. А я уже потом к этому формату сведу и текстовые файлы и выгрузки из других БД. Всем ответить не могу. Да даже прочитать всех не могу. Вот: Есть у них там выгрузка (написал один товарищ) и выложил всем. которая устраивает 1Сника. Там ему напильником делать особо нечего, только подсунуть мой запрос для выгрузки МНЕ НУЖНЫХ данных. Работает эта шляпа так: Бухгалтер поработал, внес изменения в платежки (импортировал из банка или т.п.) если ЗАКОНЧИЛ на сейчас глобальные внесения. Жмет кнопку. Формируется файл с изменениями в платПоручениях. я его забираю. грохаю. Если бух забыл жмякнуть вовремя кнопку. То такой файл будет сформирован при закрытии 1С. (если бухгалтер забыл жмякнуть кнопку и держит 1с сутками открытую а там критические и срочные данные - это проблема бухгалтера, с начальством РЕШЕНО, карательные меры придуманы и будут доведены до пользователей) Если я файл не грохнул(не забрал) еще, а изменения уже есть. Файл будет дописан... и так до посинения пока 1С при старте не увидит что файла НЕТ. С этого момента она (при изменениях и только при них) сформирует новый файл только с актуальными с последней версии файла(уже полученного мной) данными. 2. Вижу так: Файлы с удаленок летят в каталоги на сервере (ну не может 1Сник переименовать файлы)))) ему проще по каталогам их разложить). Сижу (сервисом) на серваке: Курю бамбук и отъедаю ресурсы... бах. В каталоге XXX появляется файл "тоЧеНадо.xml". Стартую утилиту импорта с параметрами "d:\\xxx\тоЧеНадо.xml" и потащил его в GTT. Удачно унес? Ок. Переношу исходный файл в архив. Грохаю файл(сигнал 1с = я тебя понял, этот импорт получен. Следующий импорт с этого места) Вот немного не ясно как поведет себя ГТТ когда 2 таких таблиц прилетит одномоментно... но это просто надо опытным путем на игрушке смотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:52 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЩа обидно было. А что бы было время на "пообижаться", сядь и не спеша продумай формат этих файликов. Что тебе(!) потом было проще с ними разбираться и вносить изменения/дополнения при расширении данных/объемов и тп. В опчем - речь про ТЗ одноЦешнику. А не кидаться терминами, типа "в XML-формате". Бо каждый это понимает по своему и доказать обратное ты не сможешь, если нету ТЗ. А он, цешник, за тебя думать не будет и тем более лишнее напрягаться, кое и нафех ему не надо. А ТЗ на экспорт/импорт утверди у начальства. Штоп прикрыть свою точку G, если чё. ;-) А это "чё", с 90% вероятностью наступит. И потом бум вместе "обижаться" граммов эдак три-по-стописят. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch...я вот не думаю, что 1С согласитс на ТЗ написанный автором - а вот так можешь? 1C - нет. - а в текстовый? 1c - возможно. Но не факт. - а как можешь? 1с - ну XML родной формат. - ну х*й с тобой пусть xml. а давать только измененную инфу с последнего импорта можешь? 1c - нет. Ну... быть может, если ты мне как в интернет магазинах будешь ответный файл давать че у тебя есть и сколько, а чего у тебя нет... ... - Я вот тут порылся в вашей ё*аной ОдынЭс. Смотри если два плана выгрузки завести и следить ... вот так, так и так... вот ссылка на форум 1с там все что надо чувак сделал для стороннего интернет магазина. Обмен файлами. За актуальностью следит сам. Только вместо запроса товара надо чтоб выгружались платежки ВСЁ. 1с - эээ... ну я попробую. На одной базе... но не обещаю. И будет как у него xml. - Дай ченить я уж разгребу формат. Все лучше чем к базам коннектиться... 1с - попробую к пятнице ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochГо-стхипропущено... Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. А если там сортировка без индексов? пока ВСЕ строки не выберешь - не отсортируешь... Вообще речь шла про подготовку планов, а не выполнение запроса вместе с фетчем. А про разрядную сетку - это значит, что величина настолько мала, что не помещается в отведенный вещественный тип (стремится к нулю, проще говоря :) ) По поводу PickList: если я правильно понимаю, сейчас весь справочник фетчится, перегоняется в stringlist и присваивается соотв свойству столбца грида? А почему бы не сделать Lookup, который будет связан с датасетом, фетча записи при необходимости? Да и фильтрацию можно запросами реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogа давать только измененную инфу с последнего импорта можешь? 1c - нет. Врёт. Ещё в 8.0 была штатная процедура экспорта только изменённых документов, используемая для репликации. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovdgdogа давать только измененную инфу с последнего импорта можешь? 1c - нет. Врёт. Ещё в 8.0 была штатная процедура экспорта только изменённых документов, используемая для репликации. Знаю, что лень ему (или некогда). У него отпуск с первого числа. Ребенок маленький. Баз по городу (на содержании) штук 20-30. Обновления постоянно летят. Везде разные версии... там допили, тут переработай тут напиши доп.обработку. А тут я такой "срочно кнопку. срочно импорт." Как бы понятно все. Про механизм "репликации" сам посмотрю и у него спрошу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:22 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСтартую утилиту импорта с параметрами "d:\\xxx\тоЧеНадо.xml" и потащил его в GTT. Удачно унес? Ок. Переношу исходный файл в архив. Грохаю файл ............... Вот немного не ясно как поведет себя ГТТ когда 2 таких таблиц прилетит одномоментно... но это просто надо опытным путем на игрушке смотреть Что-то у тебя с логикой работы GTT не складывается Если "утилита импорта" будет только переносить в промежуточную табличку то они (временные таблицы) тебе не помогут ибо по завершении транзакции(коннекта) все данные в них грохнутся. Если же "утилита" будет полностью обрабатывать все данные, т.е. пересла их в GTT и обработала (раскидала как надо и куда надо) то тогда GTT это то что надо. Вот только при этом "Грохать файл" надо после обработки всех данных, а не после их переноса в GTT. ну и по поводу "как поведет себя ГТТ когда 2 таких таблиц прилетит одномоментно" - хорошо поведет себя тобишь об этом беспокоиться не надо "никто/ничего и не узнает" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog- а вот так можешь? 1C - нет. - а в текстовый? 1c - возможно. Но не факт. - а как можешь? 1с - ну XML родной формат. - ну х*й с тобой пусть xml. а давать только измененную инфу с последнего импорта можешь? 1c - нет. Ну... быть может, если ты мне как в интернет магазинах будешь ответный файл давать че у тебя есть и сколько, а чего у тебя нет... ... (скип)... 1с - попробую к пятнице Как там у Классика? - Вдарил раз. Специалист! Видно по нему.... :-))) (Что, в опщем-то, и предполагалось по дефоулту.) Раз ни как не магёт, пусть дельты пихает в отдельную таблю. А если он и этого... автор Не смогешь -- кого винить? -- Я должон тебя казнить. Государственное дело -- Ты улавливаешь нить?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:29 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
m7m...Если же "утилита" будет полностью обрабатывать все данные, т.е. пересла их в GTT и обработала (раскидала как надо и куда надо) то тогда GTT это то что надо. Вот только при этом "Грохать файл" надо после обработки всех данных, а не после их переноса в GTT. ну и по поводу "как поведет себя ГТТ когда 2 таких таблиц прилетит одномоментно" - хорошо поведет себя тобишь об этом беспокоиться не надо "никто/ничего и не узнает" Понял спасибо. Утилита ГТТ (планирую) по подключению. Т.е. Утилита подняла исходный файл, вживила данные в ГТТ. Запустила ХП. Доработала остатки напильником. Отдала команду перенести все что осталось из ТТГ в по табличкам. Проверила. Отпустила базу. Закрылась (эта версия ТТГ схлопнулась)... вроде так. В какой момент грохать файл? Это же сигнал для 1с, что импорт получен. Вот я забрал данные и обрабатываю, а ну как 1С в имеющийся ещё файл чего дописать решит. Дописала, я не вкурсе. Обработал данные и грохаю файл. 1С ведь думает, что она мне и последние строчки передала... да... Вижу: или дату изменения файла проверять перед импортом и в момент удаления файла (если не сошлись, то импорт переделать) или тащить файл в темповую папку и оттуда имортировать уже. А 1с пусть дальше че хочет то и создает. (контроль папок сделать по таймеру, ну пусть раз в 5-10 минут. (чтоб если че успеть отработать прошлую версию точно такого же файла) Вот это огород))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:34 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСтартую утилиту импорта с параметрами "d:\\xxx\тоЧеНадо.xml" и потащил его в GTT. Удачно унес? Ок. Переношу исходный файл в архив. Нет не так. Ты так и не понял что такое GTT и для чего оно предлагалось. Правильно как-то так: 1. Стартую утилиту импорта с параметрами "d:\\xxx\тоЧеНадо.xml" 2. Start Trasaction 3. потащил его в GTT. 4. Следом запускаем ХП, которая проверяет дубликаты и раскладывает данные по полочкам. 5. Всё OK? Тогда COMMIT. Переношу исходный файл в архив. 6. Произошла ошибка? Тогда ROLLBACK, сообщаем об этом юзеру или тупо пишем в лог, а файл остаётся на своём месте или переносится в папку для корректировки. В данном случае GTT это просто временный буфер для быстрой переливки данных как есть на сторону сервера, а уж в ХП он пусть разбирается что делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogВ какой момент грохать файл? Перед тем, как начнёшь читать из него данные. То есть переименовываешь его, пробуешь открыть на эксклюзивный доступ и только если получилось - начинаешь читать данные. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис... 2. Start Trasaction... ...а уж в ХП он пусть разбирается что делать. Болеменее понятно. Но ведь Start Trasaction ты явно указал - это если ГТТ по транзакии. Вот (ссу я если честно) на транзакцию вешать ГТТ... если намудрю с транзакциями. А я намудрю))) то не понятно чем дело кончится. Думаю ГТТ по сессии запускать. Стартанула утилитка. Подключилась к базе - вот рабочая ГТТ... и как не намудри с транзакциями, будет медленней, сильней загрузка ЦП, но хоть ГТТ будет жива. Закрылась утилитка. Потеряла коннект с базой. ГТТ списали в утиль. Вроде так (хотя НЕ ВНИКАЛ Я еще в ГТТ - это только между дел мысли) Про ХП: всю логику проверок я в ХП не осилю. Тупо знаний не хватит внутренних возможностей и грамматики ХП. Мне лично, проще часть функций оставить за утилиткой импорта. пусть приложение соображает и кидает SQL запросы. Ну конечный контроль остается за приложением, прежде чем отпустить ГТТ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogВ какой момент грохать файл? Перед тем, как начнёшь читать из него данные. То есть переименовываешь его, пробуешь открыть на эксклюзивный доступ и только если получилось - начинаешь читать данные. Разумно. Очень. И проверяем, что 1С отцепилась уже от файла. И файл из под носа 1С уже выдернут... годится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:54 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Зелёный свисток в воздух: -А потом не получится, что еще дельту из дельто-файлов вылущивать надо? Чёй-та не нравится мне енто ни фига... Костыль к гипсу, который сполз с головы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 14:56 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
А если в файлике ошибки? Как алярмы бить, куда варнинги слать? И определять "точку" ахтунга? Ну штоп потом, после правки, опять с нее начать... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:02 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneЗелёный свисток в воздух: -А потом не получится, что еще дельту из дельто-файлов вылущивать надо? Чёй-та не нравится мне енто ни фига... Костыль к гипсу, который сполз с головы. Как вариант вводить поле с датой изменения в 1с обговаривали. Тогда я храню датувремя последнего импорта и в след раз беру из файла только с момента последнего импорта... но пока отказались. Т.к. нашли решение поизящней(чужое правда, ну если 1сник сумеет переработать, то не суть). Почему-то он не хочет обращаться к журналу. Там же есть (я почитал насколько смог) журнал изменений. Сказал, что это очень долгий и нудный запрос получится. Ну фик знает. Поживем увидим. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:04 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, а без ХП тебе GTT как собаке 5 нога. Нахрена сначала что-то закидывать на сервер, чтобы потом оттуда же и читать тоже самое, и вновь писать на сервер? про транзакции http://www.ibase.ru/ibx/#tran_use про возможности и синтаксис ХП Firebird_2_5_Language_Reference_RUS И вообще без чтения документации и статей ничего хорошего у вас не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:04 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneА если в файлике ошибки? Как алярмы бить, куда варнинги слать? И определять "точку" ахтунга? Ну штоп потом, после правки, опять с нее начать... Если в файлике ошибка. Кричим бухам АХТУНГ. Вот вам бухи ручной импорт (выбираете базу. Выставляете дату с ... по... Жмете импорт) По СОМ соединению со сверкой всех платежек за данный период. Вот вам бухи сисадмин - спросите с него почему файл битый мож вирус, а мож при бэкапе ночном че произошло? Вот вам бухи 1Сник спросите с него почему файл неправильно сформирован. Ну вы тут разбирайтесь, а я пошел кофе пить ибо моя прога 150тыщ раз эти файлы читала, читает и читать будет... Был бы правильный формат (и косо посмотреть на 1Сника) и не битый файл(и косо глянуть на сисадмина). Утрированно конечно, но как-то так. Чето за*бало за все отвечать и все предвидеть. Мнеб свой фронт работ осилить ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:09 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, мне все равно не нравиться. Слишком много не определённостей, от меня (так сказать) не зависящих. Нешта бы 1Цшик лил дельты в отдельную Таблю. Ни какой тебе пакетной обработки (со всем прелестями сего действа). Тихо-мирно, степ бай степ, по строчно. Отработал строку, пометил "фтопку ее". Перешел к следующей. Чем тебе не "персональный журнал изменений" для прикрытия точки G? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, а без ХП тебе GTT как собаке 5 нога. Нахрена сначала что-то закидывать на сервер, чтобы потом оттуда же и читать тоже самое, и вновь писать на сервер? про транзакции http://www.ibase.ru/ibx/#tran_use про возможности и синтаксис ХП Firebird_2_5_Language_Reference_RUS И вообще без чтения документации и статей ничего хорошего у вас не выйдет. "а без ХП тебе GTT как собаке 5 нога. " Тут недопонимаю. Надо мне из двух таблей ГТТ и рабочей выбрать дубли и грохнуть их в ГТТ. Условия могут быть разные. Логика формирования условий как бы есть в приложении-импорта. Собрать такую логику в ХП мне сложно. Сформировать Delete с конкретными условиями в Query как два пальца. Да чуть дольше в выполнении. (сборка и т.п. но логика дольше обрабатывается) Но на клиент же данные не полетят. Отсылаю Delete *** на сервер. И сервер сам уже там шуршит между таблицами. Не прав, стукните. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogКричим бухам АХТУНГ. Вот вам бухи ручной импорт... Вот вам бухи сисадмин... - Сам бушь по комнатам за ними бегать и объяснять куда им бежать? А комп она мошь ва-аще вырубила из 220, ушла в декрет и тп. - Тогда чё? - Пипец, ты приплыл как кур в ощип... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСформировать Delete с конкретными условиями в Query как два пальца. Да чуть дольше в выполнении. (сборка и т.п. но логика дольше обрабатывается) Но на клиент же данные не полетят. Отсылаю Delete *** на сервер. а теперь посчитай сколько раз ты такие сформированные delete на сервер отошлёшь. Ну не хочешь ХП, может тебе и MERGE подойдёт. Хотя с такой боязнью SQL тебе и его не осилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:28 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LInedgdogКричим бухам АХТУНГ. Вот вам бухи ручной импорт... Вот вам бухи сисадмин... - Сам бушь по комнатам за ними бегать и объяснять куда им бежать? А комп она мошь ва-аще вырубила из 220, ушла в декрет и тп. - Тогда чё? - Пипец, ты приплыл как кур в ощип... А варианты? Заменить собой 1сника, сисадмина и бухгалтера? У меня есть формат даннх экспорта, который дал 1сник (сам отступил, сам отвечает, и пофиг что при обнновлении что-то там слетело, мое какое дело?... я что СкайНет должен запустить, чтоб все проблемы предвидела и если че отправляла терминаторов на разборки) Вот архивы прошлых экспортов из 1С все норм - а тут вата понеслась. Есть Сисадимин. Он дал папки. Объем диска согласовали. Хранение БэкАпов этих папок на нем. Ну пусть следит за вирусами, бэдблоками и т.п. Есть бухгалтер который ведет свою тему. Ушла в декрет,в отпуск, в морг оставь напарницу, введи в курс дела. Нет!? К директору и там разбирайтесь кто кнопку не нажал и почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:28 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogА варианты? Я уже не раз сказал про Таблю-Дельт. dgdogУ меня есть формат даннх экспорта, который дал 1сник А ты за чем и зачем их брал, эти файлики? ;-) Пусть 1Цшник ведёт Таблю-Дельт именно в этом формате. :-) Какая в попу ему разница - в файло или таблю? В таблю всяко проще и, заметь, всем(!) спокойнее. Чем гемор екпорт_ымпорт через промежуточный формат с временным хранением. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne...Пусть 1Цшник ведёт Таблю-Дельт именно в этом формате. :-) Про таблю-Дельт я тут не очень понимаю. Это то что он отдал в экспорт? И с какого места дальше пойдет экспорт? Это предусмотренно в варианте с его выгрузкой по "плану выгрузок". Там потому два "Плана выгрузок" и используется, что контролят друг друга... Но мне с этой табли вообще не легче при падении экспортного файла по ошибке. Я САМ до этой табли не доберусь и никому ничего не докажу. 1сник быстрей её подправит)))) Но скорее всего я чего-то не догоняю про Таблю-Дельт ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne...А ты за чем и зачем их брал, эти файлики? ;-) Потому что программер на 1с такой же программер (ну пусть по Вашему кодер;) ) как и я. Ну удобней ему так, в таком формате. Не обломлюсь. ЕСли меня окончательно не устроит, думаю найдем общее решение. Серединку- на половинку. Времени у него перед отпуском нет. Все лучше чем он скажет "НЕТ - это не возможно" и буду COMмами по базам скакать. ПС Да сегодня запустил по 20 баз одновременно)))) Ну то, что я бухгалтерию отправил чай пить это фигня. Но я еще и отожрал порядочную часть лицензий 1С )))) Народ нервно соображал, что происходит. Сидел молчал в тряпочку. Больше так делать не буду. Но да, ваши ребята советы и те статьи которые успел почитать, про Query, Транзакции... разгрузил ЦП. Не прям вооооообще, но разгрузил. Спасибо. Уперся теперь во время подключения COM. В количество лицензий 1С. И то что COM соединение еще живет 15-20 минут после того как я его бросил (если были проводки), но в последнем, скорее всего надо делать какой-то выход, а не просто бросать соединение и делать новое. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:56 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
открой для себя race condition https://ru.wikipedia.org/wiki/Состояние_гонки и про понятие "атомарности операций" почитай dgdogСижу (сервисом) на серваке: Курю бамбук и отъедаю ресурсы... бах. В каталоге XXX появляется файл "тоЧеНадо.xml". Стартую утилиту импорта с параметрами "d:\\xxx\тоЧеНадо.xml" и потащил его в GTT. при этом параллельно чтению файла утилитой импорта одновременно 1С пишет в файл, а твоя утилита его читает, хотя он еще до конца недописан. результат плохо предсказуем, с какой ноги сегодня сервер встал - так и будет меняться поведение. dgdogУдачно унес? Ок. Переношу исходный файл в архив. Грохаю файл(сигнал 1с = я тебя понял, этот импорт получен. Следующий импорт с этого места) 1. 1С пишет данные, медленно и печально, написало для примера 800 строк 2. В этот момент просыпается утилита импорта и начинает это всё импортировать. Это тоже не мгновенно происходит. 3. Пока она импортирует, 1С записывает еще сотню строк. 4. Но утилита импорта считала файл, пока в нём было ещё только 800 строк и строки 800-900 не видит 5. Утилита заканчивает импорт 800 строк и удаляет файл с 900 строками 6. 1С видит, что файл обновлен, и строки начиная с 901-й пишет в новый файл 7. Итого - строки 800-900 никуда не попали и были выкинуты Еще почитай про https://en.wikipedia.org/wiki/Multiple_buffering Когда ты играешь музыку у звуковой карты есть несколько буфферов. Один из них она гонит на динамики и никто болше не имеет права его трогать. В другой буффер плеер распаковывает звук из муз-файла и никто этот буфер больше не трогает. Когда звуковая карта доедает старый буфер - ей подсовывают следующий уже готовый, а отыгранный буфер ставят в очередь на заполнение новыми данными. Но никогда писатель (mp3 плеер) и читатель (звуковая карта) не суются в один буфер. Или один из них или другой не имеет а это права. То же самое с видеокадрами в игрушках-стрелялках, один буффер показываем, другой буффер строим, когда гтово делаем атомарный flip-flop Ещё почитай про мнгопоточность - MPI, Erlang, Actor Model Общее правило - любой пакет данных (переменная, работающая функция, файл и т.д.) принадлежит только ОДНОМУ рабочему. Когда одни рабочий передает пакет другому - он теряет если не доступ к пакету, то возможность его изменять как минимум. В твоем примере - пока есть шанс, что 1С может писать в файл, импортер не имеет права его трогать. А чтобы у импортера появилось право читать файл - 1С должно тот файл финализировать и переключиться на другой новый файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 15:56 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogПро таблю-Дельт я тут не очень понимаю. В эту таблю (а не "файл экспорта") записываются изменения вносимые бушками. По кнобке, автоматом али "по плану выгрузок" - сути не меняет. Главное что бы ты мог до нее добраться своей софтинкой. Это решает твою засаду из начального посыла - приходиться самому рыскать в поисках дельт. Твоя софтинка периодически лезет в нее, читает все (или часть) New-записей, обрабатываем и помечает их как отработанные. Ни какого гемора с промежуточным "носителем", парсингом, откатами данных, обработки ошибок. Практически тот же "журнал". :-) Но, так сказать, для ДСП. Ее, таблю-дельт, можно/нужно и зачищать (периодически) от старья безбоязненно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch... 1. 1С пишет данные, медленно и печально, написало для примера 800 строк 2. В этот момент просыпается утилита импорта и начинает это всё импортировать. Это тоже не мгновенно происходит. 3. Пока она импортирует, 1С записывает еще сотню строк. 4. Но утилита импорта считала файл, пока в нём было ещё только 800 строк и строки 800-900 не видит 5. Утилита заканчивает импорт 800 строк и удаляет файл с 900 строками 6. 1С видит, что файл обновлен, и строки начиная с 901-й пишет в новый файл 7. Итого - строки 800-900 никуда не попали и были выкинуты Да об этом сегодня задумался на пару минут, между дел. Решение вижу: 1. Увидел файл. Пробую получить монопольный доступ. Переименовываю. 1с его потеряла, пусть пишет следующий, а я с этим разберусь пока. 2. Увидел файл. Пробую утащить его в темпПапку. 1С пусть куда хочет пишет 3. если первые два метода не сработают. Ну ок. Увидел файл. Считал датувремя последнего изменения. Хватаю файл - импортирую. Перед удалением файла проверяю датувремя последнего изменения. Даты не сошлись ПЕРЕИМПОРТИРОВАТЬ. Ошибка при загрузке импорта (не хватает ноды или типа того) = переимпортировать по таймеру через 2 минуты. Сошлись? Удалить файл Жду варианты файлов которые даст 1Сник. Потом буду серьезно думать и искать возможные грабли. Xml - одно, текстовый файл другое, DBF вообще третье. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog1. Увидел файл. Пробую получить монопольный доступ. предположим, не получилось, что тогда ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, хрень. Пусть 1С сначала импортирует файл во временный каталог и как закончит переносит его в основной, который твой сервис уже будет смотреть и пытаться брать его с экслюзивным доступом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogВсе лучше чем он скажет "НЕТ - это не возможно" и буду COMмами по базам скакать. А фигле ему грить "Нет", если он согласился на файл экспорта? Тебе не надо будет скакать по 20 базам одновременно, а только в Таблю-Дельт залесть. И лицензию слопаешь только одну. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LInedgdogПро таблю-Дельт я тут не очень понимаю. В эту таблю (а не "файл экспорта") записываются изменения вносимые бушками. По кнобке, автоматом али "по плану выгрузок" - сути не меняет. Главное что бы ты мог до нее добраться своей софтинкой. Это решает твою засаду из начального посыла - приходиться самому рыскать в поисках дельт. Твоя софтинка периодически лезет в нее, читает все (или часть) New-записей, обрабатываем и помечает их как отработанные. Ни какого гемора с промежуточным "носителем", парсингом, откатами данных, обработки ошибок. Практически тот же "журнал". :-) Но, так сказать, для ДСП. Ее, таблю-дельт, можно/нужно и зачищать (периодически) от старья безбоязненно. Ну вкурил наконец-то. Это то что мне 1Сник предлагал: А ты мне как в интернет магазине ответный XML формируешь что прошло, что импортировал. Но пока от этого отказались, очень уж занимательна теория выгрузки "двумя планами выгрузки" 1С лишнего не даст, сама контролирует это. Лишняя движуха с дельтами и дельтой дельт))) избыточна. Пойдет косяк с конкретной базой (будет конечно когда-то) импорт в ручном режиме исправит от точки, до точки (он какбы и формирует дельты, сверяет чего есть, чего нет за период и добавляет, исправляет - работает зараза медленно. Но работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:22 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochdgdog1. Увидел файл. Пробую получить монопольный доступ. предположим, не получилось, что тогда ? Таймер. Офф-Он. Через пят минут захожу в каталог "о файл лежит! Берем. Переименовываем". Не получилось?! Таймер. Офф-Он. За пару суток нет импорта из этой БД. Бухи прибегут. Ищем, каталог, ищем файл, разбираемся. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:25 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, хрень. Пусть 1С сначала импортирует файл во временный каталог и как закончит переносит его в основной, который твой сервис уже будет смотреть и пытаться брать его с экслюзивным доступом. Логично. С 1с не знаком. В ней это сложно интересно реализовать? Попрошу 1сника ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЭто то что мне 1Сник предлагал: А ты мне как в интернет магазине ответный XML формируешь что прошло, что импортировал. - Не-а... :-) Ни кто ни кому ни чего не шлет. /Если только не по конкретному адресу. :-)))/ Его дело, 1Цшника, записать в эту таблицу и забыть/забить. Всё, он передал как в твою зону ответственности. Твое дело - считать их нее данные и перелопатить. С тебя тошь взятки гладки: - Какие данные получил, то и перелопатил. А пральные они или нет - это в 1Цшнику. Бо нефех всякую кАку пихать. Чёткое разделение зон ответственности и ни каких лишних телодвижений. А то взяли моду - слать друг другу XML-ки, туда-сюда... Главное - высоко содержательные: - Ну ты чё? - Я ничё, а ты чё? :-)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 16:38 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, ты бы заканчивал с флудом, а то зрители уже уставать начали :) "А дальше что? Дальше ваши рыжие кудри примелькаются, и вас просто начнут бить."(с) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 18:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Там, где замешана 1С (и 1С основная программа для работы конторы) - лучше все делать в ней, одни только периодические реквизиты чего стоят - в том смысле на 1С это удобно, а реализовать это в мелких утилитах муторно - не стоит оно того... Но если уж надо продолжать поддержку, то обговори с админом и эсником такой вариант: результаты выборок с баз необходимо слать по эл. почте (автоматизировать отправку по мэйлу для 1С это тоже не проблема), почтовик на основе темы письма выкладывает прикрепленный файл в определенную папку ну и далее как желаешь Плюсы сам наверное видишь - выгрузки не теряются (конечно если почтовый ящик не почистят), можно отслеживать "забывающих" высылать выгрузки и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 18:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Поигрался немного с ГТТ. Возник вопрос стоит ли делать индексы изначально на ГТТ? На малом объеме данных не ощутил разницы. Предполагается ипользовать ХП, Delete, Select и Merge к этой табличке. Сейчас в ГТТ (при каждой копии) летит 20-50 записей. Но хочется избежать граблей через год-два-три если объемы возрастут. Хотелось бы ответ от практиков. И еще, а Как ведет себя триггер gen_id(ГТТ_id,1)? Используете ID поле в ГТТ? (так-то нафиг не нужно, но опять могу лажануть и чего-то не продумать) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 08:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogКак ведет себя триггер gen_id(ГТТ_id,1)? также как и для обычных таблиц. dgdogВозник вопрос стоит ли делать индексы изначально на ГТТ? Используете ID поле в ГТТ? всё зависит от того что ты делаешь с этой GTT. Отсюда не видно dgdogСейчас в ГТТ (при каждой копии) летит 20-50 записей. Это вообще ни о чём. У людей по 100000 записей и даже больше без труда обрабатываются ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 09:39 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Как ведет себя триггер gen_id(ГТТ_id,1)? Используете ID поле в ГТТ? Это не триггер, это функция, и онa вообще не использует никакие таблицы, а работает напрямую с генеpатором "ГТТ_id" То, что его название похоже на таблицу и столбец не значит ничего кроме твоего удобства. Ты вообще можешь его назвать так же, как какую-нибудь таблицу - и это опять же не будет значить ничего. Ты можешь с одного генератора брать номера дя разных таблицы, если хочешь. Или вообще не использовать его значения для номеров, а для чего-то другого (например остановки длинных select'ов). В SQL-стандарте и большинстве других серверов (где она вообще есть) аналогичная штука делается называется SEQUENCE и NEXT VALUE FOR <sq-name> ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 11:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochВ SQL-стандарте и большинстве других серверов (где она вообще есть) аналогичная штука делается называется SEQUENCE и NEXT VALUE FOR <sq-name> В Firebird начиная с 2.0 точно также. GENERATOR оставлено для обратной совместимости. А вот gen_id даёт чуть больше чем NEXT VALUE FOR, что с одной стороны хорошо (особенно при массовых INSERT), а с другой может привести к тому что генератор могут декрементировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 12:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денис, Знаю, но при этом забыли current value ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 12:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Знач так: ВСЕМ спасибо кто пинал в нужную сторону. Переработал логику полностью. Если помните то работал построчно "в каждом импорте"... переработал логику так: Бегу по базам(экспорта) забираю к себе все данные - обрабатываю оптом во временной таблице (МЕРГЕ, ДОИН и т.п) СПАСИБО ЧТО ПНУЛИ В НУЖНУЮ СТОРОНУ. Время импорта из баз 1С сократил с полутора часов до 20и минут ))) потерял немного в зарплате(за срыв сроков), но решение мне нравится - круче ХРЕН кто сделает))) допиливаю мелочи. Есть вопрос пинайте: Есть таблица в которой есть столбец NAMEBLYAD со значениями: Вася Пупкин Вася Пупкина Вася Мупкин Надо получить: Пупкин Вася Пупкина Вася Мупкин Вася Вопрос: "Вася" срезать у меня получается, а вот перезаписать... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 23:11 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
ой не знаю как добавить или исправить))) Парни: вопрос КАК ВАСЮ ПУПКИН превратить в ПУПКИН ВАСЯ чисто одним запросом... (ну мозгов не хватает...) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 23:26 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogой не знаю как добавить или исправить))) Парни: вопрос КАК ВАСЮ ПУПКИН превратить в ПУПКИН ВАСЯ чисто одним запросом... (ну мозгов не хватает...) - О как! Тебя меньше жив, чем задавлен бюстгалтериями. :-) То есть "Притвет!". ;-) По сути: - Фигней не майся, да. Не просто так есть ФирстНаме, ЛастНаме и даже МидлНаме. 100500 раз рассматривали на примере принятой в РФ системе именований резидентов. В частности - сложносоставные и сложноподчиненные, а не только ФИО. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 23:35 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Абы не тереть 100501 раз - вот те тынц ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 23:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 23:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, На клиенте, наверно, проще. Но если хочется именно FB, то есть функция POSITION, находишь номер пробела, а дальше используешь SUBSTRING. Может ещё придётся использовать TRIM, но это нужно проверять. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 12:53 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
$10 и я готов потратить 10 минут обеда на написание хп. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 12:56 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky$10 и я готов потратить 10 минут обеда на написание хп. А кто потом будет издержки покрывать будет, ась? - Ыстчо один нечетатель. :-) - Абисняю... Что "Иван Програмерыч Писаревский", что "Писаревский Иван Програмерыч" - морда лица физическая (в окошке кассы для ЗП) - одна и та же. Но Сон Он Чи и Он Чи Сон - два разных человека, резидента РФ. А теперь растолкуй мне, бест_талковаму, как ты такое разрулишь? По кол-вы пробелов - иди и чти тынцы выше с конкретными примерам.... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 13:30 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Есть тз: dgdogЕсть таблица в которой есть столбец NAMEBLYAD со значениями: Вася Пупкин Вася Пупкина Вася Мупкин Надо получить: Пупкин Вася Пупкина Вася Мупкин Вася Di_LIneА теперь растолкуй мне, бест_талковаму, как ты такое разрулишь?Ничего не буду, нашел строку с двумя словами, поменял местами слова, если слов не 2, то на выход отправляется строка из входа. Строка с тремя словами это другое тз и цена другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 14:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, ХП не нужна. И вообще надо быть добрее. Просто бесплатно помочь человеку. в следующий раз он сам подумает и сделает. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 17:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Hello, Kreatorxxi! You wrote on 22 ноября 2016 г. 17:33:43: Kreatorxxi> в следующий раз он сам подумает и сделает.нет Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 17:34 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
вот кстати да, Абрамович - это отчество или фамилиё ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 19:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, у меня есть знакомый с фамилией Кузьмич ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 19:30 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyСтрока с тремя словами это другое тз и цена другая. Остап Сулейман Берта Мария Бендер-бей? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 19:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneОстап Сулейман Берта Мария Бендер-бей? :-)Для обсуждения ТЗ предлагаю почасовую ставку. KreatorXXIПросто бесплатно помочь человеку.Здесь бесплатно помогаю почти всем, вопрос в том, что тем кто не хочет сделать даже 5% работы помогать как-то неинтересно. Был бы предложен кусок кода, хоть и неправильный, наверняка его бы уже отладили и указали на грехи. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 11:11 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyДля обсуждения ТЗ предлагаю почасовую ставку. - Дипу_тат.... :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 11:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochвот кстати да, Абрамович - это отчество или фамилиё ? Национальныё принадлежность ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 09:18 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne- Дипу_тат.... :-))) одноман... одноманда... одномандатник! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 09:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneIvan_PisarevskyСтрока с тремя словами это другое тз и цена другая. Остап Сулейман Берта Мария Бендер-бей? :-) Да. Мне бы принцип понять: как одним запросом переместить подстроку(в конец вчастности). Т.е. встретилось "Сулейман" унес в конец строки "Сулейман - турецкоподданный". Ну по сути надо по справочнику "ООО, ЗАО, НПО" встречающиеся в начале записи утащить в конец (стеб в нужную сторону приветствуется) Жгите парни, уже не слабо помогли. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
rdb_devAriochвот кстати да, Абрамович - это отчество или фамилиё ? Национальныё принадлежность Стебётесь чтоли? Абрамович - это... это призвание ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogDi_LIneпропущено... Остап Сулейман Берта Мария Бендер-бей? :-) Ну по сути надо по справочнику "ООО, ЗАО, НПО" встречающиеся в начале записи утащить в конец (стеб в нужную сторону приветствуется) Не может быть, чтобы ты не додумался до Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, у меня есть знакомый с фамилией Кузьмич С фамилией то я справлюсь. А вот как "ООО РастудытьТебяВКачель" превратить за один раз в "РастудытьТебяВКачель ООО" чето мозгу не хватает))) Для меня даже пробел есть после "ООО ". Но мозгов не хватает... чтоб одним запросом. Подзапрос по справочнику я сам составлю... мнеб принип... можно со стебом-шутками-прибаутками. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:38 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlineНе может быть, чтобы ты не додумался В смысле - где подвох? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:38 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlinemiwaonlineНе может быть, чтобы ты не додумался В смысле - где подвох? По моему стебётся. Или немного обидно... или пните ещё раз ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:41 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogmiwaonlineпропущено... В смысле - где подвох? По моему стебётся. Или немного обидно... или пните ещё раз Кхм. Ведь это - решение задачи, нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:43 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlinedgdogпропущено... Ну по сути надо по справочнику "ООО, ЗАО, НПО" встречающиеся в начале записи утащить в конец (стеб в нужную сторону приветствуется) Не может быть, чтобы ты не додумался до Код: sql 1.
А подожди на копии попробую... Упдате И твой Select left... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlinedgdogпропущено... По моему стебётся. Или немного обидно... или пните ещё раз Кхм. Ведь это - решение задачи, нет? не катит "Invalid length parameter -1 to SUBSTRING. Negative integers are not allowed." чую беда в том, что не везде есть пробел. есть просто названия одним словом. Нууу... буду копать в эту сторону. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:00 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogmiwaonlineпропущено... Кхм. Ведь это - решение задачи, нет? не катит "Invalid length parameter -1 to SUBSTRING. Negative integers are not allowed." чую беда в том, что не везде есть пробел. есть просто названия одним словом. Нууу... буду копать в эту сторону. Решил пока так (опытным путем) select left(POLE, position(' ', POLE)-1) from (select POLE from TABLE where POLE like '% %'); Иначе вылетает с ошибкой на первом значении без ПРОБЕЛА. Буду копать в ту сторону. СПАСИБО. Хотя мое решение не красивое... должно быть проще ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogmiwaonlineпропущено... Кхм. Ведь это - решение задачи, нет? не катит "Invalid length parameter -1 to SUBSTRING. Negative integers are not allowed." чую беда в том, что не везде есть пробел. есть просто названия одним словом. Нууу... буду копать в эту сторону. Код: sql 1.
Вместо 0 в maxvalue можно передать 32768, char_lenth() или что-то другое по вкусу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:22 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlineВместо 0 в maxvalue можно передать 32768, char_lenth() или что-то другое по вкусу. Упс, психанул. По условию задачи - нельзя :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:23 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlinemiwaonlineВместо 0 в maxvalue можно передать 32768, char_lenth() или что-то другое по вкусу. Упс, психанул. По условию задачи - нельзя :) Вкурил. Расковыряю. Спасибо. Я все равно со справочником сверяю. Спасибо. А вот совсем другой вопрос: Вот есть у меня клиент который отсылает UPDATE и на 5-10 минут замирает (хотя ему эти данные сейчас не нужны). Если я перенесу это УПДЭЙТ в хранимую процедурку - клиент будет виснуть? Какие решения ПРАВИЛЬНЫЕ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogА вот совсем другой вопрос: Вот есть у меня клиент который отсылает UPDATE и на 5-10 минут замирает (хотя ему эти данные сейчас не нужны). Если я перенесу это УПДЭЙТ в хранимую процедурку - клиент будет виснуть? Какие решения ПРАВИЛЬНЫЕ? Будет виснуть.. Чтоб интерфейс не замирал - надо перенести этот update в отдельный поток или отдельное приложение. Какой именно вариант в твоих условиях подходит лучше - тебе решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:40 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
miwaonlinedgdogА вот совсем другой вопрос: Вот есть у меня клиент который отсылает UPDATE и на 5-10 минут замирает (хотя ему эти данные сейчас не нужны). Если я перенесу это УПДЭЙТ в хранимую процедурку - клиент будет виснуть? Какие решения ПРАВИЛЬНЫЕ? Будет виснуть.. Чтоб интерфейс не замирал - надо перенести этот update в отдельный поток или отдельное приложение. Какой именно вариант в твоих условиях подходит лучше - тебе решать. Ясно. Спасибо. Совсем не "базист" И база не моя... перекраиваю. Сейчас выкрутился отключением Контрола... а вообще надо переписывать. Код бы разобрать.))) Но разберем))) Фигня-война, не в такие дали шагали. Спасибо ребят за подсказки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 23:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogА вот как "ООО РастудытьТебяВКачель" превратить за один раз в "РастудытьТебяВКачель ООО" чето мозгу не хватаетНайти все строки, где позиция символа "пробел" ненулевая, откусить сабстрингом все то, что до позиции первого пробела и откусить все что после первого пробела, потом вторую часть пристегнуть к первой операцией "||". miwaonlineЧтоб интерфейс не замирал - надо перенести этот update в отдельный поток или отдельное приложение.йа йа, оно. свой коннект, своя транзакция в отдельном треде и вперед. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 18:28 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyсвой коннект, своя транзакция в отдельном треде и вперед Это необязательно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 19:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovIvan_Pisarevskyсвой коннект, своя транзакция в отдельном треде и вперед Это необязательно.Зато работает ожидаемо. Как только начинаешь экономить "на спичках", обязательно получишь граблями по лбу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 22:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyDimitry Sibiryakovпропущено... Это необязательно.Зато работает ожидаемо. Как только начинаешь экономить "на спичках", обязательно получишь граблями по лбу. я вот не базист( не птичник совсем)... но отвечу со своей колокольни(если можно): так ведь от задачи зависит мне проще было создать сервис и закинуть на сервер: сработало "чудо правило" апдейтим таблицы по принятым условиям. (Клиент этого не чувствует) Вываливаемся с ошибкой (клиенту знать об этом не надо) - ну и фиГ сним... пробуем повторить или вообще сигналим винде "Алярм блин, алярм падла, свистать всех на верх" - отбиваем "вопрос" С тредами у мена (вот это личное) есть не понятки: Вот случилась ошибка и выдаем ЕррорБлинЁпрст... но у меня не всегда выдает если пользователь уже закрыл программу (ну на Вин 10 и Ембаркадеро 2007 у меня с тредами подключенными к 1С8.3 беда) и отработать ошибки не получается... да и пользователь глючит если что не так. Вариантов вижу 3 1: тред (теоретически самое правильное) 2: на самый жуткий запрос (на 5-20 минут работы) запускать стороннюю подпрограмму. 3: сервис. Которому командуем чего там на сервере надо поправить (апдейтить, удалить, апгрейдить) ПС наверное многое можно сделать в UDF или встроенными процедурами (но на форуме говорят, запуск процедуры так же затормозит клиента...) А в UDF я только пытаюсь вникнуть :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2016, 23:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, фигню сморозил ))) Код: pascal 1.
хорошо, что не успели в грязь вкатать)) конечно зависит от знаний-возможностей программиста. Ну и от условий. Методы разные, но главное достичь цели минимальными затратами (времени, памяти, процессора... ну и программиста) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2016, 23:19 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogС тредами у мена (вот это личное) есть не поняткиНормально с ФБ работать из тредов, у нас и из С прямо с АПИ и с дельфи с фиб-ами, и под линуксами и под виндами. Не надо тень на плетень наводить. Если есть проблема с тредами, то тебе лучше в дельфовый форум сходить, получить помощь вполне реально. dgdogПС наверное многое можно сделать в UDF или встроенными процедурами (но на форуме говорят, запуск процедуры так же затормозит клиента...) А в UDF я только пытаюсь вникнуть :)Это вообще перпендикулярно теме обсуждения. "Слышал звон..." (с). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2016, 12:04 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561790]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
258ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 622ms |
0 / 0 |