Оптимальное кол-во записей в таблце MySQL

12
RM
На сайте с 21.06.2011
Offline
77
900

Всем привет! Вопрос таков: я создаю сейчас скрипт сокращателя ссылок(на подобии bit.ly) и я решил все записи(ссылки и пользователи) хранить в БД MySQL, скрипт предполагает размещение до 3.5 миллионов ссылок, а значит запихнуть их в одну таблицу в БД - просто безумие, я решил эту проблему так: распределение ссылок по таблицам, например - в каждой таблице по 100 000 записей или по 500 000 записей.

Структура таблиц такая:

id | link(до 5000 символов) | hash | gocount(кол-во переходов) | user | date

При каждом переходе по ссылке из БД выдирается link и gocount, потом к значению gocount прибавляется 1 и совершается редирект на линк указанный в поле link.

--------------

Итак вопрос: сколько оптимально можно запихнуть в таблицу записей, чтоб она не тормозила при запросах.

N
На сайте с 06.12.2006
Offline
75
#1

3.5M записей, это не много. Выборка по уникальному ключу, будет быстрой

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#2

Тормоза, зависят:

1. От правильности структуры таблицы и индексов

2. Запросов к таблице

3. Процессора сервера

4. Настройки mysql

5. Скорости HDD и его занятости другими делами

А записей холь 10 миллионов, бд пофигу.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
B
На сайте с 25.02.2009
Offline
68
#3

Структура нормальная, проблема может быть в введении лога колва переходов - логи это самые нагруженные части проекта. Например в litepublisher для абсолютно такой же задачи я вначале пишу в текстовый файл (путем добавления) id переходов, потом (например раз в час) подсчитывается статистика переходов и одним запросом обновляется бд, тогда при таком алгоритме получается много читателей таблицы и редкие запросы по обновлению, если же каждый раз по клику обновлять бд, то при большом колве кликов могут быть проблемы с производительностью. Как видите, структура таблицы не имеет решающего значения для данной задачи

Бесплатная CMS LitePublisher это блог, вики, тикет система, голосование (http://litepublisher.ru/) на высокой скорости с минимум памяти
D
На сайте с 09.07.2011
Offline
28
#4

а точно есть большоый выигрыш между записью в файл или записью в БД?

понимаю если бы временный набор логов складывался в мемкеш, а с него уже отдельный процесс по крону сливал в БД, притом которая находится не на продакшн сервере :)

DV
На сайте с 01.05.2010
Offline
644
#5

Мысль у меня есть по этому поводу.

Подумайте над созданием словаря, как в архиваторах. Возможно, ужмётся база.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
B
На сайте с 25.02.2009
Offline
68
#6
d1gi:
а точно есть большоый выигрыш между записью в файл или записью в БД?

понимаю если бы временный набор логов складывался в мемкеш, а с него уже отдельный процесс по крону сливал в БД, притом которая находится не на продакшн сервере :)

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

RM
На сайте с 21.06.2011
Offline
77
#7

Ну... я уже думал над созданием временных файлов и их удалении по крону напр. раз в час... но это все похоже на "карточный домик" - что-то пойдет не как продумано и... все!

RoMaN444Ik добавил 19.07.2011 в 12:27

PS. У сервер процессор достаточно мощный: Intel XEON 14x2267MHz... думаю этот и 100 миллионов записей одолеет :)

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#8

3,5 миллионов записей, что тут такого безумного то а?!

Индекс вставили и будет бегать и прыгать, для этого БД и создавали. Учитывая, что база не будет весить ГБ 10, но тут уже от сервака зависит и от количество памяти его.

Dreammaker
На сайте с 20.04.2006
Offline
569
#9
LEOnidUKG:
Индекс вставили и будет бегать и прыгать

создание индекса при вставке может тормозить запись, не обязательно в конкретно этом случае, но может.

B
На сайте с 25.02.2009
Offline
68
#10
RoMaN444Ik:
Ну... я уже думал над созданием временных файлов и их удалении по крону напр. раз в час... но это все похоже на "карточный домик" - что-то пойдет не как продумано и... все!

А что плохо в такой модели? Что же там может рухнуть? Перестанет писаться лог файл?

12

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