Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: koko92_national в Oct 01, 2012, 10:02



Титла: MySQL сървър запитване
Публикувано от: koko92_national в Oct 01, 2012, 10:02
Здравейте,

Имам 2 питания:
1. Когато задам команда SHOW TABLE STATUS; на една от таблиците DATA_FREE колоната ми показва 9 цифрено число. Ако не се лъжа това число се дели 2 пъти на 1024, за да го превърна в МВ. И горе долу ми излиза 307МВ. Това означава ли че трябва да пусна OPTIMIZE TABLES? И възможно ли е това да причини забавяне?

2. Имам InnoDB таблица и в лога ми показва че таблицата е full. Като гледам размера на .frm файла то е 12К. Какво се прави в този случай?

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


Титла: Re: MySQL сървър запитване
Публикувано от: dejuren в Oct 01, 2012, 19:20
1.
Цитат
OPTIMIZE TABLE should be used if you have deleted a large part of a table or if you have made many changes to a table with variable-length rows (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns). Deleted rows are maintained in a linked list and subsequent INSERT operations reuse old row positions. You can use OPTIMIZE TABLE to reclaim the unused space and to defragment the data file. After extensive changes to a table, this statement may also improve performance of statements that use the table, sometimes significantly.

Може да пуснеш оптимизация, няма да навреди. Но ако под "това да причини забавяне" имаш предвид оптимизацията, да, възможно е. Ако имаш предвид големината на таблицата - няма.

2. Провери дали дискът на който се намира таблицата не е пълен. Може да се наложи да добавиш в my.cnf опция autoextend, например:

innodb_data_file_path=ibdata1:10G:autoextend


Титла: Re: MySQL сървър запитване
Публикувано от: go_fire в Oct 01, 2012, 19:53
Коко има ли някаква специална причина да ползваш InnoDB, защото не това е избора, когато търсим производителност.


Титла: Re: MySQL сървър запитване
Публикувано от: zdraganov в Oct 01, 2012, 20:42
Пробрай също с увеличаване на хийпа max_heap_table_size, както и притежки заявки query_cache_size. Става през my.ini или директно чрез SET GLOBAL ...
Успех!


Титла: Re: MySQL сървър запитване
Публикувано от: gat3way в Oct 02, 2012, 00:19
Коко има ли някаква специална причина да ползваш InnoDB, защото не това е избора, когато търсим производителност.

Това не е много вярно, зависи от случая. В общият случай с по-малка база, където има предимно select-и, myisam обикновено е по-бърз, както се очаква. Когато имаш повечко конкурентни заявки и не са предимно select-и, а и insert/update-и, нещата започват доста бързо да клонят в посока innodb. Това е защото при myisam няма транзакции и за да промениш или вмъкнеш ред в таблицата, същата се заключва. За което време select-ите чакат. И обратното, когато се изпълнява select заявка, insert/update-ите чакат докато се изпълни. Когато таблиците станат големи и не може да се наврат в кеша съответно става забавно.


Титла: Re: MySQL сървър запитване
Публикувано от: go_fire в Oct 02, 2012, 00:57
Да това е напълно вярно, ако имаме транзакции. В Мария ДБ обаче има транзакции и се държат много добре, работили са много по оптимизацията.