@dba_ru

Страница 467 из 718
Al
28.03.2018
16:16:26
Если бы мне понадобилось искать частичные совпадения. То наверное я бы брал каждую строку из таблицы поменьше. И по столбику ее сверял складывая ид совпавших строк в векторы. А потом бы сверил между собой векторы и получил на сколько процентов у меня там совпадения и по каким столбцам.

Количество запросов равнялось бы количество строк в таблице поменьше * количество столбцов.

Vadim
28.03.2018
19:18:15
Если нужно одним универсальным запросом, то подвязаться на системную таблицу со списком полей (напр., INFORMATION_SCHEMA.COLUMNS) ... вложенными запросами по названию колонок тянуть значения, потом отфильтровать по неодинаковым значениям...

Google
Валерия
28.03.2018
20:05:46
Но в sql можно сделать курсором ведь кстати Если ходить по колонкам Проходить по ID всегда, но выявлять только столбцы, в которых не совпадает информация по объявленной колонке То есть динамически формировать запрос внутри курсора Только че то как то мне кажется это не самое крутое решение

Валерия
28.03.2018
20:22:10
Я не знала, что есть такое понятие DynEXEC, вау

Ilia
28.03.2018
20:25:37
DynExec он же EXEC() он же PREPARED STATEMENT (MySQL) — это когда ты на серверной стороне в переменной типа "строка" формируешь текст запроса, а затем его выполняешь на этой же БД. Там разные средства разных СУБД допускают разный уровень автоматизации подстановки параметров в запросы, от конкатенации в виде данных до полной формализованной подстановки в виде типизированных параметров .

Abbos
28.03.2018
22:08:31
ребят привет после того как создал index допустим: create index [indx_ENROLLMENT_studentId] ON [dbo].[Enrollment]([studentId]) после этого его где то вызывать не нужно или нужно?

Al
28.03.2018
22:32:20
Можно. Это будет DynEXEC , генерируемый SQL-ем другой SQL.
И зачем ты им это расказал? Они ж теперь только так и будут делать.?

Мало нам doom в экселе

Abbos
29.03.2018
06:57:25
Не нужно. Как ты вообще это представляешь, "вызывать индекс"?
спасибо) да уже понял) просто новичок в этом деле поэтому

Валерия
29.03.2018
06:58:31
но иногда его планировщик запросов может игнорироваьт тогда можно заставиьт, чтобы индекс ипользовался ну и аналогично индекс можно и просить . чтобы не использовался))

Vladislav
29.03.2018
07:02:32
В вертике, проекции, которые аля индекс, это вообще таблицы и можно с них делать запросы ?

Google
Vadim
29.03.2018
07:03:59
это невозможно сделать в статическом коде SQL. Можно только через прототипирование или DynEXEC
В общем, спасибо, действительно не возможно без динамики, я погорячился)

Sergey
29.03.2018
17:22:56
Всем привет. подскаижте, пожалуйста, может ли запись данных в переменную php влиять на работу ROLLBACK базы данных?

Иван
29.03.2018
17:24:43
Ты же просто данные пишешь в переменную

Например в oracle есть опр параметр типа специальный коммит или просто oci default который просто выдает данные пхп но не делает коммитов или роллбэк) вообщем не парься переменная пхп не делает роллбэков

Sergey
29.03.2018
17:27:38
мне как раз нужно сделать роллбэк

Иван
29.03.2018
17:27:54
Какая у тебя бд

Sergey
29.03.2018
17:28:03
Mysql/Innodb

записи создаются, если я делаю операции в коде

Тестирую с Set autocommit=0

при работе кода записи создаются. При чистых запросах просто индекс увеличивается

Иван
29.03.2018
17:29:23
А подключаешься к бд как стандартные средствами пхп или через pdo ?

Sergey
29.03.2018
17:29:47
с учктом того, что это битрикс, то там mysqli

Иван
29.03.2018
17:30:21
Тогда вот

// Commit transaction mysqli_commit($con); // Rollback transaction mysqli_rollback($con);

Sergey
29.03.2018
17:32:08
Хорошо. спасибо. сейчас попробую

Sergey
29.03.2018
19:32:03
да они как бы выполняются

логи запросов об этом говорят

Google
Sergey
29.03.2018
19:32:26
точнее они отправляются в БД

Ilia
29.03.2018
19:32:42
Ну, есть ещё проблемы?

Sergey
29.03.2018
19:33:10
пока что нет) завтра буду пробовать. Спасибо)

Ilia
30.03.2018
09:36:06
Привет, я тут сделал титаническое усилие, написал пост.

Это пост правды

******************************************** *** ДОРОГИЕ КОЛЛЕГИ РАЗРАБОТЧИКИ БД *** ******************************************** Каждый раз, когда вам говорят в чатах, форумах, статьях в интернете и так далее, что определённая конструкция языка SQL работае быстрее, чем другая определённая конструкция языка SQL, не верьте! Производительность запросов — очень сложная штука, Она зависит от структуры БД, определённых в ней индексов, типов данных, самих данных и ещё чёрта в ступе от чего. Только вы сами в ваших конкретных условиях можете понять, как лучше написать запрос и как он будет быстрее работать.

Pavel
30.03.2018
09:49:49
то бишь, бывает случай, когда order by rand будет быстрее?

Vladislav
30.03.2018
09:51:26
быстрее чем что?

быстрее ORDER BY rand, rand уж точно

Pavel
30.03.2018
10:37:19
слишком категоричный и однобокий текст, как по мне

Денис
30.03.2018
11:08:15
Подскажите если кто в курсе Есть задача: - основная нода имеет все данные - распределённые ноды имеют только чать данных (грубо у каждого своя табличка) Писать читать (в рамках разрешнного) может каждая нода Гарантированность доставки данных критична (скорость синхронизации не критична) Смотрю в сторону кассандры (ещё не читал детально документацию не знаю умеет она так или нет)

Sergey
30.03.2018
12:04:39
при работе кода записи создаются. При чистых запросах просто индекс увеличивается
Всем доброго. По поводу вчерашнего моего крика о помощи. Судя по всему происходит автокоммит из-за переиндексации страниц после INSERT. Правильно ли я понимаю, что БД автоматически пересоздает индексы при вставке? Как можно отключить автоиндексацию таблицы перед началом транзакции?

Ilia
30.03.2018
12:09:37
Но! , Если ты делаешь Begin transaction Auto commit отключается

Google
Ilia
30.03.2018
12:13:27
Наоборот, должен

Но не пересоздавать, естественно, а maintain.

Но он все равно именно maintaining в виду имеет. Ведь да?

Vladislav
30.03.2018
12:14:38
Либо тратится время на вставку, либо просто вставляется, а индекс потом ребалансится

Ilia
30.03.2018
12:14:49
@serezhaivchenko ?

Sergey
30.03.2018
12:18:29
У меня просто между стартом транзакции и роллбэком есть пулл запросов из select, insert и update. Инсерты все равно проходят и появляются записи в бд. Попробовал инсерты руками провести, на это мне цмс пишет, что индекс с параметрами создан

Михаил
30.03.2018
12:18:46
Индексы отключить нельзя. Транзакциям они никак не мешают
alter index xxx disable же. но, в данном случае, вряд ли в этом дело.

Sergey
30.03.2018
12:18:46
Вот я и подумал, что косяк где-то из-за индексов

Sergey
30.03.2018
12:28:54
Да

Vladislav
30.03.2018
12:29:06
селект же до роллбека?

Sergey
30.03.2018
12:29:19
Да

Vladislav
30.03.2018
12:29:47
ну так логично, в рамках транзакции ты увидешь записи

вот если ты сделаешь роллбэк, а потом селект, то записей не должно быть

Sergey
30.03.2018
12:33:02
Записи после транзакции виду в системе

На одну запись становится больше

Ilia
30.03.2018
12:35:01
Ну тут чудесь нет, ты где-то делаешь commit, либо НЕ делаешь start|begin transaction

Ты пулы коннекций используешь?

Sergey
30.03.2018
12:45:09
Нашел в ядре mysql_query. Перед ним поставил логирование в файл. получаю https://pastebin.com/g2fyTMJ8

Google
Виктор
30.03.2018
12:49:17
Может таки не все таблицы innodb

Sergey
30.03.2018
12:50:24
Все. Проверил несколько раз. Делал бэкап и менял движок

Sergey
30.03.2018
12:59:36
Ilia
30.03.2018
12:59:53
Ну, проверь.

MIkhail
30.03.2018
13:06:54
А есть спецы по CDC????

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