Нужен совет: таблица с несколькими миллионами записей

123 4
HraKK
На сайте с 02.03.2009
Offline
128
#11

Элементарно, почитайте про оптимизацию запросов. 1 млн записей для мускула при умелом подходе - тфу.

я гарант (/ru/forum/493343) уже не оказываю данные услуги, извините.
embo
На сайте с 05.12.2008
Offline
24
#12

mysql еще 5 лет назад поддерживал таблицы по 10 млн записей и не жужжал

скорость выполнения зависит от железа и правильной настройки индексов

Плавно двигаемся от сапы к статьям (http://miralinks.ru/users/registration/from:4223)
A
На сайте с 16.11.2008
Offline
12
#13

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

Соответственно, индексы по полям, которые планируется использовать в условиях (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 секунды, что для нормальной работы было чрезчур ;)

Пишу на похапэ (/ru/forum/342374). Аудит скриптов. За деньги. Качественно.
9
На сайте с 18.08.2007
Offline
72
#14

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

важный момент это достаточность оперативной памяти на серваке под ваши запосы... то есть если будете тестить на серваке с 2-4 гигами может быть все ок... а на 256мб - 1 гиг все тормозить будет

помните скупой платит дважды ;)

PS: если правильно спроектирована бд и достаточно памяти на серваке то, что 1 млн записей, что 10 млн даже разницы не увидите...

HraKK
На сайте с 02.03.2009
Offline
128
#15

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

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

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

HraKK
На сайте с 02.03.2009
Offline
128
#17

asserte, GET_LOCK()

N
На сайте с 31.07.2007
Offline
25
#18
asserte:
Судя по описанию, текстовые и чаровые поля можно вынести в отдельную таблицу.
Соответственно, индексы по полям, которые планируется использовать в условиях (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 секунды, что для нормальной работы было чрезчур ;)

А через md5 нельзя ли сделать?

То есть создать ещё одно поле с md5 только туда пихать не все 32 символа а первые 4.

N
На сайте с 06.05.2007
Offline
419
#19
Jeff:
проблема в данных, у меня нет такой таблицы, но при использовании скрипта планируется такое кол-во записей.

Так сделайте : EMS Data Generator for MySQL. Да, это варез, но вам понравится графический интерфейс.

asserte:
Судя по описанию, текстовые и чаровые поля можно вынести в отдельную таблицу.
Соответственно, индексы по полям, которые планируется использовать в условиях (WHERE...)

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

asserte:
Приходилось пилить на 25 таблиц - по начальным буквам, для шустрой работы. InnoDB, транзакции - очень неприятно в оригинале работать было

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

Кнопка вызова админа ()
A
На сайте с 16.11.2008
Offline
12
#20
HraKK:
asserte, GET_LOCK()

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

netwind:

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

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

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий