Конференция "Базы" » ADO+ClientDataSet+TThread [D7, Access]
 
  • Alex_C (16.11.11 15:32) [20]

    > AdoCommand.CommandText := 'insert into SpotTable() values()';


    > Львиная доля времени из всех 5-8 секунд здесь уходит на
    > перечитывание метаданных и строительство списка переметров.
    >
    > Что у проф программиста отсутствует.
    >


    Чего то я не понял. В [2] ты ж сам так предлагаешь делать?


    > Что у проф программиста отсутствует.


    Я и не являюсь проф программистом. По улицам на машинах не только же проф гонщики ездиют :)
  • Медвежонок Пятачок © (16.11.11 15:37) [21]
    Чего то я не понял. В [2] ты ж сам так предлагаешь делать?

    серьезно?
    я тебе предлагал двести пятьдесят раз подряд чистить текст sql заменяя его не него же для того, чтобы датасет двести пятьдесят раз перечитал метаданные одной и той же таблицы?
  • Inovet © (16.11.11 15:43) [22]
    > [20] Alex_C   (16.11.11 15:32)
    > > Что у проф программиста отсутствует.
    >
    > Чего то я не понял. В [2] ты ж сам так предлагаешь делать?

    И в третий раз повторю, раз предыдущие игнорируешь игнорируешь.

    > [13] Inovet ©   (16.11.11 15:14)
    > Я тебе уже говорил - в запросах желательно пользоваться
    > параметрами.
  • Alex_C (16.11.11 15:56) [23]

    > я тебе предлагал двести пятьдесят раз подряд чистить текст
    > sql заменяя его не него же для того


    > И в третий раз повторю, раз предыдущие игнорируешь игнорируешь.
    >
    >
    > > [13] Inovet ©   (16.11.11 15:14)
    > > Я тебе уже говорил - в запросах желательно пользоваться
    > > параметрами.


    Я понимаю, что я чего то не понимаю. А вот чего я не  понимаю - я не понимаю. :)
    Я думал, что "пользоваться параметрами" это


    ParamByName('IsNewCountry').Value := IsNewCountry;



    сейчас я понимаю, что я не правильно истолковал сию фразу.  Тогда что понимается под фразой - использовать параметры?
  • Alex_C (16.11.11 16:05) [24]

    > я тебе предлагал двести пятьдесят раз подряд чистить текст
    > sql заменяя его не него же для того, чтобы датасет двести
    > пятьдесят раз перечитал метаданные одной и той же таблицы?
    >


    С этим я разобрался - понял, что AdoCommand.CommandText - пишется один раз, потом просто подставляются параметры. Переделал - особо быстро все равно не стало.
  • Медвежонок Пятачок © (16.11.11 16:08) [25]
    Насколько особо быстро надо?

    При учете того, что вставка будет не в главном потоке, а данные из физической таблицы в приложении не используются.
  • Alex_C (16.11.11 16:19) [26]

    > При учете того, что вставка будет не в главном потоке, а
    > данные из физической таблицы в приложении не используются.
    >


    В общем наверное я сам себе уже мозги запудрил.

    Как было сделано: у меня была своя импровизированная таблица в памяти - массив, куда я заполнял получившиеся данные, после получения всех данных я их копировал в несколько VolgaTable для различных целей. В принципе все было очень быстро. В связи с переходом основной базы на Access а был приятно поражен возможность выборки данных. Вот и решил, и как сам сейчас понимаю - не удачно применить Access - подкупало что можно выборку делать из одной таблицы. Теперь понял, что так получается куда как медленнее.
  • Медвежонок Пятачок © (16.11.11 16:22) [27]
    у меня была своя импровизированная таблица в памяти - массив

    А она вообще нужна своя?

    получаю из инета пакет около 250 записей.

    В виде чего получаешь из инета?
  • MsGuns © (16.11.11 16:52) [28]
    Вот откуда-то "извне" программа поочередно получает 500 записей, после чего в цикле засовывает их в некую БД. Внимание, вопрос: с какого боку тут многопоточность и что она собсна даст ?
  • Медвежонок Пятачок © (16.11.11 16:56) [29]
    многопоточность здесь даст.
    если скажем пришедший пакет это xml пакет.
    грузим его как есть и используем в приложении как "быструю таблицу в памяти"
    во вторичном потоке неспеша инсертим это в бд.
  • Inovet © (16.11.11 19:19) [30]
    Как-то сильно много 5-8 секунд на 250 записей.
  • Юджин © (16.11.11 19:27) [31]
    Удалено модератором
    Примечание: не спамь
  • Alex_C (16.11.11 21:30) [32]

    > А она вообще нужна своя?
    >


    Получение максимально потокозащищенного кода за счет полного контроля над тем, что делаешь. Только из этих соображений.
    Access меня еще и прельстил потокозащищенностью.


    >  с какого боку тут многопоточность и что она собсна даст
    > ?


    Заставлять пользователя ждать 10 сек получения и сортировки данных? Не думаю, что хорошее решение.


    > В виде чего получаешь из инета?


    Текст. Парсю строки, строки имеют определенный формат.


    > во вторичном потоке неспеша инсертим это


    Да собственно в итоге к этому и пришел.


    > Как-то сильно много 5-8 секунд на 250 записей.


    Много. Совсем забыл, что кроме добавления, каждая пришедшая "запись" - а это информация о работе в эфире редкой станции еще проверяется, есть ли такая страна в логе и на данном диапазоне/моде.
    В итоге - просто вставка - 3 сек. +5 сек запрос к базе лога на предмет подтверждения страны.
    В принципе думаю на это пока забить - даже фоновая задержка получения начального пакета из 250 последних спотов - не проблема. После этого споты будут приходить по одному через телнет - а это уже доли секунды на обработку.
  • Inovet © (16.11.11 22:16) [33]
    > [32] Alex_C   (16.11.11 21:30)
    > кроме добавления, каждая пришедшая "запись" - а это информация
    > о работе в эфире редкой станции еще проверяется, есть ли
    > такая страна в логе и на данном диапазоне/моде.

    Вообще-то этим должен заниматься движок БД, а приложение должно только обработать исключение в случае неудачи.
  • Alex_C (16.11.11 22:48) [34]

    > Вообще-то этим должен заниматься движок БД


    Сейчас подешел к изучению хранимых процедур.
    Как я понимаю, этим должны заниматься именно они.
    Я правильно понимаю направление?
  • Inovet © (16.11.11 23:33) [35]
    > [34] Alex_C   (16.11.11 22:48)
    > Сейчас подешел к изучению хранимых процедур.
    > Как я понимаю, этим должны заниматься именно они.

    Как там в аксесе с еими не знаю. Они в более сложных случаях, а для проверки по справочнику достаточно внешнего ключа. Да я уже много раз говорил об этом.
  • sniknik © (17.11.11 00:00) [36]
    никто никому ничего не должен... нужна процедура? вот тебе лично - делай процедурой.
    а вообще хватило бы запроса с джойном. (как понял описание чего нужно)

    p.s. начинать изучение процедур с аксесса... плохая идея. нет их там практически, одно название.
  • Alex_C (17.11.11 08:43) [37]

    > вообще хватило бы запроса с джойном.


    Вот сейчас как раз ломаю над этим голову. Как я понимаю, можно все же обойтись и одним запросом.
  • Alex_C (17.11.11 09:42) [38]
    Вопрос по св-ву ExecuteOptions для ADOCommand - после вставки 250 записей, мне нужно удалить повторы. Если комманду удаления повторов я ставлю сразу после комманды вставки - удаления не происходит. Если делать вручную - при нажатии на кнопку - повторы удаляются. Я так понимаю, что это происходит из-за того, что сама таблица после повторов не успела обновиться.
    Ставил
    ExecuteOptions := [eoAsyncExecute];


    начинает ругаться при вставке записей - Не удается выполнить операцию во время асихронного выполнения.
  • Alex_C (17.11.11 09:52) [39]

    > ExecuteOptions := [eoAsyncExecute];


    Разобрался..
 
Конференция "Базы" » ADO+ClientDataSet+TThread [D7, Access]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]