Как выбрать строки с заданной очередностью

Wednesday, 27 Jan 2016

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

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

(more…)

VN:F [1.9.21_1169]
Rating: 8.4/10 (19 votes cast)
VN:F [1.9.21_1169]
Rating: +3 (from 3 votes)

Дефрагментация и сжатие InnoDB

Wednesday, 02 Dec 2009

Есть у меня отличный почтарь, да не один, а несколько. Все они крутятся в связке Exim + DBmail + MySQL, конечно там есть много чего еще, но это основная связка, и нас из неё интересует последняя составляющая mySQL. Дело в том, что база пользователей и всего имеющегося мусора крутится по мускулем и хостится в базе типо InnoDB, которую необходимо постоянно сжимать и сканировать. Желательно каждую ночь, чтобы мусор скопившийся за день, не забивал место в табличном пространстве.

К большому сожалению база InnoDB работает по принципу ниппеля, т.е. туда дуй, оттуда х… Объясняя это доступным языком- табличное пространство может как расширяться так и уменьшаться, но физический размер базы при этом изменяется только в сторону увеличения. Проще говоря если у вас база была на максимуме 20гигов, и после этого вы её почистив освободили 90% пространства, внутри база у вас будет свободна на 90% (посмотреть свободное пространство можно командой в консоли управления сервером: mysql> show table status; ), но снаружи она так и будет занимать на диске 20 Гиг физического пространства диска. Так вот у меня, на одном из серверов, она успела разрастись, пока я прочухал тот факт, что забыл установить чистящий скриптик, до 250 Гигов, которые конечно работают как часы, но самой цифрой действуют мне на нервы. В этой связи надо что то делать. Но делать можно только одним способом, а именно перегнать базу в дамп sql и затянуть его обратно, предварительно дропнув имеющегося монстра. В этой связи, ровно как и для дефрагментации табличного пространства, нашим лучшим другом является системная утилита mysqldump, входящая в стандартный комплект поставки сервера mySQL.

*** Для дефрагментации InnoDB также можно использовать способ двойной перегонки :) базы, с помощью команды ALTER преобразовать её в тип MyISAM, а затем обратно в тип InnoDB.
(more…)

VN:F [1.9.21_1169]
Rating: 8.5/10 (2 votes cast)
VN:F [1.9.21_1169]
Rating: -2 (from 2 votes)