Большие БД

12
sidorka
На сайте с 17.08.2012
Offline
211
826

Как грамотно работать с большими БД?

Данные однотипны, только вот записей несколько сотен миллионов - медленно, индексы не спасают :(

Может в несколько таблиц оформлять, разбивая по первичному ключу? Или в несколько баз?

NoSQL, наверное, не пойдет - нужно сортировать и группировать результаты.

Поделитесь мыслями или подкиньте ссылок на актуальные грамотные статьи по этой теме, пж.

Дешевые домены для дорвеев и не только - от 55р (https://goo.gl/Wtnwqp)
N
На сайте с 20.03.2013
Offline
24
#1

а если контент кешировать?

K
На сайте с 10.01.2015
Offline
110
#2

Уточните пожалуйста вес базы, мне даже интересно стало...

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

А можно инфы нормально вбросить, включая понимание термина "медленно"

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
sidorka
На сайте с 17.08.2012
Offline
211
#4

Neostar, это первым делом.

Kepus, около 30 гиг сейчас. Нужно больше.

N
На сайте с 20.03.2013
Offline
24
#5
sidorka:
Neostar, это первым делом.
Kepus, около 30 гиг сейчас. Нужно больше.

А база на SSD диске находится, скорость соединения SATA III ?

sidorka
На сайте с 17.08.2012
Offline
211
#6

TF-Studio, медленно оно и есть медленно. В базе хранятся связи всякие, текстового контента, как такового, относительно немного. По ним и идет выборка с сортировкой, группировкой, джоинами. ORDER BY RAND() не применяется.

Структура вот такая, например.



Или вот такая.





---------- Добавлено 07.07.2015 в 22:04 ----------

Neostar, нет, на обычном.

---------- Добавлено 07.07.2015 в 22:08 ----------

Пример запроса.

$posts = $db->query(

"SELECT p.page_id, k.keyword, p.preview, p.add_date, p.views, "
."c.description AS category, CONCAT('/category/', c.id) AS category_url, "
."CONCAT( '".IMAGE_SERVER."/thumbs/', c.folder, '/', i.folder, '/t_', i.name ) AS image,"
."CONCAT('/page/', p.category_id, '/', p.page_id) AS url "
."FROM ("
."SELECT * "
."FROM pages "
."WHERE domain_id=".DOMAIN_ID." AND add_date IS NOT NULL "
."ORDER BY add_date DESC "
."LIMIT ".$page * POSTS_ON_PAGE.",".POSTS_ON_PAGE
.") AS p "
."JOIN keywords AS k "
."ON k.id = p.keyword_id "
."JOIN categories AS c "
."ON c.id = p.category_id "
."JOIN images AS i "
."ON i.id = p.image_id"
N
На сайте с 20.03.2013
Offline
24
#7

Вместо оптимизации БД, перенесите её лучше на SSD хостинг например besthosting.ua или купите сервер и попросите их настроить, тогда у вас будет колокейшен

sidorka
На сайте с 17.08.2012
Offline
211
#8

Neostar, думал про это. Это самый простой путь, а мы легких путей не ищем :) Должно быть другое решение - жили же как-то до SSD.

N
На сайте с 20.03.2013
Offline
24
#9

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

sidorka
На сайте с 17.08.2012
Offline
211
#10

Neostar, да мы молока не видали пока... :) Тренируюсь на кошечках, так сказать :)

12

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