asserte

Рейтинг
12
Регистрация
16.11.2008
Dreammaker:
индексы были?

на таких объёмах удаление индексов значительно ускоряет добавление данных. Правда, если потом они всё же нужны, их нужно опять добавить - это всё же замедляет процесс. Но в целом ускоряет. :)

В исходной таблице был primary_key id_domain с автоинкрементом. По нему и делались апдейты. По домену смысла не было делать индекс - выборок не было, в поиске не участвовало поле.

netwind:
asserte, тогда совсем непонятно. ну сделали бы индекс по первой букве. или вон по первым двум из md5 для равномерности.
а запросы lock table ужасно легкие ведь. если вы не подключаетесь к удаленным базам по интернету, число запросов не влияет напрямую на скорость

Воткните список доменов обычными INSERT`ом в табличку (я кидал - было 1.2 ляма). После пятисотой тыщи начинались такие тормоза на запрос (AMD 3000+ 64 / 1.5 Gb Ram), что плакать хотелось. Это - обычный инсерт... Потом, когда пошел апдейт на булевы значения (в обработке/нет) пошли проблемы, когда два из 150 процессов тупо друг-дружку перекрывали. Лок, как таковой - не очень быстро, при таких объемах (это так кажется, что будет летать - можете для эксперимента дампик пульнуть в базу - увидите сами).

Сначала с таблицами колдовали - не удалось добиться приемлимого времени обработки запросов. Перешли на модификацию бизнес-логики (обработка запросов стэками) - не помогло. Приемлимых результатов добились только разбиением списка по первым буквам.

Собсно, вот так. А на счет реализации... ХЗ - под каждую задачу своё решение. :)

Складной стулик? :D

HraKK:
asserte, GET_LOCK()

3 запроса вместо 1-го. Решение, конечно... :o

netwind:

разбивать одну таблицу innodb на таблицы с целью увеличить конкурентность запросов - это глупо.

Денормализация бд - вообще нелогичное занятие. Разбивались данные на таблицы не для повышения конкурентности, а для ускорения исполнения запросов :)

HraKK:
asserte, а нахуя такой таблице innoDB ? Почитайте в чем в корне отличие myisam и innodb поймете что и когда надо юзать. При MyISAM insert будет такой же быстрый как и в таблице с 10 записями, а если еще применить delayed...

А накуя я показал булево значение? Наверное, показать, что могут понадобиться транзакций(Покажете, как делать "красиво" без использования InnoDB лок? Хотя, соглашусь, ответ не на поверхности :))? По секрету скажу - 150 процессов использовало таблички. Эффективно отражать коллизии можно только при транзакциях.

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

Соответственно, индексы по полям, которые планируется использовать в условиях (WHERE...)

HraKK, на счет "тьфу" - чот слабо верится... Помнится простой опыт - список доменов в таблице (1.2 ляма)

id_domain (int 11), domain (varchar 255), some_boolean (tinyint 4). Индекс по id_domain (primary_key не автоинкремент), some_boolean. Приходилось пилить на 25 таблиц - по начальным буквам, для шустрой работы. InnoDB, транзакции - очень неприятно в оригинале работать было. Помнится, за 800к уже сложно запросы (простые Insert / Update) проходили - по 2-3 секунды, что для нормальной работы было чрезчур ;)

С днем =)

Рабочих, творческих, душевных благ ;)

У каждого свое... Я бы мамбу льнул на локалку. Чтобы потом Джефу продать :D

ТС, я код просил. Если Вы понимаете зачем нужен ООП, покажете хорошие применения своим знаниям - помогу с работой (за процент, разумеется). Не нужно мне визуалку показывать... Тем более - там вообще нечего показывать - хня какая-то.

Говорила мне мама, работай в koi8-r ((((

Всего: 200