Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.21K subscribers
566 photos
468 videos
19 files
545 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
Простой скрипт для резервного копирования всех баз данных 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
SQL Tutorial - Full Database Course for Beginners

⌨️ (0:00) Introduction
⌨️ (2:36) What is a Database?
⌨️ (23:10) Tables & Keys
⌨️ (43:31) SQL Basics
⌨️ (52:26) MySQL Windows Installation
⌨️ (1:01:59) MySQL Mac Installation
⌨️ (1:15:49) Creating Tables
⌨️ (1:31:05) Inserting Data
⌨️ (1:38:17) Constraints
⌨️ (1:48:11) Update & Delete
⌨️ (1:56:11) Basic Queries
⌨️ (2:08:37) Company Database Intro
⌨️ (2:14:05) Creating Company Database
⌨️ (2:30:27 ) More Basic Queries
⌨️ (2:26:24) Functions
⌨️ (2:45:13) Wildcards
⌨️ (2:53:53) Union
⌨️ (3:01:36) Joins
⌨️ (3:11:49) Nested Queries
⌨️ (3:21:52) On Delete
⌨️ (3:30:05) Triggers
⌨️ (3:42:12) ER Diagrams Intro
⌨️ (3:55:53) Designing an ER Diagram
⌨️ (4:08:34) Converting ER Diagrams to Schemas

https://www.youtube.com/watch?app=desktop&v=HXV3zeQKqGY


#db

👉 @database_info
👍3