
Borys
19.12.2017
17:04:34
@acromegale
.. вы могли бы привести пример?
пробую читать
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_found-rows
https://habrahabr.ru/post/64655/
и не нахожу такого применения. видимо нужно более внимательно читать

lost
19.12.2017
17:05:51
Функа возвращает результат выполнения, все просто
Там и примеры есть в мануале

Ilia
19.12.2017
17:16:51

Google

Ilia
19.12.2017
17:17:29

Edward
19.12.2017
17:18:29
тоесть один запрос может вернуть данные из двух разных таблиц?

Al
19.12.2017
17:50:35

Ilia
19.12.2017
20:04:44

Andrey
20.12.2017
00:20:02

Приносящий
20.12.2017
00:34:04
/help
/stat@combot

Combot
20.12.2017
00:34:18
combot.org/chat/-1001045152752

freecod
20.12.2017
01:24:07
А есть какие-то способы сохранить построенную группировку на уровне mysql для последующей выборки из нее?
Есть таблица с парой десятков миллионов данных, их нужно сгруппировать и дальше двигаясь чанками обработать (т.к. в память все даже после группировки не влезет). Как я понимаю группировка будет вызываться на каждой выборке чанка (limit - offset)

Виктор
20.12.2017
06:25:25
временная таблица?
И зачем все в память собирать?
Делаем запрос и построчно читаем. Если результат запроса большой - просто все в темп свалится

Артём
20.12.2017
07:44:52
Приветствую!
Дайте пожалуйста совет.
Необходимо изменить структуру таблицы postgresql96 (горячей, данные постоянно обновляются в этой таблице), добавить новый столбец.
Боюсь если это делать, то придятся отключать пользователей и производить изменения
Как это сделать лучше, что бы минимизировать влияние на пользователей?

Vladislav
20.12.2017
07:47:00
А альтер лочит вроде таблицы. Если процесс долгий то можно через подмену таблиц.

Google

Vladislav
20.12.2017
07:47:14
?

Alex
20.12.2017
07:47:40
Добавление с null
Оно быстро пройдет
Этож не мускуль

Vladislav
20.12.2017
07:48:11
Откуда понабежали?
А, из девопса

Артём
20.12.2017
07:49:42

Alex
20.12.2017
07:50:23

Артём
20.12.2017
07:50:59

Vladislav
20.12.2017
07:50:59

Alex
20.12.2017
07:51:40

Артём
20.12.2017
07:51:50
благодарю

lost
20.12.2017
08:11:54
Этож не мускуль
у мускуле добавление колонки с null тоже довольно быстро еще с 5.6
так что не надо тут...

Anton
20.12.2017
08:12:34
Ну да... На TokuDB только если

Alex
20.12.2017
08:14:31
или даже более ранюю версию
так что стереотипы остались :)

Google

lost
20.12.2017
08:15:48
c 5.6 подвезли online ddl, кратковременная блокировка будет только в самом конце на применении изменений, но это все же лучше чем полный мейнтенс на время альтера

Alexey
20.12.2017
08:18:21
ну, надо сказать, что в mysql добавление невиртуальной колонки всё-таки перестраивает таблицу, хоть и без блокировок. а в postgresql добавление nullable голонки это in-place, metadata-only операции
что не отменяет того факта, что все эти "стереотипы" 10-летней и большей давности несколько доставляют
это как если бы я ходил и везде рассказывал, что в постгресе нет репликации. ну, нуачо, в 8.4 же не было. стереотипы, вся хурма

Anton
20.12.2017
08:19:44
Ну, в мускуле есть разные движки. Для того же току это metadata-only операция. В экспериментально добавленном роксе вроде тоже, но это не точно))))

Alex
20.12.2017
08:20:24
но вообще надо да, почитать чо там нового завезли :)

Anton
20.12.2017
08:20:48

Alexey
20.12.2017
08:20:48
да отож. 4 года не срок, кто понял жизнь, тот не спешит

Anton
20.12.2017
08:22:05
Ещё бы MySQL научился эти onlyne-ddl реплицировать так же в фоне, цены бы ему не было
а то толку получается мало - вроде как и ничего не блокировалось, но слейва ушли в дофигищща отставания по реплике

Alexey
20.12.2017
08:23:24
для этого завезли gh-ost и pt-osc

Anton
20.12.2017
08:24:52
ну, тяжкие они... Не проще ли при добавлении например колонки на слейвах сначала добавить колонку в таких случаях, а потом на мастере и скипнуть ошибку "такая дрянь есть" на слейвах?

Alex
20.12.2017
08:26:35
сдается мне там опять блокировка будет на время обновления всего этого

Anton
20.12.2017
08:27:41

Alex
20.12.2017
08:28:00
вообщем мускуль это больно

Anton
20.12.2017
08:28:01

Alex
20.12.2017
08:28:34
никаких блокировок
а как ты себе представляешь это ? пока не изменился слейв на мастере нельзя трогать таблицу пока она не обновиться.
соответсвенно на все время обновлений обоих таблиц - хер

Google

Alex
20.12.2017
08:29:13
не ?

Anton
20.12.2017
08:29:29

Admin
ERROR: S client not available

Alex
20.12.2017
08:29:42
это при какой репликации ?

lost
20.12.2017
08:29:56
при любой

Alex
20.12.2017
08:29:59
О_О
нафиг так жить
не не, я лучше с постгресом буду жить дальше

Anton
20.12.2017
08:30:50
Слон слишком умным себя считает, а это плохо... Ну да ладно, ща в вечный холивар скатимся. Мне например слон не нравится совсем

Alex
20.12.2017
08:31:09
слишком умным это где ? :)

Anton
20.12.2017
08:32:11
Форс индексы никак не поставишь, например. А я хочу! Я вообще люблю отстреливать себе конечности

Alexey
20.12.2017
08:32:28
не не, я лучше с постгресом буду жить дальше
в постгресе специально для этого завезли логическую репликацию. чтобы разное число колонок на слейве и мастере, rolling schema updates, cross-version upgrades и вот это всё, с чем сталкиваются люди, которые базульки не только на локалхосте запускают

Alex
20.12.2017
08:32:45
я про логическую репликацию в курсе
поэтому и уточнял

Alexey
20.12.2017
08:33:01
воот, ну её не зря придумали

lost
20.12.2017
08:33:03
я думаю так правильнее

Anton
20.12.2017
08:33:21
Ну, в мускуле то ж самое)))) Там целая тьма вариантов иметь разное количество колонок и разные типы данных в них.

Alexey
20.12.2017
08:33:36
правда ей до мусклвской репликации пока как до китая раком. но лиха беда начало

Alex
20.12.2017
08:33:40
в мускуле есть же разные репликации

Google

Anton
20.12.2017
08:33:46

Alex
20.12.2017
08:35:05
ок

Alexey
20.12.2017
08:35:19
не завезли, а нагло спиздили из pg-logical
вот тут рассказывают, чем встроенная в postgresql 10 отличается от pglogical. невесёлое такое чтиво: https://blog.2ndquadrant.com/pglogical-logical-replication-postgresql-10/


Ilia
20.12.2017
08:35:36
А есть какие-то способы сохранить построенную группировку на уровне mysql для последующей выборки из нее?
Есть таблица с парой десятков миллионов данных, их нужно сгруппировать и дальше двигаясь чанками обработать (т.к. в память все даже после группировки не влезет). Как я понимаю группировка будет вызываться на каждой выборке чанка (limit - offset)
во-первых ,тебе надо понять, что никакие данные запроса в память не кладутся целиком, запрос просто выполняется, и результаты передаются клиенту. Это может быт очень длительный процесс.
2) LIMIT/OFFSET — да, не решение. Тут ты прав.
3) То, что тебе нужно — это простой курсор. Это значит, ПРОСТО ВЫПОЛНИТЬ ЗАПРОС (один раз) и выбирать из него данные.
Далее, есть два варианта технического оформления.
1) клиентский курсор — просто выполнить запрос , выбирать данные и обрабатывать построчно. Соединение с БД при этом будет занято на должное время выполнения запроса.
Разрывать его нельзя.
2) Так называемый серверный курсор, или просто курсор — это то, что описано тут
https://dev.mysql.com/doc/refman/5.7/en/cursors.html
как там с закрытием соединения, не знаю, наверняка, нельзя, но перемежать FETCHи из курсора с другими запросами вроде бы можно.


Артём
20.12.2017
09:13:42