MySQL tips: optimize tables

3 июня 2009, Среда

Задача: оптимизировать все таблицы в базе.

Решение:

mysql -u user -ppassword database -e "show tables"\
   | grep -v Tables_in | grep -v "+" \
   | gawk '{print "OPTIMIZE TABLE  " $1 ";" }' \
   | mysql -u user -ppassword database

MySQL tips: change all tables engine for database

26 мая 2009, Вторник

Задача: Конвертнуть одним махом все таблицы из MyISAM в InnoDB

Решение:

mysql -u user -ppassword database -e "show tables"\
  | grep -v Tables_in | grep -v "+" \
  | gawk '{print "ALTER TABLE " $1 " ENGINE = InnoDB;"}' \
  | mysql -u user -ppassword database

MySQL tips: drop all tables from database

29 апреля 2009, Среда

Маленький скриптец для удаления всех таблиц из БД:

mysql -u user -ppassword db_name -e "show tables"\
  | grep -v Tables_in | grep -v "+" \
  | gawk '{print "drop table " $1 ";"}' \
  | mysql -u user -ppassword db_name

Еще можно написать хранимую процедуру для этого, примерно так:

delimiter $$
DROP PROCEDURE IF exist drop_tables();
create procedure drop_tables()
begin
  SELECT
    @drop_sql:=concat('DROP TABLE IF EXISTS ', group_concat(table_name))
    drop_statement
  FROM information_schema.tables
  WHERE table_schema=database();
  IF (@drop_sql IS NOT NULL) THEN
    PREPARE stmt from @drop_sql;
    EXECUTE stmt;
    DROP PREPARE stmt;
  END IF;
end$$
delimiter ;

Вот так вот.

Блог работает на WordPress.
Подписка RSS: все записи, комментарии.