Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.21K subscribers
566 photos
468 videos
19 files
545 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
Базы данных

1. Введение в базы данных. Базы данных.
2. Реляционная модель данных, ER диаграмма. Базы данных
3. Введение в SQL. Базы данных
4. SQL. Практическое занятие. Базы данных
5. SQL (Structure Query Language). Оператор Distinct. Базы данных
7. Транзакции. Базы данных
8. План выполнения запроса. Ограничения целостности. Базы данных
9. Таблицы. Триггеры. Процедуры. Базы данных
10. Масштабирование БД. Базы данных
11. Оптимизация запросов. Базы данных
12. Введение в NoSQL. Базы данных
13. Что такое ORM? Почему стоит использовать ORM? Базы данных

Полный playlist на youtube

#db

👉 @database_info
👍21
Простой скрипт для резервного копирования всех баз данных SQL Server

Иногда вещи, которые кажутся сложными, оказываются гораздо проще, чем кажется, и в этом заключается сила использования языка T-SQL для решения повторяющихся задач. Одной из таких задач может быть необходимость резервного копирования всех баз данных на сервере. Это не так уж сложно, если у вас несколько баз данных, но я видел несколько серверов, где на одном экземпляре SQL Server было 100+ баз данных. Для резервного копирования баз данных можно использовать SQL Server Management Studio или даже использовать Maintenance Plans, но использование T-SQL - гораздо более простой и быстрый подход.


DECLARE @name NVARCHAR(256) -- database name
DECLARE @path NVARCHAR(512) -- path for backup files
DECLARE @fileName NVARCHAR(512) -- filename for backup
DECLARE @fileDate NVARCHAR(40) -- used for file name

-- specify database backup directory
SET @path = 'C:\test\'

-- specify filename format
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor


https://www.mssqltips.com/sqlservertip/1070/simple-noscript-to-backup-all-sql-server-databases/

#db

👉 @database_info
👍5
Скрытые ошибки SQL, допускаемые опытными аналитиками данных

Написание неправильного синтаксиса SQL не так страшно, потому что вы сразу же узнаете об этом, исправите то, что упустили, и вуаля, как ни в чем не бывало. А вот что действительно плохо, так это когда код выполняется и выдает результат, но не правильный (и не безумно неправильный, иначе вы могли бы заметить).

Чтобы продемонстрировать это, представьте, что у вас есть две таблицы, первая содержит клиентов вашего сайта, а вторая - заказы, сделанные на сайте.

https://eisultan.medium.com/sql-hidden-mistakes-made-by-experienced-data-analysts-part-1-9ea6ffdf95a5

#db

👉 @database_info
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
VisiData - это интерактивный мультиинструмент для работы с табличными данными. Он сочетает в себе наглядность электронных таблиц, эффективность терминала и мощь Python, превращаясь в легкую утилиту, способную с легкостью обрабатывать миллионы строк.

https://www.visidata.org/

https://github.com/saulpw/visidata

#db

👉 @database_info
👍21
PostgreSQL и временные таблицы

Мы много лет уже используем в качестве основной базы данных PostgreSQL. За это время он зарекомендовал себя быстрой и надежной СУБД. Однако, есть в PostgreSQL одна проблема, с которой приходится сталкиваться достаточно часто. К сожалению, реализация логики временных таблиц в нем имеет ряд недостатков, которые отрицательно сказываются на производительности системы.

Одним из свидетельств наличия проблемы является то, что для временных таблиц в Postgres Pro была добавлена специальная функция fasttrun, а в Postgres Pro Enterprise существенно доработана работа с ними (см. пункт 4).

Наиболее активно временные таблицы используют платформы, в которых разработчик не работает напрямую с базой данных, а таблицы и запросы генерируются непосредственно самой платформой. В частности, к ним относится платформа 1С или ее открытый и бесплатный аналог - платформа lsFusion.

В этой статье я опишу почему приходится использовать временные таблицы, в чем суть проблемы, и как улучшить производительность путем настроек операционной системы и PostgreSQL.

https://habr.com/ru/articles/754476/

#db

👉 @database_info
👍3
Повышение эффективности SQL-запросов, советы по настройке

В данном контексте, подчеркивается важность умения настраивать ("в нужный режим") SQL-запросы для обеспечения их оптимальной производительности. Этот навык полезен для всех, кто работает с базой данных SQL Server - от обычных пользователей до администраторов и разработчиков, которые пишут собственные SQL-запросы.

В статье представлен ряд советов и методов, которые помогут читателям оценить производительность своих SQL-запросов и улучшить ее при необходимости. Здесь будут рассмотрены некоторые ключевые аспекты оптимизации запросов для SQL Server, чтобы помочь пользователям сделать их более эффективными и быстрыми.

https://www.mssqltips.com/sqlservertip/7125/sql-query-performance-tuning-tips/

#db

👉 @database_info
👍3
Новое в SQL Server 2022: изменение стратегии прироста журналов транзакций

Когда я впервые узнал о том, что SQL Server 2022 будет поддерживать мгновенную инициализацию файлов журнала транзакций, я был заинтригован. Когда позже выяснилось, что это относится только к автоматическому приращению и только с размером не больше 64 МБ, интрига несколько потеряла свой «блеск». Из-за этих ограничений я скептически отнесся к тому, что новая стратегия сможет заменить сложившуюся практику автоматического увеличения файлов журналов на 1 ГБ — по крайней мере, с тех пор, как SSD и другие современные хранилища получили достаточное распространение.

Но поигравшись с этим новшеством, я проникся.

https://www.red-gate.com/simple-talk/databases/sql-server/t-sql-programming-sql-server/log-file-instant-file-initialization/

#db

👉 @database_info
👍1
Возможности SQLite, которые вы могли пропустить

Если вы используете SQLite, но не следите за его развитием, то возможно некоторые вещи, позволяющие сделать код проще, а запросы быстрее, прошли незамеченными. Под катом я постарался перечислить наиболее важные из них.

Частичные индексы (Partial Indexes)
При построении индекса можно указать условие попадания строки в индекс, к примеру, одна из колонок не пустая, а другая равна заданному значению.

create index idx_partial on tab1(a, b) where a is not null and b = 5;
select * from tab1 where a is not null and b = 5; --> search table tab1 using index


Индексы на выражение (Indexes On Expressions)
Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса.

create index idx_expression on tab1(a + b);
select * from tab1 where a + b > 10; --> search table tab1 using index ...
select * from tab1 where b + a > 10; --> scan table


https://habr.com/ru/articles/528882/

#db

👉 @database_info
👍4
Использование составных триггеров (compound triggers) Oracle

Перед нами стоят задачи

1- при обновлении поля orders.discount пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу;

2 - при изменении orders_detail.price и(или) orders_detail.qty пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу;

3- orders_detail.sum_order считается по формуле: orders_detail.sum_order = orders_detail.price * orders_detail.qty * (1- orders.discount/100).

При таких задачах возникает ошибка мутирования таблиц ORA-04091: table is mutating.

https://habr.com/ru/articles/748422/

#db

👉 @database_info
👍2
Шпаргалка по PostgreSQL

Содержит общие команды, которые позволят вам быстро и эффективно работать с PostgreSQL.

https://bookflow.ru/shpargalka-po-postgresql/

#db

👉 @database_info
👍5
SQL. Базовый курс

№1. Установка PostgreSQL, создаем схему, таблицу и импортируем данные из CSV
№2. Простые операции, SELECT
№3. Типы данных
№4. Импорт и экспорт данных
№5. Группировка
№6. Математические операции
№7. CASE
№8. Дополнения к урокам 1-7
№9. Повторение изученного
№10. Подзапросы
№11. CTE
№12. Оконные функции. Ранг, ранжирование (ranking)

Все видео доступны на youtube

#db

👉 @database_info
👍5
Оптимизация данных в MS SQL

Одним из методов для оптимизации обработки, хранения и администрирования данных в базе данных и кубах MS SQL — это процесс создании партицирования данных.

Partitioning (партицирование или по-другому секционирование) — это разбиение таблицы на несколько частей, а эти части на одну или несколько файловых групп. Партицирование необходимо для целей ускорения доступа чтения или изменения данных и администрирования. Так как выровненный индекс по таблице будет содержаться в каждой условно своей секции, то при чтении или изменении данных будет обращение к конкретной секции и конкретному индексу в этой секции.

https://habr.com/ru/articles/705656/

#db

👉 @database_info
👍2