@rubylang

Страница 666 из 1684
I
22.11.2016
08:23:33
"У меня не работает!" "Сделай так" "У меня не работает, помогите!" "Да сделай же так. И скажи, что у тебя там" "У меня не работает"

Michael
22.11.2016
08:24:55
Flight.unscope(:order).visible_only.explain EXPLAIN for: SELECT "flights".* FROM "flights" WHERE ("flights"."invisible" != $1) [["invisible", "t"]] QUERY PLAN -------------------------------------------------------------- Seq Scan on flights (cost=0.00..297.97 rows=2887 width=132) Filter: (NOT invisible) (2 rows) и

Flight.visible_only.explain EXPLAIN for: SELECT "flights".* FROM "flights" WHERE ("flights"."invisible" != $1) ORDER BY "flights"."departure_time" DESC [["invisible", "t"]] QUERY PLAN -------------------------------------------------------------------- Sort (cost=463.91..471.12 rows=2887 width=132) Sort Key: departure_time DESC -> Seq Scan on flights (cost=0.00..297.97 rows=2887 width=132) Filter: (NOT invisible) (4 rows)

I
22.11.2016
08:25:48
а индекс где тут?)

Google
I
22.11.2016
08:26:39
как часто будут такие запросы выполняться?

а то мб навесить частичный составной индекс по invisible='t', 'departure_time'?

Michael
22.11.2016
08:27:26
Flight.where(origin_id: 103).explain Sort (cost=456.93..463.16 rows=2494 width=132) Sort Key: departure_time DESC -> Seq Scan on flights (cost=0.00..316.21 rows=2494 width=132) Filter: (origin_id = 103) (4 rows)

вообще часто

Alex
22.11.2016
08:29:44
Пишет что у тебя всего 2500 строк

Michael
22.11.2016
08:30:11
Пишет что у тебя всего 2500 строк
это те которые попали в коллекцию

Alex
22.11.2016
08:31:26
Лол, хочешь добавлю тебе проблем?

Может настало время для эластики?

I
22.11.2016
08:32:22
да ладно, рано еще эластик, как по мне

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

Alex
22.11.2016
08:33:43
Релтсовый explain пишет какие индексы юзались?

I
22.11.2016
08:33:52
да

Google
Alex
22.11.2016
08:34:24
Я тогда в его explain не вижу юзания индексов.

Антон
22.11.2016
08:35:50
сдается мне что в сортировке индекс используется никак

Michael
22.11.2016
08:36:10
ну в схеме add_index "flights", ["arrival_time"], name: "index_flights_on_arrival_time", using: :btree add_index "flights", ["available"], name: "index_flights_on_available", using: :btree add_index "flights", ["capacity_basic_volume"], name: "index_flights_on_capacity_basic_volume", using: :btree add_index "flights", ["capacity_basic_weight"], name: "index_flights_on_capacity_basic_weight", using: :btree add_index "flights", ["capacity_estimated_volume"], name: "index_flights_on_capacity_estimated_volume", using: :btree add_index "flights", ["capacity_estimated_weight"], name: "index_flights_on_capacity_estimated_weight", using: :btree add_index "flights", ["departure_time"], name: "index_flights_on_departure_time", using: :btree add_index "flights", ["destination_id"], name: "index_flights_on_destination_id", using: :btree add_index "flights", ["origin_id", "airline", "flight_number", "departure_time"], name: "index_departure", unique: true, using: :btree add_index "flights", ["origin_id"], name: "index_flights_on_origin_id", using: :btree add_index "flights", ["slug"], name: "index_flights_on_slug", unique: true, using: :btree add_index "flights", ["invisible"], name: "index_flights_on_invisible", using: :btree

Alex
22.11.2016
08:36:39
А в базе они действительно есть?

Michael
22.11.2016
08:38:02
да, в базе тоже 12 индексов

I
22.11.2016
08:38:30
сдается мне что в сортировке индекс используется никак
ну тут никак, но никто не мешает добавить индекс, который бы использовался

Антон
22.11.2016
08:39:14
ээээ, ну.... эээ... вообще если индекс не используется то его лучше не добавлять, например для поля created_at

I
22.11.2016
08:40:31
не, я о том, что индекс по departure_time desc или по departure_time desc + invisible='t'

Антон
22.11.2016
08:42:29
так у меня и нет на него индекса
а может у тебя только локально тормозит?

Michael
22.11.2016
08:42:36
нет

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

ребята, ковырялись, но так ничего сделать и не смоги, в итоге повесили задачу на меня((

I
22.11.2016
08:44:23
СОЗДАТЬ ИНДЕКС имя_индекса ДЛЯ flights (departure_time УБЫВ, invisible) ГДЕ invisible=ИСТИНА

I
22.11.2016
08:45:03
да я код на 1с написал - и я не стесняюсь!)

но в 1с я не видел индексы, btw

Антон
22.11.2016
08:46:40
ну вообще да, больно

Index Scan using index_visits_on_created_at on visits Index Scan using index_visits_on_created_at on visits

не поможет индекс

Google
Alex
22.11.2016
08:50:35
а эластика поможет?

I
22.11.2016
08:50:45
а какой индекс именно?

не поможет индекс
а VACUUM не поможет тоже?

Rafkat
22.11.2016
09:06:55
https://telegram.me/pgsql

Антон
22.11.2016
09:30:58
а эластика поможет?
а чем может эластик помочь?

Alex
22.11.2016
09:31:10
а чем может эластик помочь?
Он вроде быстрее чем база работает, разве нет?

Антон
22.11.2016
09:31:26
для поиска, а не для сортировки, во первых

во вторых, эластик использует субд

Rafkat
22.11.2016
09:32:13
Пускают джунов в сложный прект

А потом за голову хватаются

Антон
22.11.2016
09:32:29
Пускают джунов в сложный прект
пускай, только следи :)

Alex
22.11.2016
09:32:40
Пускают джунов в сложный прект
Обычно это выглядит так: "Ребята я знаю как сэкономить деньги"

Alex
22.11.2016
09:32:49
"джун похапэ 30к гогого"

Adamtsov
22.11.2016
09:32:54
эластик субд только для индексации использует

Антон
22.11.2016
09:33:26
Adamtsov
22.11.2016
09:33:32
искать умеет

сортировать тоже умеет

Rafkat
22.11.2016
09:33:44
ребята, ковырялись, но так ничего сделать и не смоги, в итоге повесили задачу на меня((
Ребята мудаки? Сколько записей в таблице? Нагрузка какая?

Антон
22.11.2016
09:33:44
по индексам?

Adamtsov
22.11.2016
09:34:08
смотря какой мапинг будет

Google
Rafkat
22.11.2016
09:34:23
В эластике можно обратный поиск юзать

I
22.11.2016
09:34:34
во, индекс заработал) хуево, но заработал)

Антон
22.11.2016
09:34:35
сортировать тоже умеет
я не думаю что он сможет нормально сортировать да и размеры индексов по полю с датой будут огого какие

Rafkat
22.11.2016
09:34:48
Короче эластик можно юзать, но задрачмваться надо

Adamtsov
22.11.2016
09:35:13
ну как минимум нагрузку на бд снимет

Rafkat
22.11.2016
09:36:08
Проблемы с костом?

Сделай вакуум и посмотри

Michael
22.11.2016
09:36:41
Admin
ERROR: S client not available

Rafkat
22.11.2016
09:37:13
То есть сравни explain

Igor
22.11.2016
09:39:17
записей то нифига нет

почему так медленно?

может стоит нормализовать таблицу чутка?

Rafkat
22.11.2016
09:39:58
EXPLAIN (ANALYZE,BUFFERS)

Попробуй так

Вообще надо смотреть запросы через psql

Igor
22.11.2016
09:40:46
add_index "flights", ["invisible"], name: "index_flights_on_invisible", unique: true, using: :btree

Igor
22.11.2016
09:40:54
что это за индекс?

зачем invisible делать unique?

Google
Rafkat
22.11.2016
09:41:58
https://m.habrahabr.ru/post/203320/

Неплохая серия статей

Антон
22.11.2016
09:44:06
ну как минимум нагрузку на бд снимет
это зависит у тебя система может остановится если ты пишешь в основную базу а эластик параллельно индексы строит пстроение индеков тяжелая задача для эластика все может встать колом

Adamtsov
22.11.2016
09:44:52
если делать переиндексацию то да, очень долго

Антон
22.11.2016
09:45:02
не переиндексацию

ну к примеру чистный инсерт 1мс инстерт с эластиком может быть 200

20 инсертов в минуту на 1t.nano не заметно, 200 инсертов - все падает

Adamtsov
22.11.2016
09:46:42
закидывать это в sidekiq, использую групировку

Антон
22.11.2016
09:47:08
да речеь не в том как это потимизировать а в том что решая одну проблему - создаешь другую

и это не снимет нагрузку как минимум, некуда не девается нагрузку

она просто перераспределяется

Alex
22.11.2016
09:47:56
база плохо масштабируется, разве это плохо что ты снимешь с нее часть нагрузки?

Антон
22.11.2016
09:48:17
закидывать это в sidekiq, использую групировку
ну и при инсертах подразумевается что инсерт атомарный, что данные доступны для работы, а в сайдике 2м задач висит - плохая идея

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

Alex
22.11.2016
09:49:58
Шард это когда неправильно выбранный ключ и у тебя многие дни геммороя.

??

Антон
22.11.2016
09:50:30
кароче по датам лучше вообще не сортировать :)

Alex
22.11.2016
09:50:37
база в некоторых случаях нормально масщтабируется
Безусловно, но это самый сложный кусок приложения для масштабирования.

кароче по датам лучше вообще не сортировать :)
У него бизнеслогика к чертям полетит если он не будет так сортировать.

Страница 666 из 1684