-Поиск по дневнику

Поиск сообщений в lj_agneta

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 22.04.2007
Записей: 11
Комментариев: 0
Написано: 0




Удивительное рядом - LiveJournal.com


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://agneta.livejournal.com/.
Данный дневник сформирован из открытого RSS-источника по адресу /data/rss/??b6eeae00, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Сравнительное аналитическое исследование скорости объектов DAO и ADODB.Recordset

Пятница, 13 Августа 2010 г. 14:49 + в цитатник
Этот пост - по работе, носит технический и исследовательский характер, составлен для потомков. Не рекомендуется к прочтению лицам со слабой психикой.

В предыдущей научно-публицистической заметке про способы кэширования данных, я сделала вывод, что наиболее эффективным методом (по скорости чтения кэша) является метод чтения кэша БЕЗ прочтения PRIMARY INDEX таблицы. Я решила исследовать этот вопрос более подробно.

Собственно, в Microsoft Access при работе со связанными таблицами через DAO.Recordset, если вы читаете в запросе PRIMARY INDEX таблицы, то драйвер обязует вас использовать определенный вид КУРСОРА и БЛОКИРОВКИ: dbSeeChanges, dbOpenDynaset:

CurrentDB.OpenRecordset ("SELECT a,b,c,d,e,f FROM tbl")
CurrentDB.OpenRecordset ("SELECT ID,a,b,c,d,e,f FROM tbl", dbOpenDynaset, dbSeeChanges)


Сначала, я подумала (не без влияния общественного мнения, конечно), что от DAO.Recordset мне стоит отказаться и перейти на более "модный" и продвинутый ADODB.Recordset. В народе бытует мнение, что он быстрее. Я решила это проверить, но результаты оказались настолько неожиданны, на сколько и ВЫВОДЫ :)))

Итак, провела очередную серию испытаний, в ходе которых следовало установить скорость работы различных Recordset с РАЗНЫМИ видами курсоров и блокировок.

Тест: Прохождение Recordset
Данные: Таблица контрагентов
Алгоритм: циклическое открытие рекордсета с полным прохождением
Железо: AMD Athlon XP 1600+ (1.4GHz), 2x256 MB RAM, Chipset nForce2 Ultra (dual channel)
Софт: Windows XP, SQL Server 2005, MS Access 2003
Нагрузка: (428 строк, 47 полей) x 10 открытий и прохождений
Условия: Все испытания проводились дважды с полным совпадением результатов.
Метод вычислений: замер времени в контрольных точках начала и конца заполнения и прочтения таблицы (7300 строк)
Погрешность вычислений: 0.5 секунды

Варианты тестирования:
  • DAO.Recordset, ADODB.Recordset

  • с использованием динамического курсора и без


Результаты тестирования

Варианты тестированияDynamic курсорStatic курсор (обычный)
DAO.Recordset9 минут2 секунды
ADODB.Recordset7 минут40 секунд


Эти уникальные данные доказывают, что применение ADODB.Recordset имеет весьма сомнительное преимущество по скорости. Если точнее, то относительно небольшое преимущество можно получить только, если используются динамические курсоры, но преимущество все равно слабое.

Меня поразила скорость работы DAO.Recordset со статическим курсором и я придумала одну ХИТРОСТЬ, как получать значение PRIMARY INDEX, без чтения САМОГО индекса, что избавит от необходимости использования динамического курсора в DAO.

Совершенно случайно на прошлой неделе наткнулась на возможность создания в MS MSQL SERVER 2005 полей таблиц, со свойством COMPUTED COLUMN SPECIFICATION. Этот параметр (а так же PERSISTED=No), позволяют создать вычисляемое ВИРТУАЛЬНОЕ поле таблицы на стороне сервера, используя формулу.

Мы просто создаем поле, у которого в формулу вписываем название поля с PRIMARY INDEX и получаем дубликат PRIMARY INDEX, который сам таковым при выборке не является. Теперь я могу работать с DAO.Recordset за доли секунд за счет этого метода.

http://agneta.livejournal.com/91731.html


Аналитическое исследование способов кэширования при использовании SQL Server

Четверг, 12 Августа 2010 г. 13:57 + в цитатник
Этот пост - по работе, носит технический и исследовательский характер, составлен для потомков. Не рекомендуется к прочтению лицам со слабой психикой.

Кэширование является эффективным методом для увеличения производительности процессов, которые имеют повторяющиеся вычислительные алгоритмы. Однако, существует ряд нюансов организации кэширования в базе данных. Аналитику различных методов кэширования проведем на прикладной базе процесса "отсрочка в рабочих днях", описанного мною ранее. Тем не менее, стремясь создать универсальный инструмент, заложим функционал кэширования любого типа данных, используя следующие параметры:
- тип кэшируемых данных (текстовый/числовой код в зависимости от варианта тестирования)
- ключ кэша (текстовый, числовой, два числовых в зависимости от варианта тестирования)

Исходные данные.
Тест: Отсрочка в рабочих днях
Данные: таблица праздников
Алгоритм: собственный, с применением рекурсии, используются два параметра (начальная дата, число дней для отсрочки), на выходе - конечная дата для последующего кэширования.
Железо: AMD Athlon XP 1600+ (1.4GHz), 2x256 MB RAM, Chipset nForce2 Ultra (dual channel)
Софт: Windows XP, SQL Server 2005, MS Access 2003
Нагрузка: 20x365 = 7300 циклов тестирования (вычисление отсрочки в рабочих днях от 01.01.2010)
Условия: при всех изменениях таблицы производился пересчет индекса UPDATE STATISTICS. Все испытания проводились дважды с полным совпадением результатов.
Метод вычислений: замер времени в контрольных точках начала и конца заполнения и прочтения таблицы (7300 строк)
Погрешность вычислений: 0.5 секунды

Варианты тестирования.
а) текстовый индекс.
поля таблицы:
cache_type varchar
cache_key varchar
cache_value varchar
индекс: (cache_type & cache_key)

б) primary & текстовый индексы
поля таблицы:
rid int
cache_type varchar
cache_key varchar
cache_value varchar
индексы: (rid), (cache_type & cache_key)

в) primary & числовые индексы ключа
поля таблицы:
rid int
cache_type varchar
cache_idx1 int
cache_idx2 int
cache_value varchar
индексы: (rid), (cache_type & cache_idx1 & cache_idx2)

г) primary & все числовые индексы
поля таблицы:
rid int
cache_type_id int
cache_idx1 int
cache_idx2 int
cache_value varchar
индексы: (rid), (cache_type_int & cache_idx1 & cache_idx2)

д) вариант "г" + использование подтаблицы типов кэша, ключ которых подставляется в cache_type_id

Результаты тестирования.
МетодЗаписьЧтение
а) текстовый индекс2:572:10
б) primary & текстовый индексы--"--2:30
б) primary & текстовый индексы БЕЗ чтения самого primary индекса (rid)--"--0:33
в) primary & числовой индекс ключа--"--0:35
г) primary & все числовые индексы--"--0:34
д) г + использование справочной таблицы типов кэша3:051:25


Анализ результатов.
1. Изменение типа кэширования не влияет на скорость записи в кэш, за исключением использования дополнительных таблиц.
2. Использование PRIMARY INDEX значительно ускоряет чтение кэша, ОДНАКО ПРИ УСЛОВИИ, что самого чтения индекса не производится. В противном случае происходит сильное замедление чтения.
3. Использование одного сериализованного ключа кэша (составной ключ в одном поле) не замедляет чтение, хотя и увеличивает объем хранимых данных
4. Использование нескольких числовых ключей вместо одного сериализованного не дает преимущества в скорости, хотя сокращает объем данных
5. Использование дополнительной таблицы замедляет процессы записи и (в значительной степени) чтения кэша, тем не менее, сокращая объем данных.

Вывод.
1. Для задач, требующих высокую скорость обработки кэша, рекомендуется использовать простую таблицу, состояющую из primary index, текстового (возможно-сериализованного) ключа кэша и значения кэша, однако, на этапе чтения, не следует читать из базы primary index.
2. Для задач, в которых помимо скорости критичен общий объем занимаемого базой данных места на диске, рекомендуется использование числовых индексов в кэше, с использованием нескольких полей. Числовой параметр типа кэша должен обрабатываться и задаваться программными средствами, чтобы избежать необходимости использования справочной подтаблицы, замедляющей процессы записи и чтения.

http://agneta.livejournal.com/91364.html


Человек удивительного таланта

Среда, 07 Апреля 2010 г. 10:14 + в цитатник
Рекомендую
http://zhgun.livejournal.com/

Промо на злободневную тему.


© zhgun

http://agneta.livejournal.com/89717.html


Потрошители - REPO MEN - рекомендуется :)

Понедельник, 05 Апреля 2010 г. 11:37 + в цитатник
Фильм поражает и рвет башню :)

Другие названия: Коллекторы, Конфискаторы, Потрошители, REPO MEN (2010).

Это новый жанр и новый стиль: ультрациничный комедийный научнофантастический триллер на остросоциальную медикоюридическую тему про кредиты на искуственные человеческие органы.

IMDB (english):

http://www.imdb.com/title/tt1053424/

OST (саунд треки фильма) - заслуживают отдельного восхищения :)

http://tfile.ru/forum/viewtopic.php?t=303844

Афиша: Описание, рецензии, расписание, трейлеры, кадры:

http://www.afisha.ru/movie/198020/

Русский трейлер.

http://agneta.livejournal.com/89500.html


Как включить SQL SERVER 2005 для работы в сети / не работает в сети / не видит сервер по имени и IP

Четверг, 18 Марта 2010 г. 15:03 + в цитатник
Моим коллегам-девелоперам посвящается :)

Целый день ковыряю маны и папирусы на мелкософте. Вот спрашивается, зачем нужен вообще SQL Server 2005, если по умолчанию у него ОТКЛЮЧЕНА функция работы в сети? Вы где-нибудь видели чтобы на сервере работали ЛОКАЛЬНО? Причем ни в одном мне по возникающим ошибкам об этом не сказано. Вот ведь куда зарыли...

1. Configuration Manager - включить сперва TCP/IP протокол :)) да-да, он выключен по дефолту - НА СЕРВЕРЕ!


2. Теперь сюда, выбираем верхний пункт


3. тут в сетевых настройках Database Engine надо РАЗРЕШИТЬ подключения из сети с использованием этого протокола :))


4. Но это еще не все, инсталлер мог бы напрячься и самостоятельно это сделать, но надо делать самому - добавить правило разрешения доступа по порту 1433 в дополнительных настройках бредмауэра.


Чудеса совместимости или не верь своим глазам :)
Убей пол дня и потом пол дня смейся еще над тем же :)

http://agneta.livejournal.com/89049.html


Группа Pep-see / Пеп-си

Четверг, 18 Марта 2010 г. 15:03 + в цитатник
Утро, солнце, ветер, небо -
Я иду одна....
Что по венам гонит кровь?
Парни, деньги и... Любовь!
Я просто балдею от этой простой, но замечательно сыгранной ска-песенки из по-сути одного куплета. Зато как!
http://mptronru.513.com1.ru/my/18112008/parni_dengi_i_lubov.mp3


http://agneta.livejournal.com/77867.html


ДТП на день Валентина - часть 3

Четверг, 18 Марта 2010 г. 15:03 + в цитатник
Суд состоялся, права у мужика отобрали, говорят он уехал в Волгоград. Завтра поеду получать свои справки для страховой. Нашла еще один сервис, говорят ремонт будет 30-35, это уже более вменяемые цены.
Многое за отпуск успела сделать сама:
1. Разобрала внутреннюю обшивку задней двери, расклинила замок, удалила личинку. Дверь теперь закрывается изящным пинком в замок.
2. Демонтировала битые задние фонари. Все кривое, новые пришлось ставить на самодельные выносные металлические кронштейны. Получилось немного нелепо, но все работает и можно ездить.
3. Вместо битого заднего стекла установила кусок пластика похожей формы с прокладкой слоя силиконового герметика. Пластик посадила на саморезы. Сурово, но эффективно.



4. Демонтировала сломанный бампер. Купила новый, но установить не получилось - все кривое, на штатные пазы не встает. Только стапель нам поможет.



Вобщем, все что я могла сделать самостоятельно я сделала сама. Машина на ходу, ездить уже не так страшно и сзади не задувает.
Ремонт на стапеле намечен на субботу. Надеюсь мою малышку выпрямят и перекрасят. И еще, чтобы не было на дороге больше таких невменяемых перцев.

http://agneta.livejournal.com/77324.html


Стиляги

Четверг, 18 Марта 2010 г. 15:03 + в цитатник
В целом понравилось. Много ляпов и несостыковок, бабушка говорит, что они их конечно мочили, но не так зловеще, но фильм оставляет позитивное ощущение. Многие режиссерские и операторские решения нахожу весьма интересными.
Порадовал кадр из финальной сцены фильма:



Думаю, вряд ли так случайно совпало, но персонажи весьма колоритные.

http://agneta.livejournal.com/76344.html


Нашатырь, Марь-Иванна!!

Четверг, 18 Марта 2010 г. 15:03 + в цитатник
Сразу вспомнился мне почему-то знакомый кот Филя и переписка с одного форума про говорящие яйца кота Барсика... Слабонервным и любителям животных наверное смотреть не стоит.

Читать далее

http://agneta.livejournal.com/76135.html


Наушники Sennheiser HD 280 Pro

Четверг, 18 Марта 2010 г. 15:03 + в цитатник
Купила эти ухи в подарок начальнику - у него день варенья скоро. Себе бы наверное не решилась, а он занимается музыкой, пишет гитару, барабаны и голос.
В своей ценовой категории мне кажутся эти наушники одними из лучших. Я последние два дня листаю спец сайты, читаю отзывы и все такое. В глазах рябит.
Давление, о котором пишут мне показалось не столь существенным, сидят вполне удобно и мягко. Вес самих наушников просто неощутимый, хотя выглядят они очень мощно.

Сразу хочу сказать, что звукоизоляция просто превосходная! Звукопоглощение тоже отличное. Уши полностью помещаются в амбажуры. Даже выключенные надеваешь - и вокруг почти полное пантомимо :) Материал амбажур приятный. Звук чистый с акцентом с центре. Басы насыщенные, верха достаточно четкие.

В магазине сравнивала с Beyerdynamic 770. У них более интересные верха - бархатистые такие, но низы менее ощутимые. Материал амбажур у них более мягкий и прилегание более аккуратное, но стоят они конечно на сто баксов дороже. Импеданс там кстати за двести, это чувствуется.

В целом, рекомендую обратить внимание на модель HD 280 Pro тем, кто ищет наушники в ценовой категории до 5 тысяч с хорошим звуком и прекрасной звукоизоляцией.

Ссылка на описание и интересный магазин, где все можно потрогать, послушать и посоветоваться:
http://www.doctorhead.ru/catalogue/?i=87

http://agneta.livejournal.com/75902.html


УНО / UNO

Четверг, 14 Января 2010 г. 03:12 + в цитатник
Интересная игра - УНО.



Читать описание и правила игры
Кому интересно поиграть в новый год, у кого есть дома лазерный принтер, ножницы, четыре разноцветных маркера и плотная бумага (либо, обложки глянцевых журналов и клей), тот может скачать этот макет карт УНО 70х50мм.

Макет в формате TIFF, LZW компрессия, со слоями в ZIP, монохромный (для раскрашивания маркерами), 1.7 Мб. Для получения полного набора карт потребуется распечатать данный макет на 8 листах А4.

Макет, TIFF/LZW(Layers:ZIP), A4, 1.7Mb

P.S. Благодарю [info]ice_3000 за открытие :)

http://agneta.livejournal.com/88064.html



Поиск сообщений в lj_agneta
Страницы: [1] Календарь