Sybase IQ - BI аналитика

advertisement
Обзорный тренинг
Андрей Хромов,
технический консультант,
Sybase CIS
Quick Start
Москва, 4 июня, 2010
1 – Sybase Confidential – February 13, 2009
Наша программа:
Модуль 1.
Что такое Sybase IQ
Модуль 2.
Архитектура и терминология
Модуль 3.
Инсталляция Sybase IQ
ПЕРЕРЫВ – 15 мин
Модуль 4.
Создание базы данных
Модуль 5.
Конфигурирование сервера
ОБЕД – 1 час
Модуль 6.
Типы данных. Таблицы. Индексы.
ПЕРЕРЫВ – 15 мин
Модуль 7.
Загрузка данных
Модуль 8.
Работа с Sybase IQ
ВОПРОСЫ И ОТВЕТЫ – 15 мин
2 – Sybase Confidential – February 13, 2009
9:00 – 9:30
9:30 – 10:15
10:15 – 10:45
11:00 – 11:45
11:45 – 12:30
13:30 – 15:15
15:30 – 16:15
16:15 – 16:45
Что такое Sybase IQ
Модуль 1
SYBASE IQ
• СУБД, разработанная специально для Хранилищ Данных,
оптимизированная для:
– Скорости: А) обработка запросов, Б) загрузка данных
– Экономичности: А) администрирование, Б) платформа
– Простоты: А) разработка, Б) эксплуатация
– Масштабируемости: любой размер проекта
• Sybase IQ :
– предназначена для BI проектов
– это НЕ «OLTP» и НЕ «универсальная» СУБД
– обладает уникальными характеристиками
Архитектура Хранилища данных
Извлечение
Трансформация
Загрузка
Base décisionnelle
Data Warehouse
Data Marts
Анализ,
Запросы,
Отчеты
SYBASE IQ: в чем уникальность подхода
1. Вертикальное секционирование
• Традиционные СУБД (Sybase, Oracle, IBM, Microsoft)
• Sybase IQ
bank ccy
amnt
date
inst
ctry
bank
ccy
amnt
date
inst
ctry
bnpp
usd
128000 12/07/2008
swap
fra
bnpp
usd
128000
12/07/2008
swap
fra
ca
usd
90234 01/02/2012
bond
usa
ca
usd
90234
01/02/2012
bond
usa
bnpp
eur
34234 10/11/2005
fx
ita
bnpp
eur
34234
10/11/2005
fx
ita
hsbc
gbp
929023 09/05/2014
fra
gb
hsbc
gbp
929023
09/05/2014
fra
gb
nxbp
jpy
83445 31/12/2009
repo
jap
nxbp
jpy
83445
31/12/2009
repo
jap
ixis
usd
343456 24/04/2007
loan
usa
ixis
usd
343456
24/04/2007
loan
usa
sg
eur
674434 01/06/2006
dep
ger
sg
eur
674434
01/06/2006
dep
ger
• Сокращение Ввода/Вывода,
• Избавление от эффекта "table scan"
SYBASE IQ: в чем уникальность подхода
2. Полное индексирование всей базы
Bitwise
Bitmap
Bitwise
Date
Bitmap
bank
ccy
amnt
date
inst
ctry
bnpp
usd
128000
12/07/2008
Swap
fra
ca
usd
90234
01/02/2012
bond
usa
bnpp
eur
34234
10/11/2005
fx
ita
hsbc
gbp
929023
09/05/2014
fra
gb
nxbp
jpy
83445
31/12/2009
repo
jap
ixis
usd
343456
24/04/2007
loan
usa
sg
eur
674434
01/06/2006
dep
ger
usd
eur
gbp
jpy
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
Bitmap
• Отсутствие необходимости в сложном
специальном тюнинге
• Полная готовность к ad-hoc запросам
SYBASE IQ : в чем уникальность подхода
3. Сжатие данных
Bitwise
Bitmap Bitwise
Date
Bitmap
Bank
Ccy
date
inst
ctry
bnpp
Usd
12/07/2008
Swap
fra
ca
bnpp
Usd
Eur
amnt
128000
90234
34234
01/02/2012
10/11/2005
bond
fx
Bitmap
usa
ita
Bitwise
Bitwise Bitmap
Bitmap Bitwise
Bitwise
Bitwise
Bitmap Bitwise
Date
Date
Date
Bank
Ccy Bitmap
amnt
date
Bitwise
Bitwise
Date
Bank
amnt
date
Bank Ccy
Ccy Bitmap
amnt
date
Bitwise
Bitwise
Date
Bank
Ccy
Bank
bnpp
bnpp
Usd
bnpp Usd
Usd
ca
ca ca
amnt
Ccy128000
amnt
128000
bnpp
bnpp Usd
Usd
Usd
UsdUsd
ca Usd
ca
Usd
date
date
12/07/2008
128000 12/07/2008
12/07/2008
128000
128000 12/07/2008
12/07/2008
90234
01/02/2012
90234
90234
01/02/2012
90234 01/02/2012
01/02/2012
90234
01/02/2012
bnpp
Eur
bnppbnpp
EurEurEur 34234
34234
10/11/2005
bnpp
Eur
34234
10/11/2005
34234
10/11/2005
bnpp
34234 10/11/2005
10/11/2005
hsbc
hsbchsbc
gbpgbpgbp
hsbc
gbp
929023
09/05/2014
fra
gb
hsbc
hsbc
nxbp
jpy
83445
31/12/2009
repo
jap
nxbp jpy
jpy
nxbp
jpy
nxbp
ixis
ixis
usd
343456
24/04/2007
loan
usa
sg
eur
674434
01/06/2006
dep
ger
ixisixis
ixis
sg
sg
sg
gbp
gbp
nxbp jpyjpy
nxbp
ixis
sgusd eur
usd eur
sgusd
eur
eur
eur
929023 09/05/2014
09/05/2014
929023
83445 31/12/2009
31/12/2009
83445
usd
usd
929023 09/05/2014
09/05/2014
929023
09/05/2014
929023
83445 31/12/2009
31/12/2009
83445
83445
343456 31/12/2009
24/04/2007
343456
24/04/2007
343456
24/04/2007
674434 24/04/2007
01/06/2006
343456
343456
674434 24/04/2007
01/06/2006
674434
01/06/2006
674434 01/06/2006
01/06/2006
674434
• Производительность
• Расходы на диски снижаются на 50%
Bitmap
Bitmap
Bitmap
inst
Bitmap
inst
inst
Bitmap
inst
Bitmap
Bitmap
Bitmap
ctry
Bitmapctry
Bitmapctry
ctry
Swap
Swap
Swap
inst
ctry
Swap
Swap
fra fra
fra
frafra
bond usausa
usa
bond
usa
bond
usa
bond
bond
fx
fxfx fxfx
ita ita
ita
itaita
fra
frafra
gb gb
repo
repo
japjap
gbgb
gb
loan
usa
japjap
jap
deploan
loan ger
usa
usa
fra
fra
repo
repo
repo
loan
usa
dep loan ger
dep
dep
dep
usa
ger
ger
ger
SYBASE IQ: Основные характеристики
•
•
•
•
•
•
•
•
•
•
Очень высокая скорость обработки запросов (операции чтения)
Оптимизированная массовая загрузка
Внешне выглядит как обычная реляционная база данных
Стандартный SQL интерфейс (Sybase, ODBC, JDBC)
Открытость к модели данных (реляционная, многомерная)
Простота настройки и конфигурирования
Низкие затраты на администрирование
Широкий выбор платформ (Unix, Linux, Windows)
Линейная масштабируемость
Наращиваемость: архитектура IQ Multiplex
Наращиваемость: Sybase IQ Multiplex
• «Программный» кластер
Поступление
порции
новых данных
Интернет-пользователи
Внутренние
пользователи:
Балансировка нагрузки
Маркетинг,
Аналитики(Data Mining)
• Наращивание мощности по
принципу «Plug’n Play»
• Линейная масштабируемость,
низкий TCO
• Два вида узлов кластера:
«Читатель» или «Писатель»
• Балансировка нагрузки,
управление ресурсами
• Обеспечение функции
«Высокой доступности»
IQ Multiplex в цифрах
Загрузка данных
1 выделенный сервер
Нагрузка на ЦП:
Avg CPU User Avg CPU System
0.95
0.02
Обработка запросов
От 10 до 50 одновременных запросов
1 сервер
4 процессора
8 ГБ ОЗУ
18
16
14
12
10
8
6
4
2
0
1
Тестовая база
Таблицы размером
1-5 млрд. строк
2
3
4
5
6
7
10 Users
8
9
10
1
2
3
4
5
6
7
8
9
10
10 Users
11,66
0,18
2,45
5,14
1,16
2,59
9,31
0,29
0,19
0,46
50 Users
17,39
1,26
7,3
8,96
1,91
5,44
13,65
0,61
0,53
2,01
IQ Multiplex в цифрах.
Загрузка одновременно с обработкой запросов
 Результаты теста оказались неожиданными. Времена
исполнения запросов на сервере с нагрузкой были ниже, чем
на сервере без нагрузки. Вероятнее всего это связано с
кэшированием ввода/вывода в диском массиве MSA 1000.
 Поскольку в этом тесте 16
14
ввод/вывод не был
12
узким местом, то
10
загрузка данных не
8
принесла ожидаемого
6
негативного эффекта.
4
2
Сервер «Писатель»,
принимавший входящий 0 1
2
поток данных, также не
почувствовал никакого
ухудшения
производительности Isolated
Conncurrent with Load
3
4
5
6
7
8
Conncurrent with Load
Isolated
9
10
1
2
3
4
5
6
7
8
9
10
15.56
0.56
5.4
7.5
1.44
4.7
12.08
0.37
0.34
1.06
14.96
0.51
7.09
8.12
1.1
4.52
11.88
0.26
0.36
0.86
Итак, SYBASE IQ – это:
• На 100% решение для BI задач, разработанное для:
– Радикального увеличения производительности,
снижения затрат (на ресурсы, на «тюнинг» базы и
запросов, на эксплуатацию), для упрощения процедуры
развертывания и дальнейший роста платформы
– Возможности работать с данными ПО-ДРУГОМУ
– Обеспечения гарантии успеха Ваших проектов
• Решение, с которым мы сейчас познакомимся поближе
• Решение, которое стоит попробовать
Архитектура и Терминология
Модуль 2
Платформы Sybase IQ
Платформы, поддерживаемые Sybase IQ 15.2
• Sun Solaris (64-bit)
– SPARC64
– UltraSPARC T
– X64 (Opteron)
• IBM AIX (64-bit)
• HP-UX Itanium (64-bit)
– HP-UX PA-RISC (64-bit) – только IQ 12.7
• Linux
– Linux x86/x64 (32- и 64-bit) – RHEL и SLES
– Linux on IBM POWER (64-bit)
• Windows (32- и 64-bit)
– Windows Server 2003, 2008
– Windows XP, Vista, W7
Сервер Sybase IQ
• Сервер Sybase IQ – это процесс ОС, запущенный на
серверном компьютере
 Этот сервер баз данных является «мозгом» системы Sybase IQ
 Пользователи подсоединяются к серверу IQ, чтобы получить
доступ к базе IQ
 Включает в себя возможности настройки
• Рассчитан на работу только с одной базой Sybase IQ
 Иметь несколько баз на одном сервере не рекомендуется
 Пользователи могут эмулировать работу с несколькими базами
данных внутри одной базы IQ путем логического разделения
объектов
• Использует функционал Sybase SQL Anywhere (ASA)
 Для поддержки ряда функций Sybase IQ используется код
сервера ASA
Sybase IQ и ASA
• SQL Anywhere (ASA) – это реляционная СУБД, которая
может существовать как сама по себе, так и в связке с
Sybase IQ
– Поддерживает ANSI SQL и ряд дополнительных конструкций
– Зрелая СУБД, давно и с успехом существует на рынке.
• Sybase IQ
– Патентованная технология хранения
– Вертикальное хранение данных
– Sybase IQ использует некоторый функционал ASA
Sybase IQ и ASA
IQ и ASA – это симбиоз двух продуктов
• Функционал ASA, используемый в IQ
–
–
–
–
Механизм обслуживания подключений пользователей
Синтаксический разбор SQL-запросов
Система безопасности (пользователи, права, ит.п.)
Механизм Component Integration Services (CIS)
• Хранимые процедуры Sybase IQ можно писать, используя
один из двух SQL-диалектов ASA - T-SQL или WatcomSQL
– Системные хранимые процедуры Sybase IQ написаны на WatcomSQL
База данных Sybase IQ
• Включает следующие компоненты
– Три “накопителя” - Stores
 Catalog Store (для метаданных)
 IQ Store (для данных)
 IQ Temporary Store (для временных данных)
– Файлы сервера
 Журнал сообщений IQ (IQ message log)
 Журнал транзакций Catalog Store (Catalog store transaction log)
 Журналы сервера IQ (IQ server log)
Архитектура Sybase IQ
Общая картина (конфигурация с одним сервером)
Пространства БД (dbspaces)
12.7
• Пространство БД (dbspace) – это логическое имя для
дискового пространства, используемого базой данных IQ
– dbspace может быть файлом ОС или «сырым» устройством,
выделенным под Sybase IQ
• База данных Sybase IQ обычно включает в себя несколько
dbspace:
– IQ Store, Catalog Store и IQ Temporary Store – все они состоят из
одного или нескольких dbspace
Пространства БД (dbspaces)
IQ 15
• В Sybase IQ 15 dbspace – это логическое имя контейнера,
объединяющего в себе несколько dbfiles
• Иерархическая структура базы данных в Sybase IQ 15:
– База IQ состоит из 3 Накопителей (Stores):
 IQ Store, Catalog Store, IQ Temporary Store
– Каждый из Stores может состоять из 1 или нескольких dbspace
 Catalog Store и IQ Store - из 1 или нескольких dbspace
 IQ Temporary Store - всегда только из 1 dbspace
– Пространство БД (dbspace) может состоять из 1 или нескольких
файлов БД (dbfiles)
 Некоторые dbspace могут состоять только из 1 dbfile
– Файл БД (dbfile) может быть файлом ОС или «сырым» устройством
Иерархия структуры базы в IQ 15
Stores
dbspaces
dbfiles
IQ 15
Пространства БД (dbspaces) в IQ 15
IQ 15
• dbspace – логический контейнер файлов, относящихся к одному из Stores.
Аналог “базы данных” в ASE
• Catalog Store имеет только 1 dbspace
– SYSTEM – для размещения таблиц каталога БД
– Может состоять лишь из 1 dbfile
• IQ Store после создания нового сервера имеет 1 dbspace. В дальнейшем
обычно имеет несколько dbspaces
– IQ_SYSTEM_MAIN – содержит системные метаданные (аналог базы
данных master в ASE)
– Дополнительно создаваемые dbspace служат для размещения
пользовательских данных
– Каждый dbspace может включать в себя множество dbfile
• IQ Temporary Store имеет только 1 dbspace
– IQ_SYSTEM_TEMP – для хранения временных данных
– Может состоять из множества dbfiles
Накопитель Catalog Store
• Каждая база IQ имеет Сatalog Store. Это всегда 1 dbspace
– Это всегда файл ОС
– Этот dbspace растет автоматически по мере добавления
новых объектов базы
• Содержит служебную информацию о базе IQ
– Метаданные (хранятся в системных таблицах)
– Хранимые процедуры (системные и пользовательские)
• Также известен как ASA-файл базы (database file)
– Физическое имя файла <имябазы>.db
• Логическое имя Сatalog Store - SYSTEM
Накопитель IQ Store
• Служит для хранения данных – в виде сжатых индексов
– Содержит журнал транзакций для данных в таблицах IQ
– Содержит структуру для управления распределением места (список
свободного места, free list)
• Каждая база IQ имеет только один IQ Store
– Обычно состоит из нескольких dbspace
– Эти dbspace могут создаваться как «сырые» устройства
или как файлы ОС
• Логическое имя первого dbspace - IQ_SYSTEM_MAIN
– Имя первого физического файла - <имябазы>.iq
(если dbspace был создан как файл ОС)
Накопитель IQ Temporary Store
• «Рабочая область» базы данных
– Здесь сортируются данные для построения тех индексов, что
строятся в процессе загрузки
– Здесь производится сортировки и группировки, необходимые для
обработки запросов
• Имя физического файла - <имябазы>.iqtmp
(если dbspace создан на файловой системе)
• Каждая база имеет только одно IQ Temporary Store
– Может состоять из нескольких физических файлов
– Может располагаться на «сырых» устройствах или
на файлах ОС
• Логическое имя первого dbspace - IQ_SYSTEM_TEMP
Журнал сообщений IQ (Message Log)
• Текстовый файл. Формат пригодный для чтения. Содержит:
–
–
–
–
Сообщения об массовых операциях INSERT и DELETE
Сообщения об ошибках
Информационные сообщения
Планы запросов
• Физическое имя файла - <имябазы>.iqmsg
– Каждая база IQ имеет один журнал сообщений
• Это всегда файл ОС
Журнал транзакций Catalog Store
• Это журнал транзакций ASA-базы Сatalog Store
– К данным IQ Store и изменениям данных, проходящим в IQ Store,
отношения не имеет
• Используется для отката (roll back) или наката (roll forward)
изменений в базе Catalog Store
• Физическое имя файла - <имябазы>.log
• Это небольшой файл ОС, который с течением
времени медленно увеличивается
База данных IQ. Общая картина
Компоненты базы Sybase IQ (конфигурация с одним сервером)
Понятие «Таблица» в IQ
• Таблицы IQ - это «логические» таблицы,
определенные в Сatalog Store
– На самом деле таблица – это просто набор колонок
• Три типа таблиц
– Основные таблицы (Base tables )
– Локальные временные таблицы (Local temporary tables)
– Глобальные временные таблицы (Global temporary tables)
Понятие «Индекс» в IQ
• Каждая колонка в таблице IQ всегда содержит по крайней
мере один индекс, используемый для выборки данных и
обработки запросов
– Индекс «по умолчанию» создается в момент создания таблицы
– Для обеспечения скорости выборки на большинстве колонок обычно создаются
дополнительные индексы
• Тип нужного индекса определяется по
– Ожидаемой кардинальности данных в колонке
– Тому, как эта колонка используется в запросах
• 9 типов индексов
Fast Projection (FP) = «Индекс по умолчанию»
Low Fast (LF)
Date (DATE)
High Non Group (HNG)
Date & Time (DTTM)
High Group (HG)
Time (TIME)
Compare (CMP)
Word (WD)
Инсталляция Sybase IQ
Модуль 3
Размер требуемого места на диске
•Бинарники IQ
– Unix / Linux: до 800MB
– Windows: до 375MB (283MB для IQ)
•База данных
– IQ Store: от 70 до 100% размера входных данных
– IQ Temporary Store: от 20 до 25% размера IQ Store; определяется в
зависимости от количества пользователей, индексов и данных
•Пространство для файлов загрузки
– Пространство, необходимое для размещения файлов с исходными
данными, для последующей загрузки в IQ
•Файл подкачки
– Равный или удвоенный размер объема физической памяти (RAM)
Рекомендации к оборудованию
• Чем больше ПРОЦЕССОРА, тем лучше
– Ускоряется Загрузка данных (Load Table умеет использовать SMP)
– Улучшается производительность при многопользовательской нагрузке
– Более быстрые CPU предпочтительнее
• Рекомендуется 1 GHz (или выше)
– Производительность сервера IQ практически линейно зависит от
скорости процессора
– IQ больше нагружает CPU, чем подсистему Ввода/вывода
• Чем больше ПАМЯТИ, тем лучше
– Минимум 4 GB на каждый CPU
– Лучше 8 ГБ на 1 CPU
Инсталляция Sybase IQ
• Перед началом инсталляции выберите,
какие компоненты вы хотите установить:
Старт сервера Sybase IQ - Windows
Старт Sybase IQ
1. Выберите:

Пуск > Программы > Sybase > Server IQ 15.1 >
Start Sybase IQ Demo Database
2. Запустится база данных iqdemo на сервере Sybase IQ с
именем hostname_iqdemo
• Рекомендуемый метод запуска сервера Sybase IQ будет
обсуждается в модуле Настройки сервера и Опции БД
– Там обсуждаются настройки и опции сервера
Остановка сервера Sybase IQ - Windows
Остановка IQ – Windows
1. Откройте окно консоли
сервера Sybase IQ. Для этого
щелкните мышкой на иконку
“IQ” на системном трэе – в
нижнем правом углу экрана.
2. Нажмите ‘Shutdown’
(Остановить).
3. Опции командной строки
запуска сервера определяют
режим остановки: ждать
завершения активных
соединений или нет.
.
Соединение с сервером Sybase IQ
• Sybase IQ поддерживает следующие типы соединений:
– ODBC, OLE-DB и Embedded SQL
– Sybase Open Client
– JDBC
• С Sybase IQ поставляются клиентские приложения:
–
–
–
–
Sybase Central – соединяется через ODBC или JDBC
dbisql (Interactive SQL Java) – соединяется через ODBC или JDBC
dbisqlc (Interactive SQL клиент) – соединяется через ODBC
iqisql (Open Client Interactive SQL) – соединяется через OpenClient
Соединение с помощью DBISQL
• DBISQL - это клиент для связи с Sybase IQ
–
–
–
–
Поставляется вместе с Sybase IQ
Это рекомендуемый метод для взаимодействия с Sybase IQ
Будет полезен для администраторов баз данных
Может использоваться как инструмент написания запросов
• DBISQL имеет два GUI-интерфейса и два режима работы
– GUI (графический)
 Interactive SQL Java (тонкий java клиент)
 Interactive SQL Classic (толстый клиент, написан на C)
– Режим работы без GUI (беззвучный режим)
Соединение с помощью Sybase Central
• Графическая консоль для управления серверами Sybase
– Данная Java-версия Sybase Central предназначена только для
использования с IQ
– Использует соединение ODBC или JDBC
• Для соединения с Sybase IQ (Windows):
– Меню Пуск > Sybase > Sybase IQ 15.1 > Sybase Central Java Edition
– Логин - DBA / Пароль– SQL
• Для соединения с Sybase IQ (Unix / Linux):
– Запустить из командной строки Sybase Central Agent
– Запустить из командной строки Sybase Central
Возможности Sybase Central
• Создание новых баз данных Sybase IQ
• Запуск и остановка серверов Sybase IQ
• Добавление и удаление dbspaces, dbfiles
• Создание таблиц, представлений и индексов
–
–
–
–
Изменение таблиц и представлений
Перестройка индексов
Просмотр и изменение данных
Генерация DDL скриптов
• Создание хранимых процедур
• Добавление пользователей и групп, управление правами
Соединение через Open Client
• Open Client – это дополнительный способ соединения с
Sybase IQ
– Использует TDS протокол Sybase
• Зачем нужно использовать Open Client?
– Предоставляет возможность соединения с Sybase IQ через командную
строку
– Для загрузки данных из других удаленных серверов/баз
• Соединение с Sybase IQ через Open Client имеет ряд
особенностей:
– Использует режим транзакций “unchained”
– Не является ANSI стандартом
– Не может распознавать некоторые типы данных IQ
Роль интерфейсного файла
• TDS клиенты и сервера находят друг друга посредством
просмотра интерфейсных файлов
• Интерфейсные файлы необходимы:
– Серверам для указания сетевых адресов, которые они должны слушать,
чтобы клиенты могли к ним подключиться
– Клиентам, чтобы определить, куда направлять свои запросы на
подключение
– Чтобы определить местонахождение сервера из которого нужно
загрузить данные
• Интерфейсные файлы имеют различные имена на разных
платформах:
– UNIX: $SYBASE/interfaces
– Windows: %SYBASE%\ini\sql.ini
Создание баз данных
Модуль 4
Состав базы данных IQ
База создается при помощи команды CREATE DATABASE
Пространство БД (dbspace)
• dbspace – это логическое имя части дискового
пространства, выделенной под использование базой IQ
• Каждая база IQ включает в себя несколько dbspace
– Максимально допустимое количество dbspace для одной базы - 2047
• В каждой новой базе для каждого Накопителя (Store)
имеется как минимум один dbspace
• Впоследствии к базе могут добавляться дополнительные
dbspace
dbspace
• Новые данные в базе распределяются по всем dbspace
– Правильный подход: при создании базы сразу выделить для нее все
необходимое пространство
• Данные распределяются между всеми dbspace равномерно
– Данные записываются во все dbspace по алгоритму round-robin
– Такой подход является рекомендуемым для наилучшей
производительности
• Объекты могут быть помещены в заданный dbspace
– Объекты можно перемещать из одной dbspace в другую
– Функции управления dbspace рассматриваются позднее
• Планируйте по крайней мере 10% резервного пространства
в вашей базе
– Место может понадобиться, например для новых версий таблиц
(рассматривается позднее)
Планирование dbspace
• Перед созданием базы необходимо определиться
с типом и размером выделяемых под нее дисков
– Размер Catalog Store не должен превышать 1TB (или 4GB на Windows с
файловой системой Fat32)
– Размер IQ Store и IQ Temp Store
 На сырых устройствах – без ограничений (может зависеть от платформы)
 На файловой системе – 4TB
• dbspace для IQ Store и IQ Temp Store в последствии могут
быть расширены или удалены из базы данных
– Для того, чтобы можно было расширить существующую секцию dbspace,
она должна быть создана определенным образом (дополнительный
синтаксис при создании)
– Пустая секция dbspace может быть удалена
Catalog Store
• Всегда создается на файловой системе
– Рекомендуется создавать этот файл на той же машине, на которой
работает сервер IQ
• Растет по мере добавления новых объектов в базу
– Никогда не сокращается, даже в случае удаления объектов
• На файловой системе должно быть достаточно места под
файл каталога
– Другие файлы IQ (включая файл сообщений IQ и серверные журналы IQ)
обычно располагаются на той же файловой системе, что и Catalog Store.
– Если на файловой системе закончится место, сервер «зависнет»
dbspace для IQ Store и IQ Temp Store
• Могут создаваться на «сырых» дисках или на файловой
системе
• Состоят из заранее выделенного набора страниц данных
• Могут быть увеличены на величину «зарезервированного»
при создании dbspace места
– Существует специальный синтаксис, выполняющий команду увеличения
dbspace и создания dbspace с последующей возможностью расширения
• Зарезервированное пространство позволяет:
– Добавлять место в существующий dbspace
– dbspaces, занявший все свободное место на диске может быть перенесен на
другой диск бОльшего размера (для этого нужно остановить сервер) и затем
расширен.
Порядок действий при создание базы
Шаг 1. Определить тип сервера, который вы хотите
создать
Шаг 2. Выбрать тип дискового устройства
Шаг 3. Оценить размер базы данных
Шаг 4. Создать базу данных
Шаг 1: Выбрать тип устройства
«Сырые» диски против Файловой системы
Преимущества
Сырой
диск
Управляются напрямую
приложением (СУБД), минуя
файловую систему
Недостатки
Сложнее в управлении
Производительность может
быть выше
Размер устройства может
быть больше
IQ получает полный контроль
над кэшем данных
Файловая
система
Легче в управлении
Дополнительные потери
на операции чтения
Файловая система не
имеет представления о
страницах IQ
Устройства для Sybase IQ
• Рекомендации по производительности
– ПО для управления Логическими Томами использовать не рекомендуется
– Для IQ Store используйте устройства бОльшего размера
– Для IQ Temp Store cоздавайте несколько dbspace (IQ 12.7) или dbfiles (IQ 15)
» Не менее 1-2 dbspace (dbfiles) на 1 CPU
– Используйте «сырые» устройства для лучшей производительности
• Работа с «сырыми» устройствами на Unix / Linux
– Используйте «сим.линки» для «сырых» устройств. Это даст вам большую
гибкость при переконфигурировании устройства
Шаг 2: Оценить размер базы
• IQ Store – 75% от общего размера исходных данных
– Объем требуемого места зависит от нескольких факторов:
 Характер данных (повторяющиеся значения, типы данных)
 Количество и типы IQ-индексов, которые будут созданы
– Пространства dbspace для IQ store впоследствии могут добавляться и
удаляться по мере необходимости
• IQ Temporary Store – обычно 20% от размера IQ Store
– Размер под IQ Temporary Store зависит от:
 Количества HG индексов (перестраиваемых при загрузке данных)
 Количества активных пользователей
 Сложности пользовательских запросов
– Пространства dbspace для IQ Temp Store впоследствии могут добавляться
и удаляться по мере необходимости
Шаг 3: Создать базу данных
Можно использовать команду CREATE DATABASE в DBISQL или
«мастер» в Sybase Central
– Если вы используете
DBISQL,
подсоединитесь к
серверу IQ и
запустите скрипт
Файлы, создаваемые при создании базы
• dbspaces, создаваемые в процессе создания базы
(на файловой системе)
– имябазы.db – IQ catalog store
– имябазы.iq* - IQ store
– имябазы.iqtmp* - IQ temporary store
• Другие объекты, создаваемые в процессе создания базы
– имябазы.log – журнал транзакций
– имябазы.iqmsg – IQ журнал сообщений
Параметры создания базы
• Следующие несколько слайдов посвящены наиболее
важным для базы данных параметрам, многие из которых
оказывают прямое влияние на производительность
• Эти параметры нельзя изменить после того, как база
создана
– Отнеситесь к ним с осторожностью
– Если параметры настроены некорректно,
базу необходимо пересоздать
Параметры создания базы
• CASE – определяет чувствительность к регистру в запросах
– По умолчанию, данные чувствительны к регистру (строчные и заглавные
буквы различаются)
– В базах данных, чувствительных к регистру, производительность выше
• PAGE SIZE – размер страницы для catalog store
– По умолчанию: 4096 байт (4K)
– Варианты: 4096, 8192, 16384, 32768
– Для баз данных с очень широкими таблицами или с очень сложными
запросами (длинные SQL-команды) может потребоваться увеличение
размера страницы
Параметры создания базы
• COLLATION – последовательность сортировки, по
умолчанию равна значению ISO_BINENG
– Это та же последовательность, что и для набора символов ASCII (сначала
заглавные потом строчные буквы)
• JAVA – разрешение на хранимые процедуры на Java (по
умолчанию ON)
• JCONNECT – разрешение на подключение через JDBC (по
умолчанию ON)
IQ PAGE SIZE – какой размер выбрать?
Определяющие факторы (также см. документацию)
• Тип платформы (32 или 64 битных ОС)
– для 32-битных OS -> 64K или 128K
– для 64 битных OS -> 128K или больше (256K, 512K)
• Количество памяти на машине (RAM)
– Размер страницы IQ определяет размер «буфера» кэша IQ
– Если страница IQ большого размера, то в кэше IQ поместится меньшее кол-во
соответствующих «буферов» страниц
• Размер базы и размер самой большой таблицы (# записей)
– Чем больше база данных, тем больший размер рекомендуется для страницы IQ
– Чем больше таблица, тем больший размер рекомендуется для страницы IQ
• Количество конкурентных пользователей
– Больше пользователей требуют большее число «буферов»
!
Создание баз данных: Sybase Central
Мастер создания баз данных будет запрашивать
информацию, требуемую для создания базы
Удаление базы данных
• Удаляет базу данных и все ее содержимое
Пример:
DROP DATABASE ‘D:\\mydb\\mydb.db
Удаляет базу данных mydb
• Нужно указать имя файла базы, которое задавалось при
создании – в операторе CREATE DATABASE
• База данных должна быть остановлена перед удалением
Проверка состояния базы - sp_iqstatus
sp_iqstatus
• Предоставляет детальную информацию о текущей базе
данных
– Информация о версии
– Размер базы
– Объем свободного места в IQ store и IQ temporary store
• Пример на следующем слайде
Проверка состояния базы - sp_iqstatus
Другие полезные хранимые процедуры
• sp_iqcheckdb
– Проверка целостности текущей базы
• sp_iqdbsize
– Распечатка данных о размере текущей базы
• sp_iqdbstatistics
– Статистика по IQ store
• sp_iqspaceused
– Отображение информации о свободном и занятом
месте в IQ Store и в IQ Temporary Store
Конфигурирование сервера
Модуль 5
Конфигурирование Сервера/ Базы
• Каждый сервер и база IQ требуют конфигурирования
• Конфигурирование сервера IQ:
– Ключи командной строки во время старта сервера
И/ИЛИ
– Конфигурационный файл (.cfg файл) - передается со знаком ‘@’
 Это предпочтительный метод старта сервера/базы данных
 Sybase Central при создании базы создает конфигурационный файл «по
умолчанию» с названием ‘params.cfg’
• Конфигурирование базы данных:
– Команда Set Option
Конфигурирование сервера IQ
• Конфигурирование сервера
– Для управления поведением сервера IQ используют ключи
– Ключи задаются в командной строке
или в конфигурационном файле (.cfg), переданном со знаком ‘@’
Командная строка –
start_iq
server-switches
database_file
Конфигурационный файл –
start_iq
@params.cfg
database_file
Комбинация ключей и конфигурационного файла
start_iq –n servername @params.cfg database_file
Ключи для управления памятью IQ
• Эти ключи конфигурационного файла IQ настраивают
размер памяти, выделяемой под кэши IQ
-iqmc = размер основного кэша
Нужно задать размер основного кэша в MB, по умолчанию 16 MB
-iqtc = размер временного кэша
Нужно задать размер временного кэша в MB, по умолчанию 12MB
• Позднее будет рассказано как правильно задать размер
памяти
Кэши IQ (кэши буферов IQ)
•Основной кэш (MAIN CACHE)
– Область памяти для буферов IQ Store
– Используется совместно всеми пользователями
•Временный кэш (TEMP CACHE)
– Область памяти для буферов IQ Temporary Store
– Используется совместно всеми пользователями
•Примечание:
–перед началом процесса загрузки данных размер для обоих кэшей должен
быть выставлен
Зачем нужно настраивать кэши?
Размеры кэшей «по умолчанию»
для реальной работы слишком малы
• Размеры «по умолчанию» достаточны для запуска сервера,
но для работы с реальными большими объемами данных
они должны быть увеличены
• Чем больше размер кэшей, тем меньше физического
ввода/вывода, тем выше производительность
– Кэши используются для всех операций дискового чтения/записи
– Снижают объем физического ввода/вывода
– Повышают производительность операции загрузки данных
 На время загрузки вам, возможно, понадобиться изменить пропорцию
распределения памяти между основным и временным кэшами
- для оптимизации загрузки таблиц с большим количеством индексов
ОСНОВНОЙ кэш (Main Buffer Cache)
• Инициализируется в момент старта базы
• Размер по умолчанию для основного кэша - 16 MB
– Это слишком мало для большинства приложений
• После изменения этого параметра, необходимо
выполнить перезапуск сервера IQ
• Рекомендуемый стартовый размер - 40% общей памяти,
доступной под сервер IQ
– Расчеты и примеры приводятся дальше
ВРЕМЕННЫЙ кэш (Temporary Buffer Cache)
• Инициализируется во время старта базы
• Этот кэш используется для выполнения операций
группировки, сортировки, хэширования, и объединения в
режиме ad-hoc
• По умолчанию, размер этого кэша - 12 MB
– Это очень мало для большинства приложений
• После изменения этого параметра, необходим перезапуск
сервера IQ
• Рекомендуемый стартовый размер - 60% общей памяти,
доступной для сервера IQ
– Расчеты и примеры приводятся далее
Просмотр размера кэшей
Используйте команду sp_iqstatus
Размер основного кэша IQ = 16MB
Размер временного кэша IQ = 12MB
Память и «Активные» пользователи
• Каждый пользователь, подключающийся к серверу IQ
увеличивает объем памяти, используемый процессом IQ
– Память, используемая сервером IQ, увеличивается динамически, по мере
увеличения числа подключенных пользователей
• Каждый ‘активный’ пользователь увеличивает память,
занимаемую сервером на 10MB
– Активные пользователи исполняют запросы или загружают данные
– Для бездействующих пользователей нужно меньше памяти (5MB на
соединение)
• Вам будет нужно оценить количество активных и количество
подключенных пользователей, чтобы иметь возможность
оценить общее количество памяти, необходимой вашему
серверу
Память под загрузку данных
• Во время процесса загрузки данных из плоских файлов
IQ требуется дополнительная память
– Эта память используется для буферизации чтений с диска
– IQ НЕ использует эту память для загрузки данных с других серверов, для
операций UPDATE и DELETE
• Объем необходимой памяти зависит от количества
колонок и от ширины строки, а не от количества записей,
которые необходимо загрузить
• Эта память нужна IQ в дополнение к той, которая
выделятся для работы серверного процесса IQ и для
кэшей IQ
– Память для загрузки контролирует опция базы данных
LOAD_MEMORY_MB
Опция LOAD_MEMORY_MB
• Контролирует объем памяти, выделяемой под буферизацию
чтений из файлов на диске в процессе загрузки таблиц
• Каждая отдельная операция загрузки данных использует
свои собственные буфера
SET OPTION PUBLIC.LOAD_MEMORY_MB = 300
• Может быть задана как постоянный параметр, как
временный параметр и для заданного пользователя
– Может меняться динамически (не требуется перезагрузка сервера)
– Используйте эту опцию, если в процессе загрузки вы увидели следующую
ошибку памяти: ‘All virtual memory has been allocated’ (Вся виртуальная
память занята)
• Также, эта ошибка может возникнуть, если лимит для
заданного пользователя слишком низок
Основной и временный кэши IQ
 Размер кэшей определяется после того,
как становится понятен размер
оставшейся памяти
.
 Рекомендуется поделить оставшуюся
память между основным и временным
кэшами в следующей пропорции:
» 40% - на основной кэш
» 60% - на временный кэш
 Эти значения – хорошая стартовая точка.
Дальнейшая подгонка размеров кэшей
выполняется в соответствии с характером
вашего приложения
Ключи для сетевых соединений
Ключи конфигурационного файла IQ, управляющие
параметрами сетевых коммуникаций
• Параметр “–x” задает тип протокола, используемого для
сетевых коммуникаций
• по умолчанию это TCP/IP с портом 2638
-x tcpip(port=2640)
Запустить сервер на порте 2640
-x tcpip(MyIP = 192.75.209.12:2637)
Установить IP адрес и порт равный 2637
-x tcpip
Использовать только TCP/IP с портом по умолчанию
Опции базы данных IQ
• Команда SET OPTION изменяет опции базы
• Может изменить поведение базы как для всех
пользователей, так и для заданного пользователя
– Изменения могут быть временными и постоянными
SET [TEMPORARY] OPTION
[user_id. | PUBLIC.] option-name = [option-value]
Опции базы данных IQ
Область видимости и время действия
• Область видимости определяет то, по отношению к кому
применяется данная опция
– PUBLIC – воздействует на всех пользователей
– USER_ID – воздействует на отдельного пользователя группы
 Настройки для индивидуального пользователя перекрывают
настройки, установленные с ключом PUBLIC
• Время действия определяет длительность применяемой опции
– Public – постоянная(или до тех пор пока не изменят)
 Разрешено устанавливать только DBA
– Temporary – на время жизни сессии
 Перекрывает установку Public
– Temporary … Public – постоянно, до тех пор пока сервер IQ
не будет перегружен
 Разрешено устанавливать только DBA
Опции базы данных IQ
Опции для повышения производительности
• Public.Force_No_Scroll_Cursors=‘On’; (по умолчанию ‘off’)
– Установка в ‘On’ предотвращает кэширование результатов запросов
пользователей
– Выключает возможность прокручивания Result Set от начала к концу
• Public.Query_Temp_Space_Limit = 0; (по умолчанию 2000 MB)
– Ограничение в 2000 MB может быть слишком маленьким для
некоторых пользователей
– 0 снимает ограничения к объему памяти, выделяемой под временный
кэш
Проверка опций базы данных
sp_iqcheckoptions
Показывает любые опции базы данных, которые были
изменены со значений по умолчанию
Типы данных. Таблицы.
Индексы.
Модуль 6
Модуль 6
ТИПЫ ДАННЫХ
Типы данных Sybase IQ
• Поддерживается очень широкий спектр различных типов данных
– Некоторые типы данных не поддерживаются через Open Client
(isql)
– Существует ряд ограничений между индексами IQ и типами
данных
• Для лучшей производительности и компрессии данных
– Выбирайте наиболее эффективный тип данных для этой колонки
 Проверяйте количество байтов, необходимое для хранение каждого типа
данных
• Обратите особое внимание на следующие типы данных
– Date / Datetime
 Используйте Date вместо Datetime если компонента «время» не
используется
– Numeric / Decimal
 Выбирайте разумное число знаков после запятой
Типы данных IQ
Тип данных ASIQ
Диапазон
Максимальное
число знаков
Размер (в байтах)
CHAR(n)
1<=n<=32K-1
n/a
Column Width
CHARACTER(n)
1<=n<=32K-1
n/a
Column Width
VARCHAR(n)
1<=n<=32K-1
n/a
Data Width
CHARACTER
VARYING(n)
1<=n<=32K-1
n/a
Data Width
INTEGER
-2(^31)<=n<=2(^31)-1
10
4
ИЛИ –2,147,483,648
И 2147483647
UNSIGNED INT
ОТ 0 ДО 4294967294
TINYINT
0<=n<=255
3
1
SMALLINT
-2(^15)<=n<=2(^15)-1
5
2
ИЛИ
ОТ -32,768 ДО 32,767
Типы данных IQ
Типы данных ASIQ
Диапазон
Максимальное
число знаков
Размер (В
байтах)
BIGINT(n)
-9.2(^18)<=N<=9.2(^18)-1
20
8
UNSIGNED
ИЛИ
BIGINT(n)
ОТ 0 ДО 1.8(^19)-1
FLOAT(число
знаков)
Зависит от платформы
16
4 или 8
REAL(число
знаков)
Зависит от платформы
7
4
DATE
Январь 1, 0001 - Декабрь 31,
9999
n/a
4
DATETIME
0001-01-01 00:00:00.000000 -
n/a
8
SMALLDATETIME
9999-12-31 23:59:59.999999
TIMESTAMP
Типы данных IQ
Тип данных ASIQ
Диапазон
Максимальное
число знаков
Размер (в Байтах)
TIME
00:00:00.000000 -
n/a
8
-1038 -1038-1
126
От 2 до 69
DOUBLE
2.22(^-308) - 1.79(^308)
15
8
BIT
0, 1
n/a
1 bit
MONEY
19
16
SMALLMONEY
10
8
BINARY (длина)
n/a
От 1 до 255
VARBINARY (длина)
n/a
От 1 до (32K – 1)
n/a
36
23:59:59.999999
DECIMAL(p,s)
NUMERIC(p,s)
UNIQUEIDENTIFIERSTR
36
Пользовательские типы данных (UDT)
Являются надстройкой над встроенными типами данных
• Создаются командой CREATE DOMAIN
CREATE DOMAIN имя_домена системный_тип
• Также могут быть созданы при помощи хранимой
процедуры sp_addtype
sp_addtype имя_типа, системный_тип
Хранение больших объектов (BLOB)
• IQ поддерживает возможность хранения LOB данных (такая
возможность является отдельной лицензируемой опцией).
– Для этих целей используются типы данных LONG BINARY и LONG VARCHAR
– Максимальный размер объекта напрямую связан с размером страницы IQ
Максимальный размер LOB = Размер страницы IQ x 4GB
• Данные типа BLOB могут только храниться в базе данных
– Поиск по колонкам типа BLOB невозможен
– Поддерживаются некоторые системные функции
• Для типа данных LONG VARCHAR поддерживается функция SUBSTRING64
– Поиск по подстроке возможен
– Поддерживается ряд системных функцй
• См. «Large Objects Management» (Управление крупными объектами) в
документации Sybase IQ
Модуль 6
СОЗДАНИЕ ТАБЛИЦ
Создание таблиц в базе данных IQ
Команда CREATE TABLE
• Ограничение UNIQUE (уникальное значение)
– Не допускает ввода повторных значений в колонке или
группе колонок
– Создается уникальный HG индекс на колонке
(колонках)
• Ограничение PRIMARY KEY (первичный ключ)
– То же самое что и констрейнт UNIQUE, но в таблице
может быть задан только один PRIMARY KEY
• Опция IQ UNIQUE (кардинальность колонки)
– Задает примерное количество уникальных значений в
колонке
– Определяет тип FP индекса
Команда CREATE TABLE
• Ограничение CHECK (проверка)
– Позволяет задать условия, которые должны быть
проверены перед выполнением операций INSERT и
UPDATE
• Ограничение FOREIGN KEY (внешний ключ)
– FK – это колонка (колонки) чьи значения являются
подмножеством значений другой колонки (колонок)
– Колонка (колонки), на которую идет ссылка должны
быть либо основным ключом (Primary Key), либо для
них должен быть задан констрейнт Unique
– Для колонок типа Foreign Key создается неуникальный
HG индекс
Производительность запросов и PK, FK
• Первичные ключи (Primary или Unique) являются
критичными для производительности запросов
– Оптимизатор использует ключи, чтобы определить взаимосвязь таблиц
при выполнении операции join
– Необходимо задавать констрейнты Primary или Unique в таблицах,
используемых в операциях join
 В качестве ключей задавайте колонки, которые вы будете
использовать для операций join
• Для внешних ключей (Foreign Key) и других колонок
нужен HG-индекс
– Констрейнт Foreign Key создает HG-индекс
– Констрейнт FK не является обязательным, - фактически он нужен только в
том случае, когда есть проблема целостности реляционных данных
 Если вы не используете внешние ключи, создавайте HG-индекс на
колонках, участвующих в операции join
Создание таблицы в Sybase Central
• Нажмите на иконку ‘New Table’ (новая таблица) в верхней
части экрана
• Нажмите правой кнопкой мышки на области экрана со
списком таблиц и выберите New > Table (Новая > Таблица)
Временные таблицы в IQ
Глобальные и Локальные
• Глобальные временные таблицы
– Таблицы будут существовать в базе данных, до тех пор
пока их не удалят
– Каждый пользователь будет иметь свой собственный
набор данных в такой таблице
 Строки будут видны только в рамках того соединения, в
котором их добавили в таблицу
 Эти строки удаляются когда соединение закрывается
• Локальные временные таблицы
Другие команды для работы с таблицами
• Просмотреть информацию о таблице
sp_iqtable [table-name]
• Изменить структуру таблицы
ALTER TABLE [owner.] table-name etc.
• Очистить таблицу
TRUNCATE TABLE [owner.] table-name
• Удалить таблицу
DROP TABLE tablename
•Полный синтаксис см. в документации Sybase IQ
Модуль 6
ИНДЕКСЫ
Индексы традиционных СУБД
Многие базы данных используют индекс, построенный по
принципу сбалансированного дерева (B-tree)
Индексы IQ типа «битмап»
• Bitmap представляет заданное значение в виде битовой маски
(например: 0, 1)
• Эффективно индексирует данные вне зависимости от их
кардинальности
• Легок в поддержке (нет необходимости в удалении и перестройке
индексов)
Особенности индексов Sybase IQ
• Быстро строятся, быстро работают (для запросов)
• Компактность
– Требуют меньше дискового пространства чем традиционные B-tree индексы
– Больше данных может находиться в памяти
• Поколоночная структура хранения
– Ключевой фактор для скорости обработки запросов
• Выбор «правильного» индекса IQ делается на основании:
– типа данных колонки,
– кардинальности колонки
– каким образом колонка будет использоваться в запросах
• Каждый индекс (метод доступа) хранится и управляется по-своему
• Вы можете последовательно добавлять, обновлять и удалять
строки в таблицы IQ без перестройки индексов
Работа индексов IQ в запросах
• В отличие от реляционных баз данных, IQ использует все
индексы, всех колонок, так или иначе участвующих в
конструкциях sql-запроса:
– в функциях - Count(), Count Distinct, Datepart
– в JOIN таблиц
– в аргументы поиска (SARG) в операторе Where
– в GROUP BY
• Для реализации среды, способной качественно справляться
с любыми ad-hoc запросами, вам потребуется много
индексов на в ваших таблицах
Девять типов индексов Sybase IQ
Индекс FP (Fast Projection, «Проекция»)
• Этот индекс создается автоматически, во время выполнения
операции CREATE TABLE
– Также известен как ‘Default Index’ (индекс по умолчанию)
– Сервер создает индекс с названием ASIQ_IDX_..._FP
– Может быть удален только при помощи команды Alter Table
Drop <column>
• Используется сервером IQ в большом количестве операций
– Для выборки данных (проецировании) при операции SELECT
– В поиске по шаблону – LIKE ‘%sys%’
– В вычислении выражений – SUM(A+B)
– В операциях Join – устанавливает соответствия между
значениями колонок
• Единственный индекс, который может быть использован в
колонках с типом данных BIT
Как IQ хранит FP индексы
• Существует 4 формы хранения FP-индексов
– Форма хранения зависит от кардинальности колонки
• “Плоский” FP индекс – Flat FP
– Данные хранятся в той же форме, в какой они загружались
(без оптимизации структуры хранения)
– Сколько места потребуется для хранения определяется
типом данных колонки
Char(10) – 10 байтов, Integer – 4 байта, и т.п.
• Оптимизированные FP индексы - FP(1),FP(2),FP(3)
– Хранятся как 1, 2 или 3 байта – в зависимости от
кардинальности колонки
– Для оптимизации структуры хранения DBA должен включить
специальную опцию IQ или для каждой колонки указать
констрейнт IQ UNIQUE в команде Create Table
Оптимизированный FP(1) – 1 байт
• Входные данные конвертируются в 1 байт.
• Далее, создается таблица соответствий, содержащая все уникальные
значения и указатели на их расположение в таблице
Оптимизированный FP(2) – 2 байта
• Когда кардинальность составляет 255-65,536, данные сохраняются уже
в двух байтах
• Аналогично, создается таблица соответствий со всеми уникальными
значениями
Оптимизированный FP(3) – 3 байта
IQ 15
• Появился в Sybase IQ 15
• Используется для данных с кардинальностью > 65,536
• Структура такая же, как у FP(1) и FP(2), за исключением:
– Максимальный размер таблицы соответствий - 16,777,216
– Данные сохраняются в трех байтах
• Так как размер колонки должен быть больше 3 байт, индекс FP(3) не
может быть создан на
– Bit, tinyint, smallint, char(<=3), varchar(<=3), binary(<=3),
varbinary(<=3)
• Типы Long Varchar и Long Varbinary не поддерживаются
Плоский FP (Flat)
Данные колонки сжимаются, но не оптимизируются
В случае плоского FP индекса, данные хранятся в том же виде, в
котором они загружены
Continued …
Опция колонки IQ UNIQUE()
• IQ UNIQUE - это опция колонки в команде Create Table
Create Table customer (
id char(10) NOT NULL IQ UNIQUE(3000)
…)
• Ее значение задает оценочную кардинальность колонки
– < 256 - сервер попытается сохранить FP индекс в 1 байте
– Между 256 и 65535 - попытается сохранить FP-индекс в 2 байтах
– Между 65535 и 16 млн. - попытается сохранить FP-индекс
в 3 байтах
– > 16 млн (или опция IQ UNIQUE не задана) – данные будут
сохранены в виде Плоского FP индекса
• Значение, указанное в IQ UNIQUE служит только одной цели –
определить тип создаваемого FP индекса,
поэтому оно не обязательно должно быть точным
Опция БД - Minimize_Storage
• Когда эта опция включена (= 'ON‘) , команда Create Table будет
автоматически выставлять значение IQ Unique(255) для всех
колонок
– Эта опция снимает необходимость добавления опции IQ UNIQUE
для всех колонок в скриптах создания таблиц
• Использование этой опции позволяет вам быть уверенными, что вы
получите максимальное сжатие данных и наилучшую
производительность запросов
• Примечание: Существует ситуация, когда эта опция может вызвать
проблемы производительности при загрузке данных. Это происходит
когда производится первичная загрузка очень широкой таблицы (1000
колонок и более) и при этом приходится выполнять
переформатирование из 2х- или 3х- байтового в плоский FP.
Для таких таблиц эта опция должна быть выключена
FP индексы и Загрузка данных
• Ситуация: работает процесс массовой загрузки данных в таблицу, на
которой созданы оптимизированные FP индексы
• Что произойдет, если в процессе загрузки выяснится, что значение,
заданное в IQ Unique() неверно?
– однобайтный FP преобразуется в двухбайтный FP индекс без потерь
производительности
– Двухбайтный FP преобразуется в трехбайтный FP индекс, если достаточно
свободного кэша памяти
– Трехбайтный FP будет полностью переформирован - в плоский FP индекс
• Трансформация FP(2) или FP(3) индекса – в плоский FP
–
–
–
–
Потери в производительности будут, но это разовая «неприятность»
Будут перестроены страницы данных для этой колонки
Это произойдет “на лету” и только один раз
Эта процедура не повлияет на последующие загрузки
Формат хранение FP индекса
• Эффективное хранение FP индекса является критичным для скорости
запросов и степени сжатия данных
– Эти индексы используются оптимизатором Sybase IQ
– Это может существенно уменьшить дисковое пространство,
занимаемое колонкой
– Существенно снизится дисковый ввод/вывод во время
исполнения запросов
• Перед началом создания таблиц DBA и команда разработчиков
должны четко осознавать важность и степень влияния
оптимизированных (1,2,3 байтных) FP индексов на систему
– Даже несколько неправильно настроенных колонок могут
существенно ухудшить производительность
Быстрые индексы (LF и HG)
• Эти индексы хранят информацию о кардинальности колонки и
распределении данных
– Используются оптимизатором запросов IQ для формирования
планов запросов
• LF и HG индексы являются критичными для производительности
запросов
– LF индекс рекомендуется для колонок с низкой кардинальностью
– HG индекс рекомендуется для колонок с высокой
кардинальностью, а также для колонок-ключей и колонок,
участвующих в операции join
• Оба типа индексов представляют собой структуры B-Tree
– LF и HG – это единственные индексы, которые могут быть
уникальными
Индекс Low Fast (LF)
B-Tree + Bitmap для данных с низкой кардинальностью
• Для обработки запросов используется набор битовых карт,
построенных для каждого уникального значения (для регулярного LF)
• Лучше всего подходит для колонок с небольшим количеством уникальных
значений (<1500)
Использование индекса LF
• LF индекс является критичным для следующих типов операций:
– Аргументы Поиска (SARG) в предложении WHERE:
 равенство (=), неравенство (!=), операторы IN и NOT IN
– Аргументы агрегативных функций
 MIN(), MAX(), COUNT(), COUNT DISTINCT
– Group By, Order By
• LF индекс также рекомендуется для запросов по диапазону
– >, <, >=, Between, Not Between)
Подробнее об индексе LF
• Каждое конкретное значение колонки сохраняется в цепочке страниц
– Нули не хранятся, хранятся только ‘1’ (true) биты
• Повторяющиеся значения сжимаются
– LF это ‘дешевый’ индекс для данных с низкой кардинальностью
• Максимальная рекомендуемая кардинальность - 1500
– Структуры B-Tree начинают «раздуваться» при повышении
кардинальности
– Если при загрузке данных будет зафиксировано более 9 999
уникальных значений, загрузка ОСТАНОВИТСЯ и произойдет откат
назад
Индекс High Group (HG)
B-Tree + Групповой массив (G-Array)
Расширенный B-tree индекс.
Для операций Join, операций сравнения (=, !=) и Group By
Подробнее об индексе HG
• В листьях этого B-tree хранится уникальное значение колонки и
указатель на цепочку страниц, содержащую номера строк (ROW ID)
для этого значения
– Уникальный HG индекс хранит ROW ID прямо в своих страницахлистьях. Поэтому цепочек страниц в этом случае просто нет.
• HG индекс – это единственный индекс, который может быть
составным (задаваться для нескольких колонок сразу)
– Оптимизатор IQ НЕ использует составные HG индексы для поиска
по отдельной колонке в индексе
• HG индекс требует памяти Temp Memory и места в Temp Store
– для быстрой загрузки HG индекса необходимо иметь Temp-кэш
достаточного размера
HG индекс в запросах
HG индекс рекомендуется для следующих операций:
• ВСЕ колонки, являющиеся КЛЮЧАМИ, или по которым происходит
JOIN таблиц (независимо от кардинальности)
• Аргументы Поиска (SARG) в предложении WHERE
=, !=, IN, >, <, >=, <=, BETWEEN
• GROUP BY
• Выражения SELECT DISTINCT, COUNT DISTINCT
Индекс High Non Group (HNG)
Bit-Wise Индекс. Оптимизирован для операций Поиска по
диапазону и агрегатных функций
Пример:
• SELECT SUM(sales) FROM customer
(2 * 64) + (3 * 32) + (2 * 16) + (1 * 8) +
(3 * 4) + (2 * 2) + (3 * 1) = 283
HNG Индекс
 Разработан для запросов, где операции поиска по диапазону или
функции агрегации используются для колонок с высокой
кардинальностью
 Исключение:
» колонки типа Date/Datetime
» колонки с оптимизированным FP индексом
 Не может быть объявлен как уникальный (Unique)
 Не может быть составным (для нескольких колонок)
• Идеален для колонок, используемых в операциях:
– Поиска по диапазону
– BETWEEN
– Функциях Min(), Max(), Sum(), Avg()
Подробнее об индексе HNG
• Индекс HNG хорошо сжимается и быстро строится
• Важность этого индекса несколько уменьшилась после появления в
IQ других новых типов индексов
– Индексы DATE/DATETIME работают быстрее на запросах по
диапазону для данных типа DATE и DATETIME
– Оптимизированный FP индекс может работать быстрее на
запросах по диапазону, потому что он может использовать
многопоточность в процессе поиска
• Рекомендация – Использовать HNG индекс только для колонок с
очень высокой кардинальностью (> 65 536 уникальных значений)
Индекс Compare (CMP)
Этот индекс IQ используется для сравнения данных двух
колонок одной и той же таблицы
• Набор битовых масок, хранящих бинарный результат сравнения (>, <,
=) двух колонок одной и той же таблицы
• Обе колонки должны иметь одинаковый тип данных (включая
разрядность и количество знаков после запятой)
Индекс CMP
• Для этого индекса не поддерживаются типы данных:
– Bit, Float, Real, и Double
• Используется для выполнения следующих операций в операторе
Where
<, =, >, <=, >=
• Примеры данных колонок:
– Цена продажи, Цена прайслиста
– ID сотрудника, ID менеджера
– Date / Datetime
Подробнее об индексе CMP
• CMP – это индекс, который быстро строится и не требует много места
для хранения
• Пользователи IQ сравнительно редко используют этот индекс
– Это обусловлено ограничениями индекса (обе колонки должны
быть в одной таблице и одного и того же типа данных)
• Также, при создании CMP индекса обе колонки становятся
обязательными для вставки значения
– Эквивалентно созданию колонки со свойством NOT NULL
Индекс Word (WD)
• Индекс WD предоставляет самый быстрый способ работы с данными,
представляющими собой «список слов»
– Применение ограничено типами данных Char() и Varchar()
• ‘Слова’ разделяются пробелами, знаками препинания, специальными
символами
– По умолчанию разделителем считается любой символ, не
принадлежащий к алфавитно-цифровому ряду за исключением:
Дефис (-) и одинарная кавычка (')
• Используется для операций поиска, где в операторе WHERE содержится
– Ключевое слово ‘CONTAINS’, или
– Оператор LIKE
(необходимы разделители, например: like ‘% <поисковое_слово>%’)
Индекс WD
Пример WD индекса применительно к колонке «Адрес»:
Пример запроса:
Select count(*) from customer where address contains (‘Main’)
Подробнее об индексе WD
• Индекс WD в чем-то похож на индекс HG
– Требует дополнительных ресурсов при загрузке
– Требует много места для хранения
• Важно понимать, в каких случаях следует использовать индекс WD
– Поиск должен осуществляться по целому слову
– Предикаты, в которых используется только часть слова и шаблон
поиска (like ‘%олок%’ – «молоко»), не используют WD индекс
Индексы DATE, TIME и DTTM
Три типа индексов для обработки запросов, включающих в
себя работу с данными типа Date, Time, Datetime
• Индекс DATE предназначен только для колонок типа DATE и
используется для обработки запросов, включающих в себя работу с
датой
• Индекс TIME предназначен только для колонок типа TIME и
используется для обработки запросов, включающих в себя работу со
временем
• Индекс DTTM предназначен только для колонок типа DATETIME или
TIMESTAMP используется для обработки запросов, включающих в
себя работу с датой-временем
Индексы DATE, TIME и DTTM
Индекс
День
Месяц
Год
Час
Минута
Сек.
День
недели
Квартал
года
Неделя
года
DTTM









DATE






TIME



Индексы DATE, TIME и DTTM
• Используйте DATE, TIME, или DTTM в следующих случаях:
– Запросы по диапазону (>, <, >=, <=, BETWEEN)
– Запросы с функцией DATEPART использующие операторы
равенства (= !=)
• Ограничения:
– Индексы не могут быть объявлены уникальными
– Могут быть созданы только для индивидуальной колонки
– Не поддерживают следующие функции Datepart
Calyearofweek, Dayofyear, Millisecond
Подробнее о DATE, TIME и DTTM
• Как и в случае с HNG индексом, запросы по диапазону для
соответствующих типов данных могут быть быстрее, с
использованием оптимизированного FP индекса
– Поиск с использованием оптимизированного FP индекса может
быть многопоточным
• Возможно, нет смысла стоит строить эти индексы, если на колонке
есть оптимизированный FP индекс и он используется Оптимизатором
– Протестируйте время исполнения запроса с этими индексами и
без них
– Перестройка этих индексов происходит быстро
Общий алгоритм для выбора индексов
8 шагов
1. По умолчанию, после создания таблицы (CREATE
TABLE) все колонки получают FP индекс
2. Определите колонки, которые будут использоваться
• в операциях JOIN
3. Определите колонки с небольшим количеством
уникальных значений (<1500), которые используются:
• в функциях внутри выражения SELECT
• как предикаты в операторе WHERE
• в GROUP BY
FASTPROJECTION
HIGHGROUP
LOWFAST
4. Определите колонки с большим количеством
уникальных значений (>1500), которые используются:
• в выражении SELECT в функциях
• как предикаты в операторе WHERE
• в GROUP BY
HIGHGROUP
Общий алгоритм для выбора индексов
8 шагов (продолжение)
5. Определите колонки с типом данных Дата или Время
и использующиеся в
• Сравнениях BETWEEN или RANGE
DATE,TIME,DTTM
6. Определите колонки, использующиеся в:
• Сравнениях BETWEEN или RANGE
• функциях AVG и SUM
HIGHNONGROUP
7. Определите колонки, из одной и той же таблицы,
которые могут участвовать в операциях сравнения:
>,<,=
8. Определите колонки, которые могут использоваться в
операциях поиска с предикатами ‘CONTAINS’ или
‘LIKE’
COMPARE
WORD
Допустимые комбинации индексов
• Комбинации, которые имеют смысл, помечены *
Загрузка данных
Модуль 7
Источники данных
Sybase IQ может осуществлять Вставку (insert) или Загрузку (load)
данных в таблицы из следующих источников:
• Плоские файлы
– Фиксированной ширины
– Переменной ширины
• Именованные каналы (Named pipes)
• Таблицы внешних СУБД (Sybase ASE, Microsoft, Oracle, IBM DB2)
• Таблицы самой Sybase IQ
• Прямой ввод данных (insert A, insert B, …)
• Продукты ETL – Sybase ETL (Solonde), а также популярные
инструменты третьих фирм: Informatica, Datastage, и др.
• Репликация Sybase Replication Server – Real-Time Loading
Загрузка таблиц
• LOAD TABLE
– Загружает данные из файлов или из именованных каналов
• INSERT FROM SELECT
– Загружает данные из таблицы в таблицу в той же базе IQ
• INSERT … LOCATION
– Загружает данные из таблиц другого сервера в таблицы IQ
• CIS и INSERT FROM SELECT
– Загружает данные из таблиц другого сервера в таблицы IQ
• INSERT VALUES
– ‘ручная’ вставка данных в колонки IQ
• Утилита iq_bcp (только в версии IQ 12.7)
– Загружает данные из файлов
LOAD TABLE
• Позволяет осуществлять массовую загрузку данных в отдельную
таблицу, из плоских файлов или именованных каналов, содержащих
текстовые(ASCII) или бинарные данные
– Это самый быстрый метод загрузки данных в таблицу
• Позволяет добавлять данные к существующим строкам таблицы
– По умолчанию, сначала заполняет пустые строки таблицы, затем
добавляет новые строки
– Не изменяет содержимого существующих строк
• Включает опции, позволяющие обрабатывать ошибки загрузки
данных и переносить не прошедшие загрузку строки в специальный
файл ОС
• Пользователь, загружающий данные, должен обладать правами на
выполнение команды LOAD TABLE для данной таблицы
Загрузка и блокировка данных
• Sybase IQ накладывает эксклюзивную DML блокировку таблицы на
запись для команд LOAD TABLE, INSERT, UPDATE и DELETE
• Влияние DML блокировки
– В то время, когда кто-то загружает, вставляет или модифицирует
данные таблицы, другие пользователи могут продолжать
выполнять запросы к той же таблице
– Операции по загрузке/изменению данных могут выполнятся
несколькими пользователями одновременно
 Но они должны модифицировать разные таблицы
– Если пользователи попытаются одновременно изменять данные
одной и той же таблицы, «победит» тот, кто успел первым
поставить DML блокировку
 Другие пользователи получат сообщение об ошибке
Синтаксис команды LOAD TABLE
LOAD [ INTO ] TABLE [ owner ].table-name
... ( load-specification [, ...] )
... [ FROM | USING [CLIENT] FILE ]
{ 'filename-string' | filename-variable } [, ...]
... [ CHECK CONSTRAINTS { ON | OFF } IGNORE
CONSTRAINT constrainttype[, ...] ]
... QUOTES OFF
... ESCAPES OFF
... [ FORMAT { 'ascii' | 'binary‘ | ‘bcp’ } ]
... [ DELIMITED BY 'string' ]
... [ STRIP { ON | OFF } ]
... [ WITH CHECKPOINT { ON | OFF } ]
... [ { BLOCK FACTOR number | BLOCK SIZE number } ]
... [ BYTE ORDER { NATIVE | HIGH | LOW } ]
... [ LIMIT number-of-rows ]
... [ NOTIFY number-of-rows ]
... [ ON FILE ERROR { ROLLBACK | FINISH | CONTINUE} ]
... [ PREVIEW { ON | OFF } ]
... [ ROW DELIMITED BY 'delimiter-string' ]
... [ SKIP number-of-rows ]
... [ START ROW ID number ]
... [ UNLOAD FORMAT ]
... [ IGNORE CONSTRAINT constrainttype [, ...] ]
... [ MESSAGE LOG ‘string’ ROW LOG ‘string’ [ ONLY LOG logwhat [, ...] ]
... [ LOG DELIMITED BY ‘string’ ]
Команда LOAD TABLE
Содержит три части:
• Спецификации колонок и формата их загрузки
– Описывает каждую загружаемую колонку и формат
соответствующих данных во входном файле
• Оператор FROM
– Описывает входной файл (файлы), который должны быть загружен
– В IQ 15 “FROM” больше не используется
• Опции загрузки
– Дальнейшее описание набора входных данных
– Контроль поведения операции загрузки
Спецификации колонок
• Определяет колонки таблицы, которые должны быть загружены
• Описывает раскладку входного файла с помощью спецификаторов
колонок
– Задает длину (для полей фиксированной длины) или указывает
разделитель (для полей переменной длины)
 Либо можно указать глобальный разделитель в блоке опций
загрузки
– Задает формат для входных данных типа Date, Time или Datetime
– Задает, какие строковые значения входных данных должны быть
интерпретированы как NULL
– Указывает, какие части входного файла должны быть
проигнорированы (используя FILLER)
• Для корректного составления спецификации загрузки, нужно
внимательно просчитать каждый загружаемый байт файла данных
Пример: Загрузка из текстового файла
• Данные переменной длины, Разделитель –
вертикальная черта (кроме последнего поля)
LOAD TABLE customer
(customer_id
'|',
cust_type
'|',
organization
'|',
contact_name
'|',
contact_phone '|',
address
'|',
city
'|',
state_province '|',
postalcode
'|',
country
'\x0a' )
FROM '/work/data/customer1.dat'
ESCAPES OFF
QUOTES OFF;
Оператор FROM
12.7
• Определяет входной файл(ы) /именованный канал(ы), который
должен быть загружен
– Путь задается относительно машины, на которой находится
сервер Sybase IQ
FROM 'filename-string' [,…]
• filename-string передается серверу как строка
– Имя файла может быть именованным каналом(Named Pipe)
– Для корректного задания пути к директории на Windows, обратная
косая черта (\) должна быть представлена в виде двух косых черт
(\\)
• Пример загрузки
FROM ‘C:\\iqdata\\input.dat'
Оператор USING FILE
IQ 15
• Определяет входной файл(ы), который должен быть загружен
– Путь задается относительно машины, на которой находится
сервер Sybase IQ
USING [CLIENT] FILE 'filename-string' [,…]
• filename-string передается серверу как строка
– Исходный файл может находиться на клиентской машине
– Исходный файл может находиться на серверной машине Sybase IQ
– Для корректного задания пути к директории на Windows, обратная
косая черта (\) должна быть представлена в виде двух косых черт
(\\)
• Пример загрузки локального файла, расположенного на том же
сервере, где работает и сам сервер Sybase IQ:
– USING FILE ‘C:\\iqdata\\input.dat'
Загрузка из нескольких входных файлов
Позволяет загрузить большой объем входных данных в один этап
Загрузка из нескольких файлов
• Когда есть множество файлов, которые нужно загрузить в таблицу, лучше выполнить эту загрузку в одной транзакции
– Эта техника гораздо быстрее, чем загрузка и подтверждение
транзакции для каждого отдельного файла
• В команде LOAD TABLE нужно задать все входные файлы в операторе
from
– Используйте опцию ON FILE ERROR для контроля поведения
загрузки, в случае, если система не может получить доступ к
входному файлу
Обработка проблем загрузки данных в
команде LOAD TABLE
• Выполнение команды LOAD TABLE остановится (выполнится откат) in в
каждой из следующих ситуаций:
– Повторение первичного или повторение уникального ключа
– Внешний ключ не найден в таблице, на которую он ссылается
– Ошибки преобразования данных
• В команде LOAD TABLE есть дополнительный синтаксис для :
– Возможности отбросить входные строки , нарушающие какие-то
ограничения (Primary Key и т.п.) или не проходящие по формату,
и продолжить загрузку
– Задания предельного количества нарушений ограничений
(constraints) перед тем, как начать откат операции загрузки
– Журналирования всех возникших ошибок
– Создания «файла отказов», куда будут помещены все
отброшенные записи
Рекомендации по загрузке
• Использовать команду LOAD TABLE для загрузки из файлов
– Стараться выполнять загрузку всех файлов в одной транзакции
• Располагать файлы для загрузки на отдельном диске (отдельном от
дисков базы данных)
• Создавать все индексы IQ до загрузки данных
• Настраивать память под загрузку
– Использовать опцию LOAD_MEMORY_MB для ограничения
размера кучи (heap size)
– Правильно настроить IQ Temp Cache для HG индексов
• Выполнять загрузку в часы наименьшей нагрузки на сервер
– Для загрузки больших объемов данных рассмотреть возможность
использования IQ Multiplex и выделенного узла «Писателя»
Вставка данных
• Команда INSERT from SELECT
– Позволяет выполнить массовую вставку в таблицу результатов,
полученных от выполнения оператора SELECT из таблицы в той же
базе данных
• Команда INSERT from SELECT (другой сервер / база данных) - CIS
– Позволяет осуществить выборку строк для вставки из другой базы
данных.
• Команда INSERT …. LOCATION
– Выполняет вставку непосредственно из удаленной базы данных
• Команда INSERT VALUES
– Вставка одной строки с заданными значениями
Удаление данных
• Выражение DELETE
– Удаляет данные в соответствии с заданными критериями
• DROP TABLE
– Полностью удаляет таблицу, вместе с ее данными и индексами
• TRUNCATE TABLE
– Удаляет все строки из таблицы
Изменение данных
• Команда UPDATE
– Используется для модификации данных таблицы
– Это может быть основная или временная таблица
Архитектура загрузки ETL инструментом
FTP
Плоские файлы
ODBC
ETL Сервер
FTP
DB API
Sybase IQ
База данных
IQ
Реляционные
базы - источники
Разделяемые файлы
•UNIX NFS Mount
•Windows Network Drive
Client-side Load
Плоские файлы
Server-side Load
Плоские файлы
Sybase IQ 15.2 + Replication Server 15.5
= Real-time loading
Fast Loading
Sybase IQ 15.2 now delivers:
− Flexibility via Sybase ETL data
transformation and load capability,
− Speed via Sybase Replication
Server’s Real-Time Loading
capability.
Oracle
DB2
Sybase ETL
•
ASE
Replication
Server
Businesses demand fast, flexible access to missioncritical information.
Sybase IQ
Data Transformation
Needed for:
Replication Server – Real Time Loading Edition
15.5 now supports both batch and continuous
data movement from ASE to Sybase IQ
• Real-time data access for customer service,
troubleshooting, order fulfillment, other
just-in-time reporting
Sybase ETL 4.9 with CDC capability using
Replication Server as CDC agent provides realtime data loading
Sybase ETL 4.9 provides upsert (micro-batching)
capability for data from other sources
REAL-TIME LOADING PERFORMANCE
DB
DBon
RS
PUB
SUBon
DSon (IQ)
DS (ASE)
SUBoff
DBoff
DSoff (IQ)
•
•
Use design partner data and transactions at primary DB
– Replicate data to DBon with RTL on
– Replicate data to DBoff with RTL off
Show performance difference between DBon and DBoff
REAL-TIME LOADING PERFORMANCE
•
TEST DATA
– Two tables (56 columns and
13 columns)
– 685MB log size generated
by captured design partner
transactions
– 6,937 Transactions with
1,192,642 CMDs (172
CMD/Tran)
• Largest transaction has
289,532 commands
• 91% inserts, 8%
deletes, and 1%
updates
Использование iq_bcp
12.7
• Клиентская утилита для загрузки данных в IQ
– Доступна только в версии IQ 12.7
• Альтернатива серверному механизму массовой загрузки (LOAD TABLE)
• В настоящее время имеет ряд ограничений
– Не задействуют механизм массовой загрузки IQ
– Осуществляет вставку данных в виде пакета “insert” предложений
– Быстрее чем вставка одной строки, но даже близко не сравнима
по скорости с операциями LOAD TABLE и INSERT FROM LOCATION
Работа с Sybase IQ
Модуль 8
dbisql и dbisqlc
• Обе утилиты поставляются с серверным и клиентским программным
обеспечением IQ
– ODBC драйвер для Sybase IQ включен в дистрибутив IQ
• DBISQL (Interactive SQL Java) – более предпочтительный клиент
– Лучше использовать его (кроме случаев, когда документация явно
рекомендует что-то другое)
– Обладает более удобным пользовательским интерфейсом и
более широким функционалом
 Возможность поиска сервера
 Сохраняет историю введенных SQL запросов
 Поддержка кнопок мыши под Unix
 Возможность выполнять операции копирования и вставки
Sybase Central
• Предоставляет графический интерфейс для администрирования
сервера IQ
– Большинство операций по администрированию IQ может быть
выполнено при помощи SQL команд
– Одним из исключений является создание кластера IQ Multiplex.
Для этого используйте Sybase Central.
• Позволяет подключать «плагины» других серверных продуктов Sybase
Возможности Sybase Central
•
•
•
•
•
Создание баз данных
Старт и остановка сервера
Управление пользователями/группами и их правами
Добавление/удаление dbspace
Администрирование кластера Multiplex
• Далее следует краткий обзор некоторых его функций
Sybase Central – Подключение к IQ
• Из строки меню, пункт Tools
 Ручное соединение, используя ‘Connect’
 Создание «Профиля» для соединения (Connection profile) – для более
быстрого доступа к базе IQ
 Регистрация плагинов других серверных продуктов, используя пункт
меню ‘Plug-ins’
• Соединение с сервером, используя ODBC или JDBC
 Использует такой же диалог для подключения, что и в клиенте dbisql
Навигация по Sybase Central
Соединиться – Отсоединиться – Профайлы – Обновить - Свойства
Тулбар
Плагин IQ
Имя сервера
«Бочка» базы данных
Папки
разных
объектов
базы
данных
Нажмите правой кнопкой мыши на
этой панели для отображения
возможных действий
Свойства таблицы
• Нажмите правой кнопкой мыши на таблице, чтобы открыть ее
свойства
• Закладка Columns отображает информацию, касающуюся колонок
 Тип FP индекса, плотность
• Закладка Placement отображает размер индексов и местоположение
dbspace
Свойства колонок таблицы
Язык SQL в Sybase IQ
• Соответствует стандартам ANSI SQL 92/99
• Поддерживает функции и команды, не входящие в стандарт ANSI
– Это так называемые ‘расширения поставщика’ для ANSI SQL
• Совместимость с другими серверными продуктами Sybase
– В хранимых процедурах используется тот же T-SQL и
Watcom SQL что и в ASA
 Существует ряд различий между ASE T-SQL и ASA T-SQL
– Существует ряд различий в поведении при использовании
соединения через Open Client и других соединений
(ODBC, JDBC и т.п.)
 Соединение Open Client не соответствует стандарту ANSI
Экспорт данных из Sybase IQ
• Экспорт данных производится командой SELECT, используя опции
TEMP_EXTRACT
 Экспортирует данные в файл на той машине, где работает
Sybase IQ Server
 Может выводить данные в несколько файлов параллельно
(максимум 8)
 Это самый быстрый метод экспорта данных
• Перенаправление, используя команду SELECT и значок “>#”
 Экспортирует данные в файл на клиентской машине
• Внешняя утилита: iq_bcp { in | out }  только для IQ 12.7
 В $ASDIR/bin – там где располагаются бинарные файлы
сервера IQ
ВОПРОСЫ и ОТВЕТЫ
174 – Sybase Confidential – February 13, 2009
Quick Start
ВВЕДЕНИЕ в SYBASE IQ
Обзорный тренинг
Андрей Хромов,
технический консультант, Sybase CIS
Москва, 4 июня, 2010
176 – Sybase Confidential – February 13, 2009
Download