Бързодействие

3 отговора 131 прегледа
#1

Бързодействие

Накратко -> Делфи 6, ФайърБърд 1.5, база около 50 МБ с 5 таблици с по 200 000 записа. Драйвери за връзка IBx. SQL диалект 1, page size 2096.

Искам да попитам - нормално ли е 10 000 записа да ги инсъртва за минута и половина. И още - как може да се забърза.

Благодаря предварително.

Отговор
в отговор на dalt #2

Re: Бързодействие

>нормално ли е 10 000 записа да ги инсъртва за минута и половина
Зависи, аз съм постигал и "по-добри" резултати
>как може да се забърза
Без претенции за изчерпателност
- page size кратен на клъстера мин.4096 (аз ползвам обикновено 8192)
- по възможност - инсъртвай в транзакция по около 1000 записа. Експеримента ще ти покаже оптимума.
- при масови операции деактивирай индексите. Прегледай дали нямаш индекси с лоша селективност.
- не се увличай с constraints. Ако е възможно при масови операции ги изключвай.
- Деактивирай ненужните тригери.
- Разбира се трябва да са изключени визуализиращите компоненти и кеширането на клиента
- Ако е възможно при масова операция разкарай другите усери от базата.
10 000 inserta не бих казал, че е масова операция, но щом ти създава такъв проблем няма да ти навреди да поекспериментираш с горните фактори.

Успех

Отговор
в отговор на NDeu #3

Re: Бързодействие

Мисля, че като промених page size стана доста по-добре.

Insert 10000 - 30 сек.
Update 10000 - 45 сек.

10x

Отговор
в отговор на dalt #4

Re: Бързодействие

И още, в реджистрито имаш настройки за колко памет да ти ползва FB-да, брой буфери и т.н. (за съжаление съм забравил как се казват, но ги има в документацията). Можеш да ги увеличиш, но не прекалявай че забива :-)

root@localhost#cd /pub
root@localhost#more beer
Отговор