- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Для работы потребовалась база MySQL на 10млн. записей (объщий объем 1Гб с индексами)
Работа с БД идет на столько интенсивно (в секунду порядка 1000 селектов, 100 инсертов и 1000 обновлений)
что БД очень быстро фрагментируется и производительность падает в десятки раз.
Захотелось вынести БД на отдельный диск (в идеале на RAM диск со сливом дампов)
Но как сказать MySQL-ю что нужно подмантировать БД из другого каталога (на другом HDD) не знаю.
PS.
Система крутится на Windows XP
PPS.
Хотел попробовать хардлинк, но он работает только в пределах одного логического диска.
ужас какой, зачем вам mysql ?
Переходите с такими объёмами на оракл :)
сразу видно, что при проектировании системы не учли масштабируемость
База используется не для коммерческого применения, а для личного опыта, а т.к. раньше с мюскулем работал - вот с помощью него и решил объщитать (раньше максимальные базы с которыми работал ограничивались 50тыс. записями - так что граблей никаких не встречал)
такчто жду подсказки.
PS.
Самое тупое решение которое видится - поставить для этой БД отдельный MySQL сервачек, который будет крутиться на доп. HDD и на отличном порту от основного сервера, но решение кажется не очень красивым.
База используется не для коммерческого применения, а для личного опыта, а т.к. раньше с мюскулем работал - вот с помощью него и решил объщитать (раньше максимальные базы с которыми работал ограничивались 50тыс. записями - так что граблей никаких не встречал)
такчто жду подсказки.
PS.
Самое тупое решение которое видится - поставить для этой БД отдельный MySQL сервачек, который будет крутиться на доп. HDD и на отличном порту от основного сервера, но решение кажется не очень красивым.
если все упирается в харды - советую разнесты бд на разные винты простой операцией partition
смотрите подробнее здесь http://dev.mysql.com/tech-resources/articles/mysql_5.1_partitioning.html
суть фичи такова, что вы можете разделить таблицу на несколько частей (незаметно для себя), которые могут лежать на разных хардах
делить можно по первичному ключу, по дате или по какому-то выражению
таким образом, можно повысить производительность
если все упирается в харды - советую разнесты бд на разные винты простой операцией partition
Тоже идея (оставить на главном диске первую запись а остальное утянуть на доп. диск), но харды "справляются" (RAID загружает ЦП по полной) как появляется сильная дефрагментация (а она появляется через 10 минут работы) - производительность резко снижается (надеюсь от этого спасет вынос на отдельный диск - никакие другие процессы на пути файлов БД чтоб ничего не писали).
PS.
А что будет с индексами? - они тоже растянутся по дискам пропорционально? или останутся на исходном?
Тоже идея (оставить на главном диске первую запись а остальное утянуть на доп. диск), но харды "справляются" (RAID загружает ЦП по полной) как появляется сильная дефрагментация (а она появляется через 10 минут работы) - производительность резко снижается (надеюсь от этого спасет вынос на отдельный диск - никакие другие процессы на пути файлов БД чтоб ничего не писали).
PS.
А что будет с индексами? - они тоже растянутся по дискам пропорционально? или останутся на исходном?
об индексах там должно быть подробно расписано
вообще, имхо, я бы делил такую таблицу из 10млн на 25 мелких через партишены и далее экспериментировал - перед разносом на харды
что по-вашему "сильная фрагментация" ? чем вы этот показатель измеряете?
и пробовали ли вы делать optimize table ? в этом случае у вас все якобы должно на 10 минут начать работать быстро, потому как этот процесс для myisam создает новый файл и он скорее всего будет непрерывный.
обычно идея неплохая. на xp можно целый раздел диска "подключить том как пустую ntfs-папку".
Но как сказать MySQL-ю что нужно подмантировать БД из другого каталога (на другом HDD) не знаю.
Параметр --basedir указывает директорию для хранения баз (всех баз)
что по-вашему "сильная фрагментация" ? чем вы этот показатель измеряете?
Сильная фрагментация - >500 кусков файла.
и пробовали ли вы делать optimize table ? в этом случае у вас все якобы должно на 10 минут начать работать быстро, потому как этот процесс для myisam создает новый файл и он скорее всего будет непрерывный.
Пробовал, но почемуто нужного эффекта не достигается - фрагментированность остается, наверное умная ОС пишет файл как её кажется более правильно, а не чтоб занять свободное место.
обычно идея неплохая. на xp можно целый раздел диска "подключить том как пустую ntfs-папку".
Вот за это спасибо!
Незнал о такой возможности.
Единственная проблема, с которой сталкнулся - установил RAMDisk "Enterprise", а он как оказалось создает диски которые ни ОС ни др. программы не воспринимают как полноценные диски.
Но выручил SuperSpeed RamDisk.
Всем спасибо!
Фрагментация файлов - причина которую обычно предполагает человек не знакомый с оптимизацией субд. Раз optimize не помогает, дело скорее всего не в фрагментации.
Копировать файлы в память обычно тоже нет необходимости, они и так оседают в кеше операционной системы.
Советую сначала найти узкие места и ознакомиться с традиционными методами оптимизации запросов.
Фрагментация файлов - причина которую обычно предполагает человек не знакомый с оптимизацией субд.
А как ещё можно можно объяснить РЕАЛЬНУЮ ситуация, которая повторяется 10 раз подрят?
работает база в 2х режимах.
1. Все летает, тоесть база переваривает в секунду 2000 обращений к ней (кол-во записей 10млн. размер 1ГБ) при кол-ве фрагментов <100, при этом поиск по ней точного вхождения длится 0,0003 сек
2. Все тормазит, тоесть база переваривает в секунду 200 обращений к ней (кол-во записей 10млн. размер 1ГБ) при кол-ве фрагментов >500, при этом поиск по ней точного вхождения длится 0,05-0,15 сек.
И все решается дефрагментированием.
ФРаз optimize не помогает, дело скорее всего не в фрагментации.
Оптимизация как-то не правильно срабатывает - тоесть БД задумывается - файлы БД таскает, но в итоге фрагментированность остается и устраняется тольк WIN дефрагментатором
PS.
Заливка БД в RAM оказалась только временной примочкой, при достижение фрагментированности БД 5000 фрагментов - производительность ниже плинтуса (аналогично что на жестком диске при кол-ве фрагментов >500)
PPS.
Кто что ище может посоветовать?
(Может можно какнибудь искуственно раздуть БД чтобы она использовала выделенное её пространство, аля создание разреженного файла?)
На всякий случай сообщаю структуру БД
int(11) | varchar(80) | int(11)
первичный ключ | индекс | индекса нет