LINUX.ORG.RU
ФорумTalks

[DB]Выбрать opensource DB.

 


0

0

Вообщем есть БД mysql v5 за год в одной из таблиц накапливается записей около 10-11 миллионов, к БД осуществляется запросы несложного вида вообщем к концу года запросы выполняются очень долго, есть ли смысл перевести это на postgresql?

★★★★★

Просто так абы как - нет.

bibi
()

Смысла нет, пока вы не попробовали оптимизировать работающее сейчас решение.

Igron ★★★★★
()
Ответ на: комментарий от hizel

DELETE FROM temp_ban;INSERT INTO draft_squid SELECT * FROM squid where status=0 AND trans<>'NONE/-';UPDATE squid set status=1 where status=0;INSERT INTO temp_ban (ip,mbytes,lim,name) SELECT draft_squid.ip,SUM(draft_squid.bytes)/1048576,user_squid.lim,user_squid.name FROM draft_squid INNER JOIN user_squid ON RTRIM(draft_squid.ip)=RTRIM(user_squid.ip) GROUP BY draft_squid.ip,user_squid.name,user_squid.lim;SELECT name INTO OUTFILE '/etc/squid/ban/bans.txt' FROM temp_ban WHERE (lim-mbytes)<0; select name into outfile '/etc/squid/ban/bank.txt' from user_squid inner join squid on squid.ip=user_squid.ip where month(squid.time)=month(curdate()) and year(squid.time)=year(curdate()) and user_squid.id=4 group by user_squid.name HAVING sum(squid.bytes)/1048576>(select user_squid.lim from user_squid where id=4);
Примерно такие.

splinter ★★★★★
() автор топика

Скорее всего имеет, MySQL не очень-то дружит с такими объёмами.

P.S.
Писал wiki-движок вообще на Berkley DB. Вот это я понимаю, скорость. К тому же от объёма БД почти не зависит.

Divius ★★
()
Ответ на: комментарий от Divius

Поддержка таблиц BDB включена в дистрибутив исходного кода MySQL начиная с версии 3.23.34 и в бинарную версию MySQL-Max. BerkeleyDB обеспечивает транзакционный обработчик таблиц для MySQL.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Поддержка таблиц BDB включена в дистрибутив исходного кода MySQL начиная с версии 3.23.34 и в бинарную версию MySQL-Max. BerkeleyDB обеспечивает транзакционный обработчик таблиц для MySQL.

http://dev.mysql.com/doc/refman/5.0/en/bdb-storage-engine.html

Да и смысла в ней в MySQL ровно ноль.

bibi
()
Ответ на: комментарий от nu11

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

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Форматирование Саша Пушкин будет делать? Я в суд подам за нанесения морального вреда моим глазам, они теперь смотрят в разные стороны.

Последний запрос просто ужас, боюсь даже интересоваться структурой базы, для которой нужны такие запросы :(

Attila ★★
()
Ответ на: комментарий от splinter

Для этого надо останавливать сервис

Нет, не нужно.

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

Ты ты схему показал чтоль? С запросами и распределением нагрузки на запросы. С нормальным форматированием! Иначе это тред ни о чем.

bibi
()
Ответ на: комментарий от bibi

Нет, не нужно.


я имел ввиду доступ к сервису.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

>Для этого надо останавливать сервис

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

nu11 ★★★★★
()
Ответ на: комментарий от splinter

>потому что таблица блокируется.
ну значит не выполняется в фоне :) Зачем ты тогда уточнял, что ты останавливаешь? Очевидно же, что для выполнения своих функций mysqld должен быть запущен :)

nu11 ★★★★★
()
Ответ на: комментарий от splinter

>адвокату моему позвони.

Мне теперь окулист важнее :)

Attila ★★
()

Вот таже проблема меня ждёт. Ибо сервис что делаю сейчас подразумевает большую свалку информации, которая копится быстрее чем размножаются кошки в dwarf fortress.
Сейчас пока юзаю SQLAlchemy с SQLite, но на продакшне хотел юзать mysql.

tia
()
Ответ на: комментарий от splinter

PS: Триггеры в базе есть? IMHO ими судя по приведенным запросам и не пахнет.

Attila ★★
()

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

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

ventilator ★★★
()
Ответ на: комментарий от splinter

толстовато будет :) Можно попробовать пересоздать таблицы, при такой засранности это будет быстрее оптимизации. Но о регулярной оптимизации подумать стоит, другая СУБД тут не панацея.

nu11 ★★★★★
()
Ответ на: комментарий от nu11

спасибо, думаю надо переделывать все по другому.

splinter ★★★★★
() автор топика
Ответ на: комментарий от iZEN

я думал ты будешь всеми конечностями за postgresql :-)

splinter ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.