В управлении базами данных блокировки — это механизмы, которые предотвращают одновременный доступ к данным, обеспечивая их целостность и согласованность.
Основные типы блокировок:
#db
👉 @database_info
Вы хотите быть в курсе последних новостей и тенденций в мире баз данных? Тогда канал 'Базы данных (Data Base)' - идеальное место для вас! Здесь вы найдете самую актуальную информацию о различных базах данных, новые технологии, полезные советы по оптимизации работы с данными и многое другое. Кроме того, канал предлагает возможность задавать вопросы и обсуждать интересные темы с другими участниками. nnКто же стоит за каналом 'Базы данных (Data Base)'? Ведущий этого канала - @evgenycarter, профессионал в области баз данных с многолетним опытом работы. Он делится своими знаниями и опытом, помогая подписчикам разобраться в сложных вопросах и находить наилучшие решения. nnПрисоединяйтесь к нам прямо сейчас, чтобы не пропустить ни одной важной новости из мира баз данных! Вопросы, обсуждения, новости - все это ждет вас на канале 'Базы данных (Data Base)'.
13 Nov, 13:43
12 Nov, 14:00
12 Nov, 09:30
11 Nov, 09:34
10 Nov, 13:31
09 Nov, 17:32
XOR (^)
позволяет инвертировать биты в SQL Server. Используя BitColumn = BitColumn ^ 1
, вы сможете поменять 0 на 1 и наоборот.
UPDATE ВашаТаблица SET BitColumn = BitColumn ^ 1 WHERE ВашеУсловие;
ВашеУсловие
.AND
, OR
, XOR
и NOT
.
-- Наблюдаем за инверсией всех битов!
UPDATE ваша_таблица SET ваш_столбец = ~ваш_столбец WHERE ваше_условие;
-- Из 0 делаем 1, из 1 — 0. Элегантно, не правда ли?
UPDATE ваша_таблица SET ваш_столбец = 1 – ваш_столбец WHERE ваше_условие;
-- Теперь нацеливаемся на определённый бит
UPDATE ваша_таблица SET ваш_столбец = ваш_столбец ^ битовая_маска WHERE ваше_условие;
Битовая_маска
— это число, которое в двоичной системе имеет 1 там, где находится нужный бит, и 0 — во всех остальных позициях.
UPDATE ваша_таблица SET ваш_столбец = 1 – ваш_столбец WHERE ваше_условие;
ваш_столбец
имеет значение 😐(0) или 😃(1). После инвертирования: теперь значение ваш_столбец
противоположное — 😃(1) или 😐(0).09 Nov, 13:13
06 Nov, 13:52
06 Nov, 12:01
06 Nov, 10:25
04 Nov, 10:30
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
04 Nov, 09:45
bulk_create()
. Она позволяет осуществить вставку множества записей за один запрос.
from myapp.models import MyModel
# Подготовим данные для массового внесения
bulk_records = [MyModel(field1='value1', etc.) for _ in range(thousands)]
# А вот и массовое внесение в действии!
MyModel.objects.bulk_create(bulk_records)
01 Nov, 08:53
ORDER BY RAND()
. Вместо этого используйте уникальный идентификатор id. Сначала определите максимальное значение id
, генерируйте случайное число в пределах этого диапазона и затем получите строку с соответствующим id
:
-- Отказываемся от полного сканирования таблицы, затратного по времени!
SELECT * FROM your_table
WHERE id >=
(SELECT FLOOR(1 + RAND() *
(SELECT MAX(id) FROM your_table)))
LIMIT 1;
-- Вместо 'your_table' укажите корректное имя вашей таблицы (если она не носит название 'your_table').
31 Oct, 12:00
NUL
L на 0 в PostgreSQL поможет функция COALESCE(ваша_колонка, 0):
SELECT COALESCE(ваша_колонка, 0) FROM ваша_таблица;
NULL
, будет возвращён 0.31 Oct, 10:00
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
29 Oct, 07:55
SELECT
fk.name AS ForeignKey,
tp.name AS ParentTable,
cp.name AS ParentColumn,
tr.name AS ReferencedTable,
cr.name AS ReferencedColumn
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.tables AS tp ON fk.parent_object_id = tp.object_id
INNER JOIN
sys.tables AS tr ON fk.referenced_object_id = tr.object_id
INNER JOIN
sys.foreign_key_columns AS fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.columns AS cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN
sys.columns AS cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
28 Oct, 06:01
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
27 Oct, 21:47
# выбираем ID сервера, произвольное число, лучше начинать с 1
server-id = 1
# путь к бинарному логу
log_bin = /var/log/mysql/mysql-bin.log
# название Вашей базы данных, которая будет реплицироваться
binlog_do_db = newdatabase
mysql -u root -p <пароль root сервера БД>
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
mysqldump -u root -p --lock-all-tables newdatabase > newdatabase.sql
CREATE DATABASE newdatabase;
mysql -u root -p newdatabase < newdatabase.sql
slave в /etc/my.cnf
:
# ID Слейва, удобно выбирать следующим числом после Мастера
server-id = 2
# Путь к relay логу
relay-log = /var/log/mysql/mysql-relay-bin.log
# Путь к bin логу на Мастере
log_bin = /var/log/mysql/mysql-bin.log
# База данных для репликации
binlog_do_db = newdatabase
CHANGE MASTER TO MASTER_HOST='10.10.0.1', MASTER_USER='slave_user', MASTER_PASSWORD='password',
MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;
##Указанные значения мы берем из настроек Мастера
После этого запускаем репликацию на Слейве:
START SLAVE;
SHOW SLAVE STATUSG
26 Oct, 11:37
24 Oct, 13:00
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
24 Oct, 12:42
24 Oct, 11:22
22 Oct, 09:10
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
22 Oct, 08:30
22 Oct, 08:05
SELECT
и GROUP BY
совместно с оператором HAVING
. Например, следующий запрос позволяет найти все строки, у которых значение определенного столбца повторяется более одного раза:
SELECT столбец, COUNT(*) AS количество
FROM таблица
GROUP BY столбец
HAVING COUNT(*) > 1;
21 Oct, 13:28
21 Oct, 05:10
18 Oct, 05:12
17 Oct, 20:09
15 Oct, 21:17
15 Oct, 09:00
14 Oct, 21:12
SELECT
json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'ru') ->> 'ru' ru
, json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'en') ->> 'en' en
, json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'de') ->> 'de' de
, json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'fr') ->> 'fr' fr
FROM
(
VALUES
('{"language" : "ru", "value" : "Бухгалтерия"}'::json)
, ('{"language" : "en", "value" : "Accounting"}')
, ('{"language" : "de", "value" : "Buchhaltung"}')
, ('{"language" : "fr", "value" : "Comptabilité"}')
) T(js);
14 Oct, 07:02
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
13 Oct, 21:11
13 Oct, 08:53
11 Oct, 10:04
10 Oct, 22:09
10 Oct, 11:01
10 Oct, 05:30
08 Oct, 17:27
08 Oct, 12:01
08 Oct, 11:20
05 Oct, 12:14
03 Oct, 08:05
STUFF()
в SQL используется для замены части строки другой строкой, начиная с определенной позиции и на заданную длину.
STUFF (string_expression, start, length, replace_with_expression)
SELECT STUFF('Hello World', 7, 5, 'SQL');
Hello SQL
STUFF()
позволяет удобно заменять часть строки другой строкой на основе указанных параметров.01 Oct, 15:13
01 Oct, 12:13
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
30 Sep, 07:02