@pgsql

Страница 1030 из 1062
Alex
10.10.2018
22:29:38
хочу чтобы был балансинг между нодами на чтение и запись в одну ноду

Alex
10.10.2018
22:41:31
ок, всем спасибо за ответы

Mike Chuguniy
11.10.2018
02:23:12
хочу чтобы был балансинг между нодами на чтение и запись в одну ноду
Ну так plproxy же! Одна из задач, им выполняемых - как раз раскидывать выполнение ф-ий по условию. А вот условие вы уже сами рисуете.

Google
Mike Chuguniy
11.10.2018
02:32:10
Реплики синхронные, внедрение хранимок невозможно
Про внедрение - это вот зря. 1. скорость выполнения запросов не падает, а может увеличиться; 2. балансировка как горизонтальная, так и разбиение на чтение/запись с помощью plproxy без дополнительного рукоблудия с двумя коннекторами в приложении. О разделении нагрузки на чтение и на чтение/запись - это вот первая мысль у меня в своё время была, когда я доку по plproxy читал. Ну и Космодемьяский в своё время рассказывал разное. Только вот я не помню, в кулуарах митапа в Яндексе, сентябрь 2014-го, или где-то в докладах, не спрашивайте.

Usagi
11.10.2018
04:20:20
Получается, лучше использовать MySQL Percona если к задаче это подходит?

Прост я всегда топил за Postgres, не смотря ни на что)

Maxim ??
11.10.2018
04:24:42
Получается, лучше использовать MySQL Percona если к задаче это подходит?
Инструмент должен соответствовать задаче. Если мускуля хватит на 146%, то почему бы и нет.

Alex
11.10.2018
05:23:17
Aleksander
11.10.2018
05:26:38
Всем привет. Почему данная функция не хочет работать и ругается на поля с типом char ERROR: column "fam" is of type character[] but expression is of type text LINE 11: substr(upper(md5(random()::char)),1,30), ^ HINT: You will need to rewrite or cast the expression. QUERY: insert into markcontrol.test_table (id, fam, nam, otc, drg, sn, nomer) values (nextval('markcontrol.seq_test'), substr(upper(md5(random()::char)),1,30), substr(upper(md5(random()::char)),1,30), substr(upper(md5(random()::char)),1,30), current_date, substr(upper(md5(random()::char)),1,2), trunc(random()*999999999999))

Maxim ??
11.10.2018
05:27:05
по моему он русским языком тебе говорит

Aleksander
11.10.2018
05:27:59
по моему он русским языком тебе говорит
что текст не может в char преобразовать?

Maxim ??
11.10.2018
05:29:55
добавь к значению, которые в "fam" попадут ::varchar

Aleksander
11.10.2018
05:30:57
добавь к значению, которые в "fam" попадут ::varchar
поле в таблице сделать varchar ? или значение которое пытаюсь воткнуть должно быть varchar?

Maxim ??
11.10.2018
05:31:32
ну тебе либо в таблице fam надо на text поменять, либо в запросе кастовать

Aleksander
11.10.2018
05:32:09
Darafei
11.10.2018
05:33:20
character[] - это массив символов, кто его вообще зачем написал?

Google
Maxim ??
11.10.2018
05:33:27
Разница только в том, что у варчара есть заранее заданное ограничение на длину, а у текста нет.

Aleksander
11.10.2018
05:42:17
А как в этом цикле промежуточный комит поставить через каждые 100 записей? begin for i in 1..1000000 loop insert into markcontrol.test_table (id, fam, nam, otc, drg, sn, nomer) values (nextval('markcontrol.seq_test'), substr(upper(md5(random()::text)),1,30), substr(upper(md5(random()::text)),1,30), substr(upper(md5(random()::text)),1,30), current_date, substr(upper(md5(random()::text)),1,2), trunc(random()*999999999999) ); end loop; end;

Aleksander
11.10.2018
05:44:27
простую тестовую операцию в цикле чтобы написать столько мучаюсь. А как вообще посоветуете нагенерить рандомных записей в 1 миллиард штук?

Darafei
11.10.2018
05:46:27
generate_series?

и create table as, зачем там вообще pl?

Maxim ??
11.10.2018
05:48:15
Aleksander
11.10.2018
05:49:55
generate_series?
А как с помощью него текст генерить?

Darafei
11.10.2018
05:50:20
generate_series()::text ?

Andrey
11.10.2018
05:50:38
можно внутри процедуры пачкой обновлять
Обновлять можно что угодно, commit нельзя сделать.

Darafei
11.10.2018
05:52:06
ещё можно не звать руками nextval

Aleksander
11.10.2018
05:52:14
generate_series()::text ?
мне нужно сгенерить 30 позиций рандомных букв и цифр в одной строчке и таких строчек должно быть 1млн

Maxim ??
11.10.2018
05:53:17
Обновлять можно что угодно, commit нельзя сделать.
Это еще потому что постгрес не умеет в nested transaction

Aleksander
11.10.2018
05:54:11
Darafei
11.10.2018
05:54:23
Ругается
как и на что?

Google
Aleksander
11.10.2018
05:54:51
yf rjk dj fhuevtynjd

на кол-во аргументов

Darafei
11.10.2018
05:56:03
попробуйте прочитать документацию на функции в выражении и решить, каких аргументов не хватает

Andrey
11.10.2018
05:56:34
Ругается
Кстати, на postgresql.org есть документация по всем функциям postgres, с примерами. Ну это я так, на всякий случай.

Darafei
11.10.2018
05:56:40
например, тут: https://www.postgresql.org/docs/10/static/functions-srf.html

Aleksander
11.10.2018
06:09:04
Не могу понять теперь как поле даты нагенерить ??? ФИО есть select s, substr(upper(md5(s::text)::text),1,30)fam, substr(upper(md5(s::text)::text),1,30)nam, substr(upper(md5(s::text)::text),1,30)otc, trunc((random()*999999999999)::numeric)nomer from generate_series(1,100) s

Ilya
11.10.2018
06:09:22
подскажите в чем ошибка: я програмно открываю соединение и устанавливаю set search_path to my_schema. все работает как ожидалось, но если начата транзакция и в этот момент идет из другой точки вставка в базу то вставка происходит в public а не в мою схему

Ilya
11.10.2018
06:10:44
это тесты(

Ilya
11.10.2018
06:11:13
то есть я вызываю функции с ормом

Maxim ??
11.10.2018
06:14:54
Например, так: select '2018-01-01'::date + interval '1 day' * (random()*365)::int from generate_series(1, 1000);
или так select timestamp '2018-01-10 20:00:00' + random() * (timestamp '2018-01-20 20:00:00' - timestamp '2018-01-10 10:00:00')

Darafei
11.10.2018
06:15:33
Aleksander
11.10.2018
06:15:51
ну типо trunc() есть?

Eugeny
11.10.2018
06:20:02
Ilya
11.10.2018
06:20:36
видимо орм если видит начатую транзакцию открывает новую сессию а там дефолт

Google
Ilya
11.10.2018
06:21:27
наверное правильно будет засунуть этот инсерт в транзакцию? как считаете - с точки зрения производительности?

Yaroslav
11.10.2018
06:21:35
видимо орм если видит начатую транзакцию открывает новую сессию а там дефолт
Ну так это проблема этого ORM, нет? Вообще, search_path можно на разных уровнях настраивать: для кластера, базы, пользователя...

ну типо trunc() есть?
https://www.postgresql.org/docs/current/static/functions-datetime.html

Ilya
11.10.2018
06:22:29
ну точнее не проблема а он так решает задачу производительности - раз есть транзакция то не будем ждать...

Yaroslav
11.10.2018
06:25:45
ну точнее не проблема а он так решает задачу производительности - раз есть транзакция то не будем ждать...
Звучит как бред, честно говоря... не должен какой-то API/ORM нарушать границы транзакций просто потому, что ему так "захотелось".

Mike Chuguniy
11.10.2018
06:27:19
простую тестовую операцию в цикле чтобы написать столько мучаюсь. А как вообще посоветуете нагенерить рандомных записей в 1 миллиард штук?
А почему Вы решили, что во всех остальных СУБД должно быть, как в Оракле? И на каком основании Вы считаете, что документацию читать нет необходимости. А судя по Вашим возмущениям, вы таки себя не утруждали хотя бы просмотром документации. Например, вот в этот раздел: https://postgrespro.ru/docs/postgresql/10/sql подраздел "Функции и операторы" вы не заглядывали точно.

Ilya
11.10.2018
06:28:48
Звучит как бред, честно говоря... не должен какой-то API/ORM нарушать границы транзакций просто потому, что ему так "захотелось".
он и не нарушает - просто запускает две конкурентные сессии. если все нормально и запросы в сессиях не пересекаются - то параллелизм, профит

а если в двух сессиях конкурентные транзакции - то опять же это проблема не орма а автора кода

оно и без орма дедлочить будет

Страница 1030 из 1062