Архив метки: Вопросы читателей

Ошибка timeout в Chrome: как исправить?

Веб-браузеры всегда были важной частью доступа и работы в Интернете. Google Chrome — один из самых популярных и широко используемых браузеров, и его пользовательская база продолжает расширяться. До его выпуска в основном использовались такие браузеры, как Internet Explorer и Firefox, и у них было много поклонников. У них было несколько отличных функций, которые в то время были чрезвычайно полезны.

Однако по мере развития технологий текущие функции не могли удовлетворить потребности людей. С выходом Chrome в 2008 году это полностью изменило динамику системы платформы веб-браузера, поскольку благодаря своей высокоскоростной производительности и стабильному характеру он быстро привлек внимание людей и обогнал своих предшественников.

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

Решения ошибки

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

Часто бывает достаточно приобрести прокси-сервер proxy-sale.com и указать его в настройках браузера.

А вообще, есть несколько способов решить эту проблему. Давайте теперь исследуем их все.

1) Очистка данных просмотра из Chrome

Часто причина, по которой ваше соединение может истекать, заключается в том, что файлы cookie или кеши повреждены и создают проблемы при установлении соединения между вашим браузером и сервером веб-сайта. Поэтому хороший вариант — удалить данные о просмотре из вашего Google Chrome. Для этого откройте свой Google Chrome, затем нажмите на три вертикальные точки , перейдите к параметру «Дополнительные инструменты» и, наконец, выберите параметр «Очистить данные просмотра». Вы также можете открыть это с помощью сочетания клавиш Ctrl + Shift + Delete .

Затем откроется окно, в котором будет несколько вариантов для выбора, в частности, период времени, с которого вы хотите начать удаление данных просмотра. Раздела «Базовый» будет достаточно, чтобы устранить эту ошибку; однако, если есть какие-то особые настройки сайта, которые, по вашему мнению, создают проблемы, вы можете выбрать их в разделе «Дополнительно».

Очистить данные просмотров:

Настройки сайта на вкладке «Дополнительно»:

Перезапустите веб-браузер Chrome и проверьте, загружается ли веб-страница.

2) Отключение брандмауэра

Другая причина, по которой вы можете получить ошибку тайм-аута в Chrome, может быть связана с тем, что ваш брандмауэр пытается заблокировать соединение между вашим браузером и сервером. Брандмауэры — это функции безопасности, установленные для защиты ваших систем и блокировки подозрительных веб-страниц. Однако иногда это приводит к блокировке безопасных страниц. В Windows вы должны проверить это через брандмауэр Windows. Сначала найдите Брандмауэр в меню поиска и откройте его.

Затем нажмите Включить или выключить брандмауэр Windows.

Вам нужно нажать на опцию Отключить брандмауэр Windows в настройках расположения частной сети здесь.

Затем нажмите OK, и теперь вы увидите следующее на главной странице вашего брандмауэра.

Теперь еще раз проверьте, загружает ли ваш Chrome веб-сайт или нет.

3) Редактирование файла хостов Windows

Другой альтернативой исправлению ошибки превышения времени ожидания является проверка файла хостов Windows на предмет отсутствия доступа к именам веб-сайтов. Возможно, они были заблокированы файлом хостов. Для редактирования хост — файл, откройте Мой компьютер, а затем перейти к следующему каталогу: C:WindowsSystem32DriversEtc. Здесь вы увидите файл с именем hosts. Откройте файл, щелкнув его правой кнопкой мыши и используя блокнот или аналогичное программное обеспечение, чтобы открыть его. Теперь убедитесь, что имена веб-сайтов не упоминаются после раздела localhost.

Если вы видите имена, удалите их, сохраните файл хоста и еще раз откройте Chrome и проверьте, загружает ли он вашу веб-страницу.

4) Сброс и очистка DNS

Подобно удалению данных о просмотре, вы также можете попробовать очистить кеш DNS, поскольку веб-сайт, к которому вы, возможно, пытаетесь получить доступ, может не разрешать соединение с вашим IP-адресом. Для этого откройте терминал, написав командную строку в строке поиска и открыв программу командной строки.

Затем введите следующие команды, чтобы очистить кеш DNS и обновить свой IP-адрес:

$ ipconfig /flushdns

$ ipconfig /registerdns

$ ipconfig /release

$ ipconfig /renew

После этого выполните следующую команду, чтобы сбросить его:

$ netsh winsock reset

Перезагрузите компьютер и попробуйте еще раз загрузить веб-страницу в Chrome.

5) Настройка параметров локальной сети

Еще одна альтернатива — заглянуть в настройки вашей локальной сети и настроить несколько параметров. Для этого откройте панель управления , нажмите «Сеть и Интернет», а затем выберите «Свойства обозревателя» .

После выбора этого откроется окно, в котором щелкните вкладку подключений, чтобы открыть его.

Затем нажмите кнопку настроек LAN, расположенную в разделе LAN.

Здесь снимите флажок «Использовать прокси-сервер» в разделе «Прокси-сервер» и нажмите «ОК».

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

Вывод?

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

https://www.youtube.com/watch?v=FHWI1qAObdU



2021-03-04T17:04:47
Вопросы читателей

Tinyproxy: что это и как настроить?

Tinyproxy — это прокси HTTP/HTTPS. Это легкий, быстрый, очень простой в настройке прокси-сервис с открытым исходным кодом. Tinyproxy также можно настроить как обратный прокси. Его удобно использовать в качестве небольшого прокси с меньшим количеством системных ресурсов, потому что он очень легкий.

Читать

Я хочу удалить Apache в Ubuntu. Как это сделать?

Это краткое руководство показывает студентам и новым пользователям, как удалить Apache и/или очистить Ubuntu 20.04 | 18.04.

Если вы веб-мастер и хотите удалить веб-сервер Apache со своего хоста, вам помогут следующие шаги.

Существует два основных способа удаления или удаления программ из систем Ubuntu и Linux.

Вы можете запустить apt remove или apt purge.

Когда вы используете опцию remove с apt, команда удалит программный пакет из системы, но оставит файлы конфигурации.

Использование очистки с apt приведет к удалению пакета программного обеспечения, включая все файлы конфигурации и настройки.

Если вы хотите удалить Apache из Ubuntu, выполните следующие действия:

Удалить Apache

Опять же, если вы запустите apt с опцией удаления, он удалит Apache с главного компьютера, но сохранит весь файл конфигурации без изменений.

Если вы думаете об удалении Apache для переустановки, вы можете использовать опцию очистки.

Если вы просто хотите удалить пакет Apache, но сохраните все файлы конфигурации, выполните следующие команды:

sudo apt remove apache2

Приведенные выше команды удаляют Apache, но файлы конфигурации сайта в каталоге  /etc/apache2  остаются без изменений, включая каталог содержимого в /var/www.

Очистить Apache

Параметр очистки с apt удалит Apache и все файлы конфигурации из Ubuntu.

Если вы хотите полностью удалить Apache, включая файлы конфигурации и настройки, используйте опцию очистки.

Файлы в каталоге /etc/apache2 будут удалены. Однако содержимое сайта в /var/www останется в покое.

Выполните приведенные ниже команды, чтобы удалить Apache вместе с его файлами конфигурации.

sudo apt purge apache2

Переустановка Apache

Когда вы используете опцию переустановки с apt, команда удаляет apache и устанавливает.

Параметр переустановки не изменяет и не удаляет какой-либо файл конфигурации или содержимое сайта в /var/www.

Он просто удалит и переустановит пакеты apache.

Чтобы переустановить apache, выполните следующие команды:

sudo apt reinstall apache2

Это должно сработать!

Вывод:

В этом посте показано, как удалить, очистить или переустановить apache. Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму комментария ниже, чтобы сообщить.



2021-02-17T12:40:57
Вопросы читателей

Можно ли заморозить пакеты в Ubuntu?

Это краткое руководство показывает студентам и новым пользователям, как настроить Ubuntu для удержания или предотвращения обновления пакетов.

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

Вы можете настроить удержание пакета, чтобы он не обновлялся даже при наличии обновлений, пока вы не будете готовы его обновить.

Предотвращение установки или обновления пакета называется «удержанием пакета».

Это отличная функция, поскольку вы не будете автоматически обновлять пакет или программное обеспечение, которые вы не хотите обновлять в это время. Вы также можете обновить его позже.

Чтобы начать работу с блокировкой или удержанием пакетов в Ubuntu, выполните следующие действия:

Показать пакеты

Существует множество инструментов для блокировки или предотвращения обновления пакетов. Вы можете установить и использовать Synaptic package management, Aptitude для хранения пакетов или использовать команду для того же.

Используя командную строку, чтобы показать все пакеты, которые не обновляются, выполните следующие команды:

sudo apt-mark showhold

Это перечислит пакеты, которые находятся в режиме ожидания.

Удерживайте или блокируйте пакеты

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

sudo apt-mark hold <имя-пакета>

Если вы используете aptitude, используйте следующие команды:

sudo aptitude hold <имя-пакета>

Замените <имя-пакета> на пакет, который вы хотите отложить. Например, если вы хотите заблокировать веб-сервер Nginx, выполните следующие команды:

sudo apt-mark hold nginx

Это будет удерживать веб-сервер Nginx от обновления.

Разблокировать пакеты

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

sudo apt-mark unhold <имя-пакета>

Если вы используете aptitude, выполните следующие команды:

sudo aptitude unhold <имя-пакета>

Снова замените <package-name> на пакет, который вы хотите разблокировать или разморозить, и пусть они продолжают получать обновления.

Например, если вы хотите разблокировать Nginx после того, как вы заблокировали выше, выполните следующие команды:

sudo apt-mark unhold nginx

Управление пакетами Synaptic

Если вы используете управление пакетами Synaptic, перейдите в  Диспетчер пакетов Synaptic  (Действия ==> Поиск Synaptic).

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

Когда вы найдете пакет, выберите его, перейдите в меню «Пакет» и выберите «Заблокировать версию».

Это заблокирует пакет от получения обновлений.

Это должно сработать!

Вывод:

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

Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму ниже, чтобы сообщить.



2021-02-17T12:30:59
Вопросы читателей

MongoDB против MySQL: какую базу данных использовать

MySQL — это реляционная база данных, которая существует уже некоторое время. Но с учетом требований разнообразия и масштабируемости MongoDB стала популярной. Оба предлагают высокую производительность и аналогичные функции.

В этом руководстве мы рассмотрим основы MySQL и MongoDB, а затем расскажем о различиях между ними и о том, что вы должны использовать для различных случаев использования.

Что такое MongoDB?

MongoDB, разработанная в 2007 году, представляет собой популярную систему управления нереляционными базами данных (СУБД) NoSQL, в которой для хранения данных используются документы вместо таблиц или строк. Эта модель данных позволяет манипулировать связанными данными за одну операцию с базой данных.

Документы MongoDM — это документы и файлы, подобные JSON, и они поддерживают JavaScript (JS). Поля документа могут различаться, что упрощает изменение структуры с течением времени.

MongoDB считается schema-less, поскольку для нее не требуется заранее заданная схема базы данных. MongoDB использует гибкие пары ключ-значение, называемые документами, для хранения данных.

Поскольку MongoDB не содержит схемы, вам не нужно определять фиксированную структуру. Разработчикам легко использовать и изучать его, то есть его могут использовать как администраторы, так и разработчики. Он поддерживает все основные языки программирования и операционные системы, включая Mac, Linux и Windows.

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

MongoDB — отличное решение для людей, которые хотят быстро масштабироваться и развиваться . Он поддерживает быструю итеративную разработку и позволяет большому количеству членов команды сотрудничать.

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

Ограничения MongoDB

  • MongoDB не поддерживает объединения, поэтому в зависимости от того, как вы хотите получить доступ к данным, вам, возможно, придется регулярно обновлять свои документы.
  • Она может потреблять много памяти из-за пар ключ-значение, которые могут привести к избыточности данных.
  • Документы имеют лимит 16 МБ.
  • Поскольку ACID не соблюдается строго, сложные транзакции могут усложняться.

    MongoDB не поддерживает хранимые процедуры, поэтому вы не можете реализовать бизнес-логику на уровне базы данных.

Что такое MySQL?

MySQL — это система управления реляционными базами данных (СУБД) с открытым исходным кодом, которая хранит данные в таблицах и строках. Он использует SQL (язык структурированных запросов) для передачи данных и доступа к ним. Операции JOIN упрощают запросы и корреляцию. Он следует архитектуре клиент-сервер и поддерживает многопоточность.

С момента создания базы данных MySQL у нее есть огромное сообщество, обширное тестирование и стабильность. Он доступен для всех основных платформ вместе с коннекторами для многих языков, включая C, Java, C ++, Python и PHP.

Общие варианты использования MySQL:

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

Ограничения MySQL

Ограничения MySQL такие же, как и у любой другой СУБД, включая:

  • Поскольку данные хранятся в таблицах, если у вас есть данные, которые не помещаются ни в одну из таблиц, вам придется изменить структуру своей базы данных, чтобы приспособить ее.
  • База данных должна быть распределена по нескольким серверам, что может оказаться трудным в управлении.
  • MySQL становится менее эффективной, когда дело касается больших баз данных из-за проблем с масштабированием.
  • MySQL подвержен атакам с использованием SQL-инъекций.

Различия между MongoDB и MySQL

В этом разделе мы рассмотрим некоторые из основных различий между MongoDB и MySQL.

Представление данных

MongoDB представляет данные как документы JSON, тогда как MySQL представляет данные в строках и таблицах.

В MongoDB это будет выглядеть следующим образом:

{ 

    First Name: 'John',

    Last Name: 'Doe', 

    Employee_ID: 1234, 

    Status: 'Active'

}

Встраивание данных

MySQL не предлагает никаких вариантов для вложения или встраивания данных. Вы можете использовать JOIN, но они могут привести к увеличению размера таблиц с ненужными полями. Соединения также могут быть трудоемкими и требовательными к производительности.

MongoDB позволяет вставлять связанные данные. У вас также есть возможность ссылаться на данные из другого документа, если вы чувствуете, что документ может слишком сильно увеличиться. Пример включает:

{

    id: 13,

    name: ‘John Doe’,

    age: 23,

    address: {

        City: 'New Jersey,

        Street: 'London',

        Zip_code: 9876

    }

}

Язык запроса

MySQL использует SQL, тогда как MongoDB использует MQL, язык запросов MongoDB. В этом разделе мы сравним некоторые общие операции с базой данных в таблице Employee.

Выбор данных в MySQL

select * from employee;

Вставка данных в MySQL

INSERT INTO employee (employee_id, department, status)

VALUES (12, 'Sales', 'Active');

Обновление данных в MySQL

UPDATE employee SET department = 'Finance' WHERE employee_id = 14;

Выбор данных в MongoDB *

db.find.employee()

Вставка данных в MongoDB

db.employee.insert ({employee_id:'12', department.Sales', status:'Active'})

Обновление данных в MongoDB

db.employee.update({employee_id::{$eq:14}},{$set{ department:'Finance'}},{multi:true})

Оптимизация индекса

Обе базы данных используют индексы для оптимизации. Если MySQL не находит релевантного индекса для запроса, он ищет всю таблицу.

MongoDB просматривает каждый документ в коллекции, если нет индексов.

Развертывание базы данных

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

Скорость и производительность

Поскольку MongoDB — это база данных NoSQL, она быстрее MySQL.

Группировка данных

MongoDB хранит документы, принадлежащие одному классу или группе в коллекции. MySQL хранит строки похожих типов в таблице.

Кластеризация/репликация

MySQL поддерживает репликацию master-slave и master-master, позволяя воспроизводить данные из нескольких основных баз данных параллельно. MongoDB, с другой стороны, поддерживает встроенное сегментирование, репликацию и автоматические выборы.

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

Безопасность

MySQL использует модель безопасности на основе привилегий, которая аутентифицирует пользователей и дает им привилегии для определенных операций с базой данных. На транспортном уровне он использует закодированные соединения между серверами и клиентами.

MongoDB использует аутентификацию на основе ролей с гибкими привилегиями. Она использует уровни транспорта и сокетов для кодирования и декодирования, обеспечивая доступ к базе данных только предполагаемым пользователям.

Масштабируемость

MySQL масштабируется по вертикали, что означает, что вы можете увеличить нагрузку на один сервер, увеличив ОЗУ или характеристики ЦП. MongoDB масштабируется по горизонтали, то есть вы можете создать кластер MongoDB с несколькими серверами, добавив больше серверов в свою базу данных.

Поддержка и документация

MySQL предлагает пожизненную поддержку на трех уровнях:

  • Premier: от 1 до 5 лет.
  • Extended: 6-8 лет.
  • Sustain: от 9 лет.

Для каждого уровня он предлагает круглосуточную техническую поддержку, а также доступ к патчам, исправлениям ошибок, выпускам обслуживания и обновлениям. Документация MySQL поддерживается корпорацией Oracle.

MongoDB предлагает поддержку корпоративного уровня. Это дает вам возможность обновлять версии в удобном для вас темпе. Документация MongoDB поддерживается MongoDB, Inc.

Когда использовать MongoDB или MySQL

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

MySQL — хороший выбор, если:

  • Вы только начали свой бизнес, и ваша база данных мало масштабируется.
  • Ваша структура данных не будет меняться долгое время, или у вас есть фиксированная схема.
  • У вас высокая скорость транзакций.
  • Безопасность данных — ваш главный приоритет.
  • Вам нужна лучшая поддержка. MySQL существует уже давно, поэтому найти решения распространенных проблем намного проще.

MySQL — хороший выбор, если вы работаете с устаревшим приложением, которое требует многострочных транзакций и имеет структурированные данные с четкой схемой.

MongoDB — хороший выбор, если:

  • Вам нужна высокая доступность данных наряду с автоматическим и мгновенным восстановлением данных.
  • Вы работаете с нестабильной схемой и хотите снизить стоимость миграции схемы…
  • Ваши сервисы основаны на облаке.
  • Вы хотите ускорить разработку.

MongoDB может быть правильным выбором, если вы работаете с аналитикой в ​​реальном времени, мобильными приложениями, Интернетом вещей и т.д., где у вас могут быть структурированные или неструктурированные данные, которые могут быстро расти.

Что учить дальше

В этой статье мы рассмотрели основы MySQL и MongoDB, а также некоторые ключевые различия между ними. Далее вам предстоит многому научиться, вы можете начать с: против нереляционных баз данных

  • Соединения SQL
  • Хранимые процедуры
  • Индексирование
  • NoSQL
  • Хранилища «ключ-значение»
  • Node.js драйверы



2021-02-15T10:17:51
Вопросы читателей

8 советов по оптимизации sql запросов

При оптимизации производительности разработчики и архитекторы часто упускают из виду настройку своих SQL-запросов. Понимание того, как работают базы данных, и написание более качественных SQL-запросов играет огромную роль в повышении производительности. Эффективные запросы SQL означают качественные масштабируемые приложения.

В этом руководстве мы рассмотрим 8 основных советов по SQL для оптимизации вашего SQL-сервера.

Совет 1. Выберите правильный тип данных для столбца

Каждый столбец таблицы в SQL имеет связанный тип данных. Вы можете выбирать из целых чисел, дат, переменных, логических значений, текста и т.д. При разработке важно выбрать правильный тип данных. Числа должны быть числового типа, даты должны быть датами и т.д. Это чрезвычайно важно для индексации.

Давайте посмотрим на пример ниже.

SELECT employeeID, employeeName

FROM employee

WHERE employeeID = 13412;

Вышеупомянутый запрос извлекает идентификатор и имя сотрудника с идентификатором 13412. Что, если тип данных для employeeID — строка? Вы можете столкнуться с проблемами при использовании индексации, поскольку это займет много времени, когда это должно быть простое сканирование.

Совет 2: Табличные переменные и объединения

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

Давайте посмотрим на пример соединения:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate

FROM Orders

INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

Табличные переменные — это локальные переменные, которые временно хранят данные и обладают всеми свойствами локальных переменных. Не используйте табличные переменные в объединениях, как SQL видит их как одну строку. Несмотря на то, что они быстрые, табличные переменные плохо работают в соединениях.

Совет 3. Используйте условное предложение WHERE

Условные предложения WHERE используются для подмножества. Допустим, у вас есть такая ситуация:

-if SEQ_VAR in (1, 2, 3) & diff(DATE_VAR2, DATE_VAR1)≥ 0

— elif SEQ_VAR in (4, 5, 6) & diff(DATE_VAR2, DATE_VAR1) ≥1

— else diff(DATE_VAR2, DATE_VAR1) ≥2

С условным предложением WHERE это будет выглядеть так:

SELECT 

  DAT.ID_VAR,

  DAT.SEQ_VAR,

  DAT.NUM_VAR,

  DATE_VAR1,

  DATE_VAR2,

  TRUNC(DATE_VAR2) - TRUNC(DATE_VAR1) AS LAG_IN_DATES



FROM 

  CURRENT_TABLE      DAT 

WHERE

  (TRUNC(DATE_VAR2) - TRUNC(DATE_VAR1)) >= CASE WHEN SEQ_VAR IN (1,2,3) THEN 0 WHEN SEQ_VAR IN (4,5,6) THEN 1 ELSE 2 END 

ORDER BY ID_VAR, SEQ_VAR

Совет 4: используйте SET NOCOUNT ON

При выполнении операций INSERT, SELECT, DELETE и UPDATE, используйте SET NOCOUNT ON. SQL всегда возвращает соответствующее количество строк для таких операций, поэтому, когда у вас есть сложные запросы с большим количеством соединений, это может повлиять на производительность.

С SET NOCOUNT ON SQL не будет подсчитывать затронутые строки и улучшить производительность.

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

USE AdventureWorks2012;  

GO  

SET NOCOUNT OFF;  

GO  

-- Display the count message.  

SELECT TOP(5)LastName  

FROM Person.Person  

WHERE LastName LIKE 'A%';  

GO  

-- SET NOCOUNT to ON to no longer display the count message.  

SET NOCOUNT ON;  

GO  

SELECT TOP(5) LastName  

FROM Person.Person  

WHERE LastName LIKE 'A%';  

GO  

-- Reset SET NOCOUNT to OFF  

SET NOCOUNT OFF;  

GO

Совет 5: Избегайте ORDER BY, GROUP BY и DISTINCT

Использование ORDER BY, GROUP BYи DISTINCT только в случае необходимости. SQL создает рабочие таблицы и помещает туда данные. Затем он организует данные в рабочей таблице на основе запроса и затем возвращает результаты.

Совет 6. Полностью уточняйте имена объектов базы данных

Цель использования полностью определенных имен объектов базы данных — устранить двусмысленность. Полное имя объекта выглядит так:

DATABASE.SCHEMA.OBJECTNAME.

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

Поэтому вместо использования такого оператора:

SELECT * FROM TableName

Вам следует использовать:

SELECT * FROM dbo.TableName

Совет 7. Узнайте, как полностью защитить свой код

Базы данных хранят всевозможную информацию, что делает их основными целями атак. Распространенные атаки включают SQL-инъекции, когда пользователь вводит инструкцию SQL вместо имени пользователя и извлекает или изменяет вашу базу данных. Примеры SQL-инъекций:

textuserID = getRequestString("userID");

textSQL = "SELECT * FROM Users WHERE userID = " + textuserID;

Допустим, у вас есть это, вы textuserIDполучите ввод от пользователя. Вот как это может пойти не так:

SELECT * FROM Users WHERE userID = 890 OR 1=1;

Поскольку 1=1 всегда верно, он будет извлекать все данные из таблицы Users.

Вы можете защитить свою базу данных от SQL-инъекций, используя параметризованные операторы, проверки ввода, очистку ввода и т. Д. Как вы защищаете свою базу данных, зависит от СУБД. Вам нужно будет разобраться в своей СУБД и ее проблемах безопасности, чтобы вы могли писать безопасный код.

Совет 8: используйте LAG и LEAD для последовательных строк

Функция LAG позволяет запрашивать более одной строки в таблице, не вступая в таблицу к себе. Он возвращает значения из предыдущей строки таблицы.

LAG(expression [,offset[,default_value]]) OVER(ORDER BY columns)

Функция LEAD делает то же самое, но и для следующей строки.

LEAD(expression [,offset[,default_value]]) OVER(ORDER BY columns)

Отказ от использования самостоятельных соединений повышает производительность, поскольку уменьшается количество операций чтения. Но, вы должны проверить, как LEAD и LAG влияют на производительность запросов.

Что изучать дальше

В этой статье мы рассмотрели несколько важных советов по SQL, но всегда есть чему поучиться. Вот несколько хороших следующих шагов:

  • Оптимизация просмотров
  • Вложенные запросы
  • INSERT триггеры
  • Внешние ключи

Удачного обучения!



2021-02-12T21:57:11
Вопросы читателей