@dba_ru

Страница 213 из 718
Ilia
23.08.2017
11:19:01
И?

Мы какую сейчас задачу решаем? Вставить запись только если её нет или что ?

Павел
23.08.2017
11:20:00
это не верно. я наверно сильно затуманил всем голову - но думаю может из этой ситуации лучше через транзакцию выкрутится ?

да, все верно, вставить запись если ее нет, но при этом предваритьельно проверить базу на существование такой же записи но под другим id - который уникальный и праймари

Google
Павел
23.08.2017
11:27:43
о - вот это гуд идея - спасибо я про это не подумал!

Ilia
23.08.2017
11:34:11
Как бы предыдущий мой совет без этого всё равно не работал бы...

Павел
23.08.2017
13:19:03
Как бы предыдущий мой совет без этого всё равно не работал бы...
Спс все получилось - даже 2-й кюч не пришлось задействовать - только 1 - вот сам кверик : insert into areas (com_port, phone, area, acct, acct_counter, data_incoming, time_incoming) SELECT 'COM4', '+99999999999', '12', '143848', '1050', '2017-07-26', '07:50:45' FROM areas WHERE NOT EXISTS (SELECT * FROM areas WHERE com_port = 'COM4' AND phone = '+99999999999' AND area = '12' AND acct = '143848' AND acct_counter = '1050' AND data_incoming = '2017-07-26' AND time_incoming = '07:50:45' AND id != 0 ) LIMIT 1;

Fike
23.08.2017
14:07:15
храните просто чейнджсеты в разных таблицах и не допускайте того, чтобы два проекта пытались заменеджить один и тот же объект

если вы, грубо говоря, в проекте 2 видите, что в проекте DB вам не хватает полей, то это на самом деле значит, что проект DB должен их объявить, а проект 2 - дождаться

Константин
23.08.2017
14:11:44
дело не в конфликте мержей.

я скорее сумбурно объяснил

конфликта нет, все работает, но нужно откатить состояние (liquibase, не vcs)

можно ли как-то централизовано откатить до какого-то состояния

?

Google
Fike
23.08.2017
14:13:45
обычный роллбэк

Константин
23.08.2017
14:19:51
понял, спасибо

Alex
23.08.2017
15:52:57
Товарищи, такой вопрос по монге. Можно юзеров привязать к реквестам в одной коллекции: { 'login': blah, 'email': bar, 'password': foo, requests: [ { 'payload': foobar, 'document_id': baz } ] } А можно хранить референс на юзера в отдельной коллекции реквестов: { 'login': blah, 'email': bar, 'password': foo } --- { 'user_login': blah, 'payload': foobar, 'document_id': baz } Первый железно удостоверяет, что реквест без юзера существовать не может. Второй выглядит как SQL-way, но чуть поаккуратнее первого. Как будет Mongo-way?

Fike
23.08.2017
15:57:26
а как он у вас появится без юзера?

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

Alex
23.08.2017
15:58:36
а как он у вас появится без юзера?
В коде реквест появляется как User.from_database(blah).add_request(foo)

Fike
23.08.2017
15:59:11
Думаю такого не будет (стандартная отмазка про то, что 16мб это много).
я видел фильм ужасов, который начинался с такой фразы

Alex
23.08.2017
15:59:43
Но если всунуть его внутрь, то и в базе он без юзера не сможет появиться.

Fike
23.08.2017
15:59:52
Ага, а как он вообще у вас может появиться без юзера при альтернативной обработке?

Fike
23.08.2017
16:00:39
В смысле не вытаскивать перед этим пользователя из базы

Точнее даже не так

если мы поменяем функцию persist(id, request) { db.getUser(id).requests.push(request) } на persist(id, request) { request.user = id db.requests.push(request) То каким образом может получиться ситуация, в которой айдишник не принадлежит какому-то юзеру?

сейчас просто моделируется ситуация "прилетит космический луч и нарисует айдишник из воздуха"

Alex
23.08.2017
16:04:02
Нууу... если кто-то будет юзать код не по докам и создавать реквест через встроенный init питона.

Fike
23.08.2017
16:04:24
с тем же успехом он может получить прямое поджключение к базе и напихать вам вообще чего угодно

Fike
23.08.2017
16:09:09
Ее не будет. Null (None) там где не нужно нарисоваться может, но скорее это будет простой недосмотр в коде и защищаться от него надо валидацией перед сохранением, а не разухабливая записи на килобайты.

Alex
23.08.2017
16:09:43
Ок, спасибо!

Google
Dmitry
24.08.2017
06:02:44
всем привет. может подскажите что.. 2 сервера, freebsd 9 и11, mysql 5.5 и 5.6 соответственно, базы одинаковые, конфиг мускула - одинаковый. но один и тот же запрос с like на 5.5 занимает 0002 секунды, а на 5.6- 2-3 секунды

Dmitry
24.08.2017
06:07:13
пример?

сорри, фс и версии ос? в нем?

Vladislav
24.08.2017
06:08:34
И даже в железе

Dmitry
24.08.2017
06:11:16
хм.. затык то только в LIKE.. и серьезных нагрузок нет..

Vladislav
24.08.2017
06:24:29
Но ответ все равно там

Сравниваете же полностью разные системы

Dmitry
24.08.2017
06:28:44
спасибо, потестим. может откачусь на 5.5

Dmitry
24.08.2017
08:07:56
Спасибо, гляну

Ilia
24.08.2017
09:03:42
всем привет. может подскажите что.. 2 сервера, freebsd 9 и11, mysql 5.5 и 5.6 соответственно, базы одинаковые, конфиг мускула - одинаковый. но один и тот же запрос с like на 5.5 занимает 0002 секунды, а на 5.6- 2-3 секунды
Дмитрий, посмотри планы запросов хотя бы. Потом, то, что у запросов разные времена выполнения, не говорит ни о чём. Секундой больше, секундой меньше — не показатель

Dmitry
24.08.2017
09:14:59
2 идентичные базы по всему - объем данных, типы таблиц.. Основное отличие- ос, фс и версия mysql. И разница не в секунду, а на несколько порядков. 0.002 против 2.

Admin
ERROR: S client not available

Dmitry
24.08.2017
09:16:46
Если такой же запрос, но без like-все отлично, но like необходим

Ilia
24.08.2017
09:29:16
Смотри планы на обоих машинах.

Сравнивай DDL таблиц

Но даже при этом у тебя разные могут планы и запросы по-разному работать — версии MySQL у тебя разные.

Fike
24.08.2017
09:47:34
эксплейн-то сравните/покажите

Google
Ilia
24.08.2017
09:47:53
Не покажет, он же гордый!

Fike
24.08.2017
09:48:21
больше всего на свете на свою реплику я хотел получить заправскую шутейку

Dmitry
24.08.2017
10:01:35
Не могу сейчас показать, в пн, не раньше..

Короче кругом виновен, извиняюсь, что, задав вопрос, не смог показать полную картину. Не стебусь -

Сам все понимаю

Ilia
24.08.2017
10:34:33
Дмитрий, на самом деле нам там смотреть особо и не на что, это для тебя. Посмотри планы запросов там и там, посмотри, чем план на "плохом" отличается от "хорошего", попытайся понять, почему. Если поймёшь сам, там индекса нет или что — хорошо. Если планы одинаковые — значит, что-то совсем не так в "плохом" с конфигурацией, либо просто случайный эффект (например, кэш данных не был заполнен) Если планы разные и непонятно почему — вот тогда можешь показывать и плакаться.

lost
24.08.2017
10:40:10
мне всегда нравилась политика mysql с новыми фичами

они все включают по-умолчанию

Dmitry
24.08.2017
10:41:05
План это explain?

lost
24.08.2017
10:41:11
да

Dmitry
24.08.2017
10:43:40
С ходу не вспомню, сравню,

lost
24.08.2017
10:44:34
если не разберешься: присылай планы, ddl таблицы и вывод SELECT @@optimizer_switch;

Ilia
24.08.2017
10:47:28
DDL всех таблиц на двух серверах!

И лучше не присылать, а на pastebin...

Dmitry
24.08.2017
10:51:11
Да на gist положу, не проблема

Stas
24.08.2017
16:35:30


Vladislav
24.08.2017
18:23:35
Кто все эти люди? ?

Pavel
24.08.2017
18:24:10
Это не люди, это либо хры, либо боты. Не знаю, что хуже.

Страница 213 из 718