Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Открой для себя волшебный мир реальной рыбалки. Лови реальную рыбу на реальных водоемах! Исследуй новые рыболовные места и заполучи заветный трофей.

Реальная Рыбалка

Симуляторы, Мультиплеер, Спорт

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Ms SQL

С этим тегом используют

SQL IT Oracle База данных Собеседование Программирование Все
25 постов сначала свежее
45
IliaHohlov
IliaHohlov
1 год назад
Лига программистов

SQL задача про IN и NOT IN с объяснением⁠⁠

SQL задача про IN и NOT IN с объяснением Программирование, IT, Собеседование, SQL, Ms SQL, Oracle, Субд, База данных, Telegram (ссылка)

Всем отличного начала нового года! Вчера утром в своём Телеграм-канале опубликовал интересную задачу по SQL с собеседования про IN и NOT IN.

С первого взгляда кажущееся правильным решение на самом деле ложно. Чтобы верно ответить в задаче, нужно знать как СУБД обрабатывает элементы множества, указанные для оператора IN / NOT IN в запросе.

Вначале вот текст самой задачи. Ниже я поясню правильное решение:

В таблице CLIENTS пять строк. В первых двух строках в поле CLIENT_TYPE значение 1, ещё в двух строках в CLIENT_TYPE значение 2 и в последней строке поле CLIENT_TYPE не заполнено, то есть в последней строке в поле CLIENT_TYPE значение NULL.

Есть два запроса:
1)
SELECT * FROM CLIENTS WHERE CLIENT_TYPE IN (1)
2)
SELECT * FROM CLIENTS WHERE CLIENT_TYPE NOT IN (2, NULL)
Результирующие наборы данных, полученные в результате выполнения этих запросов, будут одинаковыми или разными?

Здесь поставь чтение на паузу и ответь на вопрос самостоятельно.

На сегодня на канале следующий разброс ответов:

SQL задача про IN и NOT IN с объяснением Программирование, IT, Собеседование, SQL, Ms SQL, Oracle, Субд, База данных, Telegram (ссылка)

Первый запрос отбирает клиентов, у которых в столбце тип указано значение 1. В результате будут отобраны две строки. Здесь все понятно. Так как в таблице клиентов ещё остаются строки, не попавшие в выбор первого запроса, со значениями в столбце тип 2 и NULL, то видится, что второй запрос должен как раз вернуть такой же результирующий набор данных. Однако, тут дело в коварном NULL в значениях для оператора NOT IN. СУБД представляет оператор NOT IN:

SELECT * FROM CLIENTS WHERE CLIENT_TYPE NOT IN (2, NULL)

в результате должны быть отобраны клиенты, у которых значение в столбце тип не равно каждому из перечисленных во множестве значений:

SELECT * FROM CLIENTS WHERE ( (CLIENT_TYPE <> 2) AND (CLIENT_TYPE <> NULL) )

С NULL не допустимо использовать операторы сравнения. При сравнении с NULL (= NULL, <> NULL) результат будет всегда отрицательным.

Второй запрос не вернёт ни одной строки данных.

Ещё больше полезного и интересного в моём Телеграмм-Канале.

Показать полностью 1
Программирование IT Собеседование SQL Ms SQL Oracle Субд База данных Telegram (ссылка)
18
11
IliaHohlov
IliaHohlov
1 год назад
Офисные будни

SQL задачи на поиск ошибок⁠⁠

IT Собеседование Задача Пример База данных Урок SQL Ms SQL Oracle Видео YouTube
0
IliaHohlov
IliaHohlov
1 год назад
Лига программистов

Является ли внешний ключ индексом? Конечно нет. Вот почему!⁠⁠

В этом видео расскажем создает ли определение внешнего ключа на таблице (foreign key) автоматически еще и индекс. Конечно не создает. Внешний ключ - это просто одна из разновидностей ограничений для таблиц (constraint). Если нужен еще и индекс по этому полю, то его нужно создавать дополнительно!

[моё] Программирование IT Собеседование SQL Oracle Ms SQL Индекс Ограничения Ключи Программист Видео YouTube
9
6
IliaHohlov
IliaHohlov
1 год назад
Лига программистов

Разбираем решение задачи по SQL с нашего телеграмм-канала про поиск и удаление дублей в таблице⁠⁠

Разбираем решение задачи по SQL с нашего телеграмм-канала про поиск и удаление дублей в таблице: https://t.me/sql_oracle_databases

#SQL #ORACLE #Уроки #вопросынасобеседовании #Задачи

Показать полностью
[моё] Программирование IT Разработка SQL Собеседование Задача База данных Oracle Mysql Ms SQL Видео YouTube
7
8
DELETED
3 года назад
Язык программирования SQL

Вопрос: Стоит ли учить SQL?⁠⁠

Всем привет.
Хочу выучить sql, т.к. задолбался делать отчеты через 1С+excel
Нужен более гибкий и универсальный инструмент
Но если я правильно понимаю, sql это вотчина ИТ отдела
Вопрос: не поломаю ли я чего-нибудь в бд, если буду его использовать?
Буду рад ответам знающих людей

SQL Ms SQL Отчетность Текст Помощь
25
2
Programma.Boinc
Programma.Boinc
3 года назад

2 Килобайта - не Бог весть какой размер, а жизнь SSD диску сократит в 10 раз!⁠⁠

О том, сколько нужно на самом деле RAM и как определять, в общем-то сказано было, без фактических данных смысла продолжать нет. Куда потратить деньги, дело, как говорится, хозяйское. 🙂


2 Килобайта - не Бог весть какой размер, а жизнь SSD диску сократит в 10 раз!

Это можно легко оценить.


Сначала про БД.


Возьмём 1 миллион WU. Им будет соответствовать 1 миллион записей в таблице workunit и 2 миллиона в таблице result, если есть кворум 2. Размер каждой записи ~ 2 кб. Итого - 3 миллиона записей по 2 кб. Во время своей жизни, result проходит несколько состояний - unsent, in progress, pending, validated и, наконец - он удаляется. Итого - 5 изменений. Для workunit-а, по идее, поменьше, но давайте считать, что тоже 5.


Далее. Как и любая приличная СУБД, MSSQL пишет данные не отдельными записями, а блоками или страницами. В MSSQL 1 страница = 8 кб, в неё поместится около 4 записей (скорее - 3, но пусть 4, возьмём вариант похуже).


Если считать что каждый раз записи меняются независимо (что вообще говоря, при создании и удалении workunit-ов и result-ов - не так, но, опять - возьмём более плохой вариант), то мы получим, что за время жизни всех 4 записей в блоке, они в худшем случае заставят перезаписать страницу, в которой они находятся, 20 раз. Ну и хорошо! Давайте считать, сколько получается:


3 миллионов записей / 4 (записи в странице) = 0.75 миллиона страниц.

0.75 миллиона страниц * 20 раз = 15 миллионов раз записи страниц

15 миллионов записей страниц * 8 кб = 120 Гбайт.


Параллельно, конечно, данные будут записываться в лог базы. Но в него будет записываться не вся страница, а только запись. Т.е. это будет 1/20 от 120 Гбайт или + 6 Гбайт. Итого: 126 Гбайт. По факту, же, т.к. генерация и удаление workunit-ов и result-ов происходит массово, то эти два процесса будут приводить к однократной, а не 20-кратной записи страницы на диск. Т.е. на самом деле не 120, а на 2/5 меньше - 72 Гбайта. Но пусть 120 и 126 в сумме.


Это, насколько я вижу, за месяц. Тогда в год будет 1512 Гб или 1.5 Тб. Сколько там ресурс самых дешёвых SSD за 4000 р (на 250 Гб)? Около 150 Tb. (Фактический, как говорят тесты, будет в разы больше). 150 Тб/1.5 Тб/год - это 100 лет. А уже через 4 года будут совсем другие диски за совсем другие цены.


Теперь вернёмся к файлам.


Файлы у нас хранятся в файловой системе. А файловая система у нас записывается кластерами (или тоже страницами, но другими). В NTFS, обычно - 4 кб. И разница между 200 байтами и 2 кбайтами будет только в том, что файл размером в 200 байт будет целиком записан прямо в заголовке в NTFS, а ради 2-х килобайтного будет осуществлена запись в таблицу файлов и в виде страницы на диск. То есть, не 1, а 2 раза по 4 кб. Посчитаем более тяжёлый вариант для того же миллиона workunit-ов:


2 записи * 4 кб * 2 миллиона результатов = 16 Гбайт.


Смотрим на упоминавшиеся 126 Гбайт и понимаем, что пока размеры результатов не выросли до мегабайт, особо печалиться не о чем. Да, есть ещё файлы XML-запросов которые сервер принимает и отправляет. Они также порядка 1 - 2 кбайт на результат. В итоге, по видимому, всё должно в самом плохом случае уложиться в 150 .. 200 Гбайт на 1 миллион workunit-ов. (Запись внутри SSD, по идее, также должна идти страницам где-то по 4 кб, кажется, поэтому этот внутренний механизм, думаю, что можно тут пропустить). Ну а если размеры файлов будут массово подрастать до мегабайта, ну, тогда складывать именно их уже на HDD. IOPS-ность SSD тут им уже не поможет.


Время надёжного хранения данных на SSD в обесточенном состоянии - порядка полугода и выше, особенно если вы не подогреваете его постоянно градусов до 60. Если есть какие-то данные, которые хотелось бы сохранить, но их можно было бы вот так вынести из системы, физически вынув диск, - то их надо просто записать на болванку Blue-Ray. 10 штук по 25 Gb стоят ~ 700 р., 25 штук по 50 Gb (двуслойные) ~ 6700 р. А SSD должен не лежать, а работать, его для этого обычно покупают. 🙂


P.S. И, да, есть у нас давно хорошая ветка про HDD и SSD.

https://boinc.ru/forum/topic/interesnoe-o-hdd-i-ssd/


P.P.S. Можно, конечно, вспомнить, что у MSSQL есть такая база как tempdb. Но... зачем OLTP-системе, коей должен быть сервер BOINC, что-то туда писать? "Обязательная отчётность", по идее, у нас только в виде XML-ов с микроскопическими user, host и team, которые должны выгружаться раз в сутки.


P.P.P.S. Когда результат засчитывается, то обновляются также и таблицы team, user, host и host_app_version.


Но: 1) Эти изменения делаются только когда результат засчитывается, а не при изменении любого состояния на любое (т.е. уже в 5 раз реже); 2) Все эти таблицы очень небольшие (team - там считанное число блоков!), должны сидеть в кэше, в каждой странице - по значительно большему набору записей и, между записью обновлённых страниц из кэша на диск, они должны обновляться по несколько раз (тут уже важно правильно настроить checkpoint-ы). И получающийся объём записываемых данных - снова не велик.

Показать полностью
SSD Размер Ms SQL Checkpoint Сервер Xml Длиннопост Текст
5
IliaHohlov
IliaHohlov
4 года назад
Лига программистов

Индексы в базе данных - ключ к оптимизации / Что это? Для чего нужны. Илья Хохлов⁠⁠

Индексы в базе данных. Что это такое? Для чего нужны. Оптимизация работы базы данных. Оптимизация SQL-запросов. Илья Хохлов

[моё] Индекс SQL Ms SQL Oracle База данных Видео
11
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
0
IliaHohlov
IliaHohlov
4 года назад

Соединения таблиц в SQL-запросах во WHERE, без джоинов (SELECT без JOIN) Плюсы и минусы/ Илья Хохлов⁠⁠

Соединения таблиц в SQL запросах без джоинов. Плюсы и минусы. Как соединять таблицы в запросах в блоке WHERE. ANSI и не ANSI стандарты соединений. Плюсы и минусы каждого способа. Как составлять запросы правильно.

Полный курс обучения SQL, базам данных и ORACLE с личным преподавателем, практикой в реальной базе данных, доступен здесь.

Еще уроки по базам данных и программированию на нашем Youtube-канале.
[моё] SQL Ms SQL Oracle База данных Mysql Join Видео
7
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии