
Vladislav
18.10.2017
17:21:59

lost
18.10.2017
17:28:25
Ага, и специально для этого в mysql 5.7 появилась оптимизация, которая реврайтит подзапросы в джоины)
Не всегда она выше
Зависит от кейса

Google

Vladislav
18.10.2017
17:44:28
Ну это скорее mysql кривой, в других базах все норм

Rishat
19.10.2017
07:26:27
Доброе утро! Из-за 50 % потери производительности при использование ssl шифрования между mysql клиентом и базой, по совету percona перешел на связку openvpn между клиентом и базой, к сожалению, это дало примерно те же результаты производительности что и использование ssl около 6500 per sec на read. Все тачки на тестах в ресурсы точно не упирались. Подскажите пожалуйста способ как лучше защитить mysql подключение без существенных потерь производительности ?

freecod
19.10.2017
07:33:49
Скрыть их в ДМЗ

Уроде
19.10.2017
07:35:30
У кого опыт в SQL есть, подскажите с типовой задачкой.... есть табличка с полями время и delta... delta - целое число (полож. или отрицательное), как найти запись при которой SUM(delta) по всем более ранним записям максимальна?

AnTi3z ??
19.10.2017
07:36:55
мне нужно найти максимум значения имея дельту на каждый момент времени
получается надо сделать выборку, добавив поле, которое равно сумме delta всех предыдущих записей....
SELECT time as time1, delta, (SELECT SUM(SELECT delta FROM tbl WHERE time <= time1) as current .... что-то типа такого

Dmitriy
19.10.2017
08:06:19
Приветствую.
Oracle: так я получаю текущий audsid select sys_context('USERENV', 'SESSIONID') from dual;
А вот так я могу получить историю буквально за месяц select * from v$active_session_history
Где можно найти полную историю за все время?

Ilia
19.10.2017
08:10:40
Историю чего, ? Разберись...
v$active_session_history может тоже отсутствовать, на сколько я знаю.
СУБД же не может тебе за всю историю существования все сессии хранить.

Google

Dmitriy
19.10.2017
08:12:49
Ну вот смотри, в таблицах при инсерте также вставляется audsid. Мне нужно по этому ид вычилсять кто вставил данную запись

Ilia
19.10.2017
08:14:19
Это либо надо аудит системный вести, либо самому аудит делать , записывать каждый ченж в БД

Dmitriy
19.10.2017
08:14:34
Без включения аудита оракл хранить историю?

Ilia
19.10.2017
08:14:46
Историю чего?

Dmitriy
19.10.2017
08:15:27
ну этих audsid, ну я уже понял что походу либо сами вставлять либо вкл. аудит да?

Ilia
19.10.2017
08:15:50

Dmitriy
19.10.2017
08:17:03
А вот эта хня sys_context('USERENV', 'SESSIONID') она всегда уникальна?

Ilia
19.10.2017
08:17:51
Это идентификатор текущей сессии.
Единомоментно он уникален. Сессия кончилась — всё, его нет.
Началась новая — она может быть с тем же SID.

Dmitriy
19.10.2017
08:18:19

Ilia
19.10.2017
08:18:29
В ORA есть встроенный системный аудит, который записывает все операции, в том числе даже доступ.
НО НЕ сами изменённые данные.
Это надо делать самому.

Dmitriy
19.10.2017
08:21:34
Ну а системный аудит если его включить, он насколько долго хранит историю? это настраивается?

Ilia
19.10.2017
08:22:39
Да, настраивается. Совсем глубокие детали я не знаю.

Dmitriy
19.10.2017
08:23:40

Ilia
19.10.2017
08:24:16
Знаю, что там настраивается, что записывать, какой вид доступа к БД, можно записывать ВСЁ.
Разумеется, можно и настраивать, как долго это хранить.
Также могу сказать, что это создаёт СЕРЬЁЗНУЮ дополнительную нагрузку на СУБД.

Dmitriy
19.10.2017
08:26:57
а вот про эту табличку чет можешь сказать? select * from SYS.AUD$;

Google

Ilia
19.10.2017
08:33:01
Ну вроде это как раз аудита таблица.
Точно не знаю.

Dmitriy
19.10.2017
08:34:15
AUDSID Уникальный идентификатор сессии за всё время жизни экземпляра базы данных Oracle.
на сколько это соответствует действительности? я планирую сделать свой аудит (таблица в которой будет audsid, имя пользователя и дата коннекта) Что мне за id взять? Стоит ли брать audsid?
А в таблицах которые будут "отслеживаться" будет поле с этим id (`sys_context('USERENV', 'SESSIONID')`) и по нему вытаскивать кто вставил/изменил

Ilia
19.10.2017
08:45:56

Алексей
19.10.2017
08:46:40

Dmitriy
19.10.2017
08:48:55

Алексей
19.10.2017
08:49:53
да, on logon
Проверил инфу насчет audsid - он берется из сиквенса, там максимум 2 млрд значений может быть. После этого опять в 1 сбросится.

Dmitriy
19.10.2017
08:57:31

Алексей
19.10.2017
09:00:11
не должно быть

KOT
19.10.2017
09:03:08

Rishat
19.10.2017
09:04:54
База 16 ядер ram 16 , хост с sysbench 4 ядра 4 гига

Sergey
19.10.2017
09:05:51

Алексей
19.10.2017
09:06:45

Rishat
19.10.2017
09:07:28
Нет возможности , согласно плану архитектуры приложения это разные хосты , если бы можно так было сделать необходимость в ssl или openvpn отпала бы сама собой

Dmitriy
19.10.2017
09:08:56

Ilia
19.10.2017
09:08:57

KOT
19.10.2017
09:09:16

Sergey
19.10.2017
09:12:23

Google

Алексей
19.10.2017
09:14:23
На мой взгляд для аудита заюзать штатные процедуры Оракла. Потому что ваша процедура будет скорее всего грузить базу сильнее, чем штатная.

KOT
19.10.2017
09:14:47

Rishat
19.10.2017
09:16:26
Уточнение хост и база являются квм виртуалками , каких либо процессорных инструкций касаемо шифрования я не обнаружил
Тк пока это тестовый стенд

KOT
19.10.2017
09:17:42
А итоговый тоже будет виртуалкой или дедиком?

Admin
ERROR: S client not available

Rishat
19.10.2017
09:21:13
Нет онли дедики

KOT
19.10.2017
09:44:47
Тогда и тестируй так же

Maxim ??
19.10.2017
10:45:50
на сколько я знаю не очень правильно юзать удаленную базу напрямую
А если поднять ssh тунель ?

Александр
19.10.2017
11:12:33

Maxim ??
19.10.2017
11:14:03
эт еще почему?

Александр
19.10.2017
11:14:11
почитал выше, зачем openvpn если достаточно любого туннелирования (тот же IPSEC отдельно)
и много ресурсов тратиться именно на повторные подключения к БД

Maxim ??
19.10.2017
11:14:52

Александр
19.10.2017
11:15:13
ну я про веб приложения
там у php мало интриги
в целом в статье перконовской говориться именно про пересоединения к mysql

Google

Александр
19.10.2017
11:16:42
самый быстрый по производительности способ туннелирования (с шифрованием) в линуксе - ipsec, если я не ошибаюсь
интересно почему перкона его в сравнении не учитывает (и не нужно будет proxySQL)

Rishat
19.10.2017
11:19:00

KOT
19.10.2017
11:20:24

Rishat
19.10.2017
11:20:44

Rushan
19.10.2017
12:47:52
Добрый день!
Подскажите плз, что я не так делаю:
select * from publications pub join (select * from instances where instances.IdOfPublication = pub.IdOfPublication limit 1) inst on pub.IdOfPublication = inst.IdOfPublication
where pub.IdOfPublication = 1
Где-то делаю глупость, не пойму где )
смысл в том, чтобы вытащить у приджойненной таблицы первое совпадение

Vladislav
19.10.2017
12:51:05
первое случайное совпадение
ох уж эти ваши ахтунги...

Vitality
19.10.2017
12:51:15
+

Vladislav
19.10.2017
12:52:11
почему нельзя сделать просто джойн и лимит? зачем подзапрос?

KOT
19.10.2017
12:54:03

Rushan
19.10.2017
12:54:17
это просто сокрщенно, на самом деле тут ещё перед этим 5 таблиц крепится джойнится)

Vladislav
19.10.2017
12:54:45
сокращено написан неоптимизированный бред
думаю, что в полной версии он аналогичный

Rushan
19.10.2017
12:56:49
а как мне соптимизировать ?