Предложение select языка SQL. Встроенные функции

SELECT column FROM table WHERE column LIKE pattern

SELECT * FROM Store_Information WHERE store_name LIKE '%AN%‘;

SELECT column_name FROM table_nameWHERE column_nameBETWEEN value1AND value2

SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen';

SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen';

SELECT Company, OrderNumber FROM Orders ORDER BY(сортировка) Company;

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber;

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC(обратный порядок);

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC(прав.порядок);

SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson';

SELECT * FROM Persons WHERE firstname='Tove' OR lastname='Svendson';

SELECT * FROM Persons WHERE (FirstName='Tove' OR FirstName='Stephen') AND LastName='Svendson';

SELECT store_name FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275);

Функции SELECT function(column) FROM table AVG – среднее значение в столбце; COUNT – число значений в столбце; MAX – самое большое значение в столбце; MIN – самое малое значение в столбце; SUM – сумма значений по столбцу

Примеры: SELECT AVG(Age) FROM Persons; SELECT COUNT (store_name) FROM Store_Information; SELECT COUNT (DISTINCT store_name) FROM Store_Information; SELECT MAX (Age) FROM Persons SELECT SUM (Sales) FROM Store_Information;

Cериализация транзакций, конфликты операций. Методы сериализации транзакций. Синхронизационные захваты, гранулированные синхронизационные захваты. Методы сериализации транзакций. Предикатные синхронизационные захваты. Cериализация на основе временных меток.

Чтобы добиться изолированности транзакций, в СУБД должны использоваться методы регулирования совместного выполнения транзакций. План (способ) выполнения набора транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций. Сериализация транзакций - это механизм их выполнения по некоторому сериальному плану. Обеспечение такого механизма является основной функцией компонента СУБД, ответственного за управление транзакциями. Система, в которой поддерживается сериализация транзакций обеспечивает реальную изолированность пользователей. Основная реализационная проблема состоит в выборе метода сериализации набора транзакций, который не слишком ограничивал бы их параллельность. Приходящим на ум тривиальным решением является действительно последовательное выполнение транзакций. Но существуют ситуации, в которых можно выполнять операторы разных транзакций в любом порядке с сохранением сериальности. Примерами могут служить только читающие транзакции, а также транзакции, не конфликтующие по объектам базы данных. Между транзакциями могут существовать следующие виды конфликтов: W-W - транзакция 2 пытается изменять объект, измененный не закончившейся транзакцией 1; R-W - транзакция 2 пытается изменять объект, прочитанный не закончившейся транзакцией 1; W-R - транзакция 2 пытается читать объект, измененный не закончившейся транзакцией 1. Практические методы сериализации транзакций основывается на учете этих конфликтов.

Существуют два базовых подхода к сериализации транзакций - основанный на синхронизационных захватах объектов базы данных и на использовании временных меток. Суть обоих подходов состоит в обнаружении конфликтов транзакций и их устранении. Наиболее распространенным в централизованных СУБД (включающих системы, основанные на архитектуре "клиент-сервер") является подход, основанный на соблюдении двухфазного протокола синхронизационных захватов объектов БД. В общих чертах протокол состоит в том, что перед выполнением любой операции в транзакции T над объектом базы данных r от имени транзакции T запрашивается синхронизационный захват объекта r в соответствующем режиме (в зависимости от вида операции). Основными режимами синхронизационных захватов являются: совместный режим - S (Shared), означающий разделяемый захват объекта и требуемый для выполнения операции чтения объекта; монопольный режим - X (eXclusive), означающий монопольный захват объекта и требуемый для выполнения операций занесения, удаления и модификации. Гранулированный синхронизационный захват – подход, при применении которого синхронизационные захваты могут запрашиваться по отношению к объектам разного уровня: файлам, отношениям и кортежам. Требуемый уровень объекта определяется тем, какая операция выполняется (например, для выполнения операции уничтожения отношения объектом синхронизационного захвата должно быть все отношение, а для выполнения операции удаления кортежа - этот кортеж). Объект любого уровня может быть захвачен в режиме S или X. Предикатный синхронизационный захват – это захват не объектов, а условий (предикатов), которым удовлетворяют эти объекты.Альтернативный метод сериализации транзакций, хорошо работающий в условиях редких конфликтов транзакций и не требующий построения графа ожидания транзакций. основан на использовании временных меток. Основная идея метода (у которого существует множество разновидностей) состоит в следующем: если транзакция T1 началась раньше транзакции T2, то система обеспечивает такой режим выполнения, как если бы T1 была целиком выполнена до начала T2.

Для этого каждой транзакции T предписывается временная метка t, соответствующая времени начала T. При выполнении операции над объектом r транзакция T помечает его своей временной меткой и типом операции (чтение или изменение). Перед выполнением операции над объектом r транзакция T1 выполняет следующие действия: Проверяет, не закончилась ли транзакция T, пометившая этот объект. Если T закончилась, T1 помечает объект r и выполняет свою операцию. Если транзакция T не завершилась, то T1 проверяет конфликтность операций. Если операции неконфликтны, при объекте r остается или проставляется временная метка с меньшим значением, и транзакция T1 выполняет свою операцию. Если операции T1 и T конфликтуют, то если t(T) > t(T1) (т.е. транзакция T является более "молодой", чем T), производится откат T и T1 продолжает работу. Если же t(T) < t(T1) (T "старше" T1), то T1 получает новую временную метку и начинается заново. К недостаткам метода временных меток относятся потенциально более частые откаты транзакций, чем в случае использования синхронизационных захватов. Это связано с тем, что конфликтность транзакций определяется более грубо. Кроме того, в распределенных системах не очень просто вырабатывать глобальные временные метки с отношением полного порядка.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: