Помогите пожалуйста!
[info]max_18
Подскажите как восстановить случайно удалённую таблицу (drop table) . 
С утра не выспавшийся по запаре удалил оч важную таблицу, теперь мне будет очень плохо если её не восстановить, дампов нет.

производительность подзапросов
[info]webmechanics
коллеги, если у кого есть в памяти, не поделитесь ссылками на бенчмарки подзапросов в MYSQL? планирую их активно юзать в одном проекте, совместно с view - не хотелось бы потом все переписывать...

(no subject)
donald duck
[info]scofer
Система начала уходить в своп, в оперативке 200мб занимает swap_cache. Запускаю на mysql скрипт tuning-primer.sh и вижу следующее:

MEMORY USAGE
Max Memory Ever Allocated : 1.31 G
Configured Max Per-thread Buffers : 815 M
Configured Max Global Buffers : 778 M
Configured Max Memory Limit : 1.55 G
Physical Memory : 1001 M


Max memory limit exceeds 90% of physical memory


Как с этим бороться? Можно ли в mysql вручную выставить эти параметры? Задаю вопрос сюда, потому что погуглив ответа не нашел. Заранее спасибо.

сложение таблиц
[info]torna_do
Здравствуйте.
Возможно ли только средствами mysql сложить весь столбец, и записать сумму во второй столбец. При условии, что это не разовая операция.
То есть в столбец namber будут постоянно поступать числа, а в столбце\ячейке summ сума будет обновляться.
Ну или хотя бы как сложить столбец, а заносить буду средствами пхп =(

Триггеры в MySQL
[info]islayter

Введение

Триггер — это откомпилированная SQL-процедура, исполнение которой обусловлено наступлением определенных событий внутри реляционной базы данных.

События к которым можно привязывать триггеры в MySQL: INSERT, UPDATE, DELETE.

Время, в которое будет исполнен триггер может быть: BEFORE (до наступления заданного события) или AFTER (после него).

Ограничения, синтаксис, пример из жизни, важно знать )

Приведение к первой нормальной форме
гарфильд
[info]afiskon
При регистрации на сайте пользователь может указывать информацию о себе. В том числе используемые им IM (интернет пейджеры - icq, jabber и тп) и адреса своих сайтов. И первого и второго у него может быть в нескольких экземлпярах, то есть в соответсвующих полях требуется хранить некоторое множетсво (массив), что не соответсвует 1NF и не позволяет мускул. Вопрос - каков правильный выход из такой ситуации? Я вижу следующие выходы:
1) позволить юзеру иметь не более N скайтов и/или IM.
2) создать таблицы messengers и sites, хранящие сайты и пейджеры (и их типы) всех пользователей.

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

мониторинг удаленной MySQL БД
[info]hellraiser09
Приветсвую!

Подкинуло тут начальство очередное задание,
может кто решал, посоветуйте пожалуйста

Задача: создать декстопное/веб приложение для
мониторинга MySQL сервера БД внутрисетевого сервера
или удалённого сервера с возможностью детализации
состояния сервера (текущая загруженность, доступные
ресурсы, количество занятой памяти из отведённой,
количество записей/чтения в сек., подключённые клиенты
и т.д.) и отдельных баз данных.



Исходные требования:

1) Быстрая работа.

2) Работа через программные / аппаратные сетевые экраны.

3) Возможность автоматической диагностики и исправления ошибок
(или использование резервного альтернативного метода работы).

3) Минимальное количество данных, которое необходимо внести
клиенту для правильной и результативной работы приложения.

4) Предусмотреть возможность для удалённого выполнения
стандартных функций обслуживания БД :

- проверки целостности данных;

- оптимизация / сжатие данных;



Заметки:

1) Возможно, что некоторые функции мониторинга будут доступны
только для клиентов с "административными" правами.

В таком случае, полагаю, только часть функций будет доступна
для клиента.

________________________________________________

Я так понимаю, что должны быть какие-то специальные функции у MySQL
(имеется в виду версия 5 и выше), а более детальные задачи
нужно будет решать обращаясь к самописному скрипту на сервере.

Дело в том, что эта программа(как и самописный скрипт) должны без
ухищрений позволять мониторить любую базу, т.е. без привязки к конретной
структуре таблиц

не могу сделать дамп базы
donald duck
[info]scofer
делаю дамп базы:

mysqldump -p -u root --all-databases > db.sql

каждый раз вылетают разные ошибки:
или mysqldump: Got error: 1016: Can't open file: './2xn/auto_acl_users.frm' (errno: 24) when using LOCK TABLES
или mysqldump: Got error: 29: File './2xn/autoknigi_acl_roles_data.MYD' not found (Errcode: 24) when using LOCK TABLES
... и так далее

В чем может быть дело?

подключить БД sp_attach_db
tramway
[info]nepalich
Задача: Есть файлы xxx.frm xxx.mid xxx.myi и пр, относящиеся к одной БД.
Как подключить набор файлов таблиц к движку MySql?
В T-SQL была такая вещь как sp_attach_db, есть ли что-нибудь подобное для MySQL?

Справка по синтаксису SQL в HeidiSQL
tramway
[info]nepalich
Уже не первый год юздаю удобнейшую софтину для работы с MySQL: HeidiSQL - http://www.heidisql.com/
На старом ноуте у нее была очень удобная фитча: встроенная справка по синтаксису MySQL. На новом ноуте долгое время обходился без нее, но сегодня меня оно просто достало. Облазил весь форум разработчиков, погуглил, поискал через яндекс - хрен там. Даже сложилось ощущение того, что у меня одного такая проблема. Дошел до того, что установил последний релиз heidiSQL, да все без толку: как оказалось, искал совсем не там, где надо:
HeidiSQL формирует справку по SQL средствами самого MySQL (http://dev.mysql.com/doc/refman/4.1/en/server-side-help-support.html MySQL Server-Side Help). т.е. чтобы заставить справку нормально работать, нужно скачать http://downloads.mysql.com/docs/fill_help_tables-5.0.sql.zip и выполнить его для таблицы mysql.

Слайды конференции Percona Performance
[info]beskov
http://conferences.percona.com/percona-performance-conference-2009/schedule.html

via [info]raa 

Угроза слева
blue doll
[info]beskov
Нужно собрать 1.000.000 подписей (желательно одним запросом) или Oracle сделает MySQL платным!

Передай ссылку, поддержи лучшую СУБД!

MySQL поиск
[info]ragelt
Люди бодрые, помогите с поиском.

Предположим есть у нас таблица с велосипедами :)
Таблица состоит из следующих полей:
-> Айди
-> Брэнд
-> Модель
-> Количество колес
-> Количество скоростей
-> Наличие брызговиков (да/нет)
-> Рейтинг

как пример:
CREATE TABLE `SearchSimple` (
  `ID` char(10) NOT NULL default '',
  `Brend` int NOT NULL default 0,
  `Wheel` tinyint(4) NOT NULL default '0',
  `Speed` tinyint(4) NOT NULL default '0',
  `SearchPos` double NOT NULL default '0',
  PRIMARY KEY  (`ID`),
  KEY `Brend` (`Brend`,`Wheel`,`SearchPos`,`Speed`),
  KEY `Brend_2` (`Brend`,`SearchPos`,`Speed`),
  KEY `Wheel` (`Wheel`,`SearchPos`,`Speed`)
) ENGINE=MyISAM

В поиске участвуют следующие поля:
-> бренд - твердая привязка к конкретному бренду;
-> количество скоростей - интервал к примеру (от 5 до 30);

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

Количество записей в таблице - несколько миллионов.

На данный момент для поиска используется таблица, которая генерируется раз в сутки. То есть берем данные, уже отсортированные по рейтингу из главной таблицы, и загоняются в поисковую таблицу.

В поисковой таблице - устанавливаются индексы только на бренд и количество скоростей. То есть получаем уже отсортированные данные, в поисковом запросе используется только условие:
(где бренд = "ххх" и скоростей > 10 и скоростей < 20) + лимиты (с 20 по 40 - ю к примеру).

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

Дык вот собственно было придумано решение следующее. Хранить в таблицах поиска только поля, участвующие в поиске ну и само собой айди и рейтинг. Тогда отпадает необходимость переписывать таблицу полностью. по крону изменяем позиции, добавляем новые записи, удаляем.

Индекс делать следующим образом (бренд, рейтинг, скорости). Рейтинг вставлен вторым, не случайно. Дело в том, что в каждом запросе используется только интервал скоростей.

То есть получаем запрос (где бренд = "ххх" и колво скоростей в интервале от 10 до 20) сортировка по рейтингу + лимиты (с 20 по 40 к примеру).
В експлейне показывает Using where; Using index, все бы хорошо, но скорость выполнения запроса - где то 6 секунд.
Причем, результат запроса к примеру где количество педалей = 2 и марка = орленок и количество скоростей в интервале (от 1 до 5) - выполняется гораздо быстрее, чем где количество педалей = 2  и количество скоростей в интервале (от 1 до 5).

И это понятно, в первом случае, чем больше условий в индексе - тем меньше получается пробегать по рейтингу и искать подходящее количество скоростей.
Во втором же случае получается, если допустим у нас есть двух и трех колесные велосипеды и их количество одинаково, то для выборки нужно будет пробежаться по половине таблице.

Вот собственно и вопрос. Как правильно сделать индекс, или распределить как то данные, а может мы велосипедисты, и можно как то все гораздо проще сделать?
Вобщем подпните на счет поиска пожалуйста в нужную сторону.

Заранее спасибо.

log event entry exceeded max_allowed_packet
Linux
[info]sanmai
Как это лечить?

На мастере: 4.1.20
На слейве: 5.0.51a

более не актуально )

(no subject)
[info]attor
Подскажите, есть какой-нибудь способ заставить mysql выводить записи по запросу WHERE id IN(4,3,12) в том порядке, в коротом id поставлены в условии IN, т.е. 4, 3, 12 независимо от значений других полей?

Error 1005 (-1)
[info]ornicum
Здравствуйте, гуру! У меня ситуация такая: стоял сервер mysql 5.0.33, я сделал оттуда дамп с кучей баз, поставил сервер 5.0.77. Заливаю дамп на новый сервер и получаю для 4-х баз сообщения такого типа: ERROR 1005 (HY000) at line 33: Can't create table './rt3/ACL.frm' (errno: -1). Насколько я понимаю, не может создать некоторые таблицы, но причина не ясна и куда копать не понятно. Может кто подскажет как бороться?
Для указанной ошибки код запроса такой:
CREATE TABLE `ACL` (
`id` int(11) NOT NULL auto_increment,
`PrincipalType` varchar(25) NOT NULL,
`PrincipalId` int(11) NOT NULL,
`RightName` varchar(25) NOT NULL,
`ObjectType` varchar(25) NOT NULL,
`ObjectId` int(11) NOT NULL default '0',
`DelegatedBy` int(11) NOT NULL default '0',
`DelegatedFrom` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `ACL1` (`RightName`,`ObjectType`,`ObjectId`,`PrincipalType`,`PrincipalId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

REGEXP в MySQL
pray
[info]kozadoev
Вопрос. Можно ли в MySQL по регулярному выражению выбрать часть поля? Мне нужно выбрать кусок текста, который содержит известное мне ключевое слово, но также чтобы он содержал все, что левее этого ключевого слова до знака табуляции и все, что правее до переноса строки. Уважаемые гуру, подскажите как все это дело делать

(no subject)
[info]premius
Столкнулся с проблемой очень долгого выполнения запроса, содержащего join, на сервере версии 4.1.18-standard, который выполняется больше 10 минут (потом я уже и ждать перестал), в то время как на сервере 3.23.36 этот же запрос выполняется меньше 3 сек.

Может быть, кто-нибудь сталкивался с такой проблемой и знает, как ее просто как-то "вылечить"? (Может, настройки какие сервера или еще, что.)

UPD: Решение найдено: STRAIGHT_JOIN.

Вот запрос:

Read more... )

нужна помощь
1
[info]white_thesis
В упрощенном виде проблема выглядит так:
есть простая таблица

итем | группа | значение

Множество предметов разбиты по группам, каковых К штук. Мне нужно выбрать из таблицы по N предметов из каждой группы, причем таких, у которых `значение` наименьшее в своей группе.
Обычно N меньше 100, а К от полусотни и нескольких сотен.

Очень хочется выполнить выборку данных числом запросом меньшим, чем К.

Для N=1 все решается довольно просто, а вот если N=2+ я ничего придумать не могу.

Если б это был не мускуль, а просто таблица, просматриваемая "вручную", то такую задачу можно было бы решить просто и быстро за один проход по всей длине таблицы. Значит, теоретически рассуждая, решение может существовать и для мускуля.

Перекроить базу данных я не могу.

У кого-либо есть идеи в какую сторону копать?

Home