SlideShare a Scribd company logo
1 of 44
MySQL за начинаещи
Georgi Kodinov
Team Lead,
MySQL Server GeneralTeam
Да ви се представя!
инж. Георги “Жоро” Кодинов
• MySQL разработчик от 2006
• Работя от Пловдив
• Ръководя разпределен екип от разработчици
• ИТ мениджър в банка в предишен живот
• Работя „от къщи“ от повече от 20 години 
2
3
1. Какво е MySQL?
2. Да изберем правилния вариант
3. MySQL понятия
4. Основни операции
5. Как да преживеем културния шок?
6. Какво е новото в MySQL 8.0?
7. А след това накъде?
За какво ще говорим?
4
• Някакво ниво на разбиране на SQL
• За предпочитане предишен опит с MySQL или други бази данни
• Търпение!
Какво ниво на разбиране очаквам от вас?
5
Какво е MySQL ?
6
7
https://www.instagram.com/_flipfloplife_
8
Db-engines Ranking
https://db-engines.com/en/ranking
9
Стабилна ACID compliant RDBMS (релационна база данни)
С отворен код (GPL v2 или частен лиценз)
Използвана от някои от най-големите web компании в този свят
Налична във всички Линукс дистрибуции и облаци
Детайлно документирана и поддържана професионално от Oracle
Лесна за инсталиране и използване
Какво е MySQL?
10
Да изберем правилния вариант
11
Server and
Connectors
Document
Store
InnoDB
MySQL Shell,
Kubernetes
operator,
Router
NDB
Cluster
Community  
Classic 
Standard  
Enterprise    
Cluster Carrier
Grade
    
„Безоблачни“ MySQL версии
12
Има ли среди за разработка?
13
Инсталатор? Архив? Облак?
срещу
14
Базови MySQL понятия
15
Архитектура на MySQL сървър
Клиентски приложения
Connectors: C, JDBC, ODBC, PHP, Python, .NET
Сървър
Parser + Optimizer
Query Execution
Storage Engines
InnoDB MyISAM Memory …
DocumentDB
Plugin
Component
Plugin
Plugin
16
Управляват складиране и извличане на данни в/от таблица
Всяка таблица има storage engine!
Някои по-популярни storage engines:
• InnoDB (по подразбиране от 5.5) – транзакционна,ACID compliant
• MyISAM (предишна) – Не-транзакционна, базирана на файлове
• INFORMATION_SCHEMA,
• PERFORMANCE_SCHEMA
• black hole storage engine
• NDBCluster
Storage Engines
17
Добавят функционалност във сървъра без рекомпилация
По-интересни типове
• Authentication
• Storage engines
• SQL accessible functions
• Password validation
• INFORMATION_SCHEMA tables
• Daemons
• Keyring
Плъгини и Компоненти
18
Винаги от 2 части: ‘потребителско име’@’име на хост’.
Може да използва маски в името на хоста: празни (‘’), ‘%’ и ‘_’.
Хоста може да бъде и IP адрес или IP маска.
Начините на удостоверяване са плъгини.
Няма пароли записани в таблици в чист текст!
Поддържа двустепенна автентикация, LDAP, Kerberos….
Потребителски акаунти в MySQL
19
Иван от счетовдството се опитва да влезе
MySQL намира потребителска сметка ’’@’%.accounting’ и автентикира Иван срещу нея
Иван може да използва привилегиите дадени на ’’@’%.accounting’
Логнат (“Logged in”) и текущ (“Current”) потребителски акаунти
Иван@p1.accounting
mysql.user
’’@%.accounting
user() current_user()
20
Правата винаги се дават на потребител+хост комбинация
Винаги използвайте DROP USER за да почисти правилно!
INSERT права може да се дадат и само на определени колони от таблица
Всички права се проверяват срещу current_user()
Раздаване на права
21
Глобални: USAGE, SHUTDOWN,SUPER, CREATE …
На ниво база данни: CREATE, DROP, EXECUTE, SELECT, …
На ниво таблици: INSERT, SELECT, …
Колони: INSERT, SELECT, UPDATE
Подпрограми: EXECUTE, CREATE ROUTINE, ALTER ROUTINE
Потребителски сметки: PROXY
Права в MySQL
22
• Еднопосочно: Първичен (primary) към копия (replicas)
• Асинхронна или полу-синхронна (Semi-Synchronous)
• Формати на replication log
• SQL заявки
• Променени редове
• Смесена
• Групова репликация (group replication)
Replication
23
Само за InnoDB и NDB
Horizontal partitioning
Partition by
• List: BY LIST(<expr>) (PARTITION <name>VALUES IN (3,5,6,9,17)
• Range: BY RANGE (<expr>) (PARTITION <name>VALUES LESSTHAN (<num>), …
• Hash/Key: BY HASH( <expr> ) PARTITIONS (4)
Partitioning
24
Различни за всяка сесия
Нямат декларан тип
Не се налага да ги декларирате
Потребителски променливи (UserVariables)
mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql> SELECT * FROM shopWHERE price=@min_price OR price=@max_price;
+---------+----------+---------+
| article | dealer | price |
+---------+----------+---------+
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+----------+---------+
25
Основни операции
26
IPv4 and IPv6 are supported
DesignatedTCP port 3306
Transparent SSL encryption layer supported
Свързаване към сървъра
Protocol Connection Type Operating Systems
TCP/IP Локално и отдалечено Всички
UNIX Socket File Локално UNIX
Named Pipe Локално и отдалечено Windows
Shared Memory Локално Windows
 Порръджа IPv4 и IPv6
 Имаме запазен TCP порт 3306
 Връзките може да са криптирани с SSL
27
‘?’ е за помощ за командите
Заявките свършват на точка и запетая (Или какъвто разделител е настроен в програмата).
Винаги има “текуща” база данни: чрез команда USE или от командния ред
SQL заявките се четат от стандартния вход (stdin) ако mysql не е в интерактивен (console) режим
Резултатите се печатат на стандартния изход (stdout), грешките на стандарнтия поток за грешки
(stderr)
Може да редактирате командите ако mysql е в интерактивен режим
Не забравяйте предупрежденията! (SHOWWARNINGS)
Изпълняване на заявки в програмата ‘mysql’
28
Традиционния MySQL начин
• SHOW DATABASES / TABLES /TRIGGERS / PROCEDURE /FUNCTION STATUS
• SHOWCREATETABLE /VIEW /TRIGGER
• SHOW PROCEDURE / FUNCTION CODE
Таблиците в INFORMATION_SCHEMA
• TABLES,TRIGGERS,VIEWS, ROUTINES, COLUMNS …
ls, dir ...
Разглеждане на базите данни и тяхното съдържание
29
Интерактивни
• MySQLWorkbench
• MSVisual Studio Code
На командната линия
• mysqldump
• mysqlbinlog
• mysql_config_editor
• MySQL Shell
MySQL EnterpriseTools
Други интересни команди
30
Как да преживеем културния шок?
31
Базите данни са директории
Таблиците са просто (набор от) файлове
Структура на данните на диска на сървъра
32
Най неочакваните неща
• AVG() ≠ AVG<интервал>()
• ’това е стринг’ (кавички)
• ”това е и идентификатор и стринг” (двойни кавички)
• `това също е и идентификатор и стринг` (обратни кавички)
• b, n, r, t, Z значат същите неща като в C/C++
• || е OR, а не CONCAT(), && работи като AND!
sql_mode (ANSI , traditional, mssql, postgresql , oracle, …)
SQL диалект
33
DROPTABLE/DATABASE … IF EXISTS
Потребителски променливи
По подразбиране при сравняване на текст големи и малки букви са равни!
Уникални местни команди и функционалност
34
Всяка таблица има нужда от storage engine. А има и по подразбиране!
Внимавайте за Storage Engine
mysql> create table t1 (a integer) engine='vaporware';
Query OK, 0 rows affected, 2 warnings (0,05 sec)
mysql> show create table t1;
CREATETABLE `t1` (
`a` integer(11) DEFAULT NULL
) ENGINE=InnoDB
35
SELECT 1 FROM DUAL WHERE 1 = ‘1 текст’ връща 1 ред!
Текста се изрязва когато го поставяте в по-малка колона.
По-големите и по-малките числа се закръглят до възможните при запис в таблица
Някои неща са валиден SQL дори и като не работят: примерно FOREIGN KEYS and MyISAM
MySQL се опитва да ви помогне. Понякога дори доста натрапчиво!
36
Новото в MySQL 8.0
37
• Data Dictionary
• Atomic DDL
• Автоматичен ъпгрейд на базите
• Криптиране на ниво таблици
• Моментален ALTERTABLE
• По-добра JSON поддръжка
• SET PERSIST за конфигурация
• MySQL Clone plugin
• НАИСТИНА много инструменти за сигурност
• Component инфраструктура
MySQL 8.0: Най-добрата версия!
38
А сега накъде?
39
http://www.mysql.com/training/
Курсове
• MySQL Fundamentals, MySQL for Developers, MySQL for DBAs
• PerformanceTuning, HighAvailability, Cluster
Сертифициране
• DatabaseAdministration, Database Developer
Пътеки за обучение
Обучения
40
http://www.mysql.com/support
Oracle Lifetime Support for MySQL
• 24x7
• Неограничен брой инциденти
• База от знания
• Абонамент за нови версии с оправени грешки, специални версии, кръпки
• MySQL консултации
Вземете поддръжка
41
MySQL “Developer Zone” : http://dev.mysql.com
• Онлайн документация
• Форуми
• Bug tracker
• Новини
• Ръководства за разработчици
• Готови за използване програми
• Блогове
Станете част от MySQL обществото
42
Търсене на “MySQL” връща
• 265M резултата на онази търсачка
• 35M резултата в една друга търсачка
Търсете в интернет
43
Въпроси?
Georgi.Kodinov@oracle.com
44

More Related Content

Similar to 2022 TurnovoConf MySQL за начинаещи.pptx

01 vavedenie v sql server 2000
01 vavedenie v sql server 200001 vavedenie v sql server 2000
01 vavedenie v sql server 2000Ivan Peev
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkciiIvan Peev
 
Уроците от работата ми по WordPress.com - Веселин Николов
Уроците от работата ми по WordPress.com - Веселин НиколовУроците от работата ми по WordPress.com - Веселин Николов
Уроците от работата ми по WordPress.com - Веселин НиколовbeITconference
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2DAVID Academy
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov
 
15.характеристика на cisc инструкции
15.характеристика на cisc инструкции15.характеристика на cisc инструкции
15.характеристика на cisc инструкцииdnaidenowa
 
Memory problems in .NET apps
Memory problems in .NET appsMemory problems in .NET apps
Memory problems in .NET appsBorislav Ivanov
 
(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2Zdravko Stoychev, CISM, CRISC
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLDAVID Academy
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code IntroductionSvetlin Nakov
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality CodeSvetlin Nakov
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + SecuritySvetlin Nakov
 
Защита при създаването на PHP-приложения
Защита при създаването на PHP-приложенияЗащита при създаването на PHP-приложения
Защита при създаването на PHP-приложенияNikolay Milkov
 
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...DAVID Academy
 

Similar to 2022 TurnovoConf MySQL за начинаещи.pptx (20)

01 vavedenie v sql server 2000
01 vavedenie v sql server 200001 vavedenie v sql server 2000
01 vavedenie v sql server 2000
 
Php sec
Php secPhp sec
Php sec
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
Уроците от работата ми по WordPress.com - Веселин Николов
Уроците от работата ми по WordPress.com - Веселин НиколовУроците от работата ми по WordPress.com - Веселин Николов
Уроците от работата ми по WordPress.com - Веселин Николов
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
 
B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
 
B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
 
Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
 
15.характеристика на cisc инструкции
15.характеристика на cisc инструкции15.характеристика на cisc инструкции
15.характеристика на cisc инструкции
 
Memory problems in .NET apps
Memory problems in .NET appsMemory problems in .NET apps
Memory problems in .NET apps
 
(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
 
Security Log Management
Security Log  ManagementSecurity Log  Management
Security Log Management
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code Introduction
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
 
16 klauzi
16 klauzi16 klauzi
16 klauzi
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + Security
 
Защита при създаването на PHP-приложения
Защита при създаването на PHP-приложенияЗащита при създаването на PHP-приложения
Защита при създаването на PHP-приложения
 
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
 

More from Georgi Kodinov

2023 TurnovoConf MySQL Authentication.pptx
2023 TurnovoConf MySQL Authentication.pptx2023 TurnovoConf MySQL Authentication.pptx
2023 TurnovoConf MySQL Authentication.pptxGeorgi Kodinov
 
OpenSUSE Conf 2020 MySQL Clone
OpenSUSE Conf 2020 MySQL CloneOpenSUSE Conf 2020 MySQL Clone
OpenSUSE Conf 2020 MySQL CloneGeorgi Kodinov
 
2020 pre fosdem mysql clone
2020 pre fosdem   mysql clone2020 pre fosdem   mysql clone
2020 pre fosdem mysql cloneGeorgi Kodinov
 
2019 BGOUG Autumn MySQL Clone
2019  BGOUG Autumn MySQL Clone2019  BGOUG Autumn MySQL Clone
2019 BGOUG Autumn MySQL CloneGeorgi Kodinov
 
2019 indit blackhat_honeypot your database server
2019 indit blackhat_honeypot your database server2019 indit blackhat_honeypot your database server
2019 indit blackhat_honeypot your database serverGeorgi Kodinov
 
PLe19 How To Instrument Your Code in performance_schema
PLe19 How To Instrument Your Code in performance_schemaPLe19 How To Instrument Your Code in performance_schema
PLe19 How To Instrument Your Code in performance_schemaGeorgi Kodinov
 
DevTalks.ro 2019 What's New in MySQL 8.0 Security
DevTalks.ro 2019 What's New in MySQL 8.0 SecurityDevTalks.ro 2019 What's New in MySQL 8.0 Security
DevTalks.ro 2019 What's New in MySQL 8.0 SecurityGeorgi Kodinov
 
DevTalks.ro 2019 MySQL Data Masking Talk
DevTalks.ro 2019 MySQL Data Masking TalkDevTalks.ro 2019 MySQL Data Masking Talk
DevTalks.ro 2019 MySQL Data Masking TalkGeorgi Kodinov
 
FOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureFOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureGeorgi Kodinov
 
MySQL Enterprise Data Masking
MySQL Enterprise Data MaskingMySQL Enterprise Data Masking
MySQL Enterprise Data MaskingGeorgi Kodinov
 
Percona Live Europe 2018: What's New in MySQL 8.0 Security
Percona Live Europe 2018: What's New in MySQL 8.0 SecurityPercona Live Europe 2018: What's New in MySQL 8.0 Security
Percona Live Europe 2018: What's New in MySQL 8.0 SecurityGeorgi Kodinov
 
How to add stuff to MySQL
How to add stuff to MySQLHow to add stuff to MySQL
How to add stuff to MySQLGeorgi Kodinov
 
BGOUG17: Cloudy with a chance of MySQL
BGOUG17: Cloudy with a chance of MySQLBGOUG17: Cloudy with a chance of MySQL
BGOUG17: Cloudy with a chance of MySQLGeorgi Kodinov
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityGeorgi Kodinov
 
Fosdem17 honeypot your database server
Fosdem17 honeypot your database serverFosdem17 honeypot your database server
Fosdem17 honeypot your database serverGeorgi Kodinov
 
2016 oSC MySQL Firewall
2016 oSC MySQL Firewall2016 oSC MySQL Firewall
2016 oSC MySQL FirewallGeorgi Kodinov
 
OUGLS 2016: Guided Tour On The MySQL Source Code
OUGLS 2016: Guided Tour On The MySQL Source CodeOUGLS 2016: Guided Tour On The MySQL Source Code
OUGLS 2016: Guided Tour On The MySQL Source CodeGeorgi Kodinov
 
OUGLS 2016: How profiling works in MySQL
OUGLS 2016: How profiling works in MySQLOUGLS 2016: How profiling works in MySQL
OUGLS 2016: How profiling works in MySQLGeorgi Kodinov
 
Openfest15 MySQL Plugin Development
Openfest15 MySQL Plugin DevelopmentOpenfest15 MySQL Plugin Development
Openfest15 MySQL Plugin DevelopmentGeorgi Kodinov
 

More from Georgi Kodinov (20)

2023 TurnovoConf MySQL Authentication.pptx
2023 TurnovoConf MySQL Authentication.pptx2023 TurnovoConf MySQL Authentication.pptx
2023 TurnovoConf MySQL Authentication.pptx
 
OpenSUSE Conf 2020 MySQL Clone
OpenSUSE Conf 2020 MySQL CloneOpenSUSE Conf 2020 MySQL Clone
OpenSUSE Conf 2020 MySQL Clone
 
2020 pre fosdem mysql clone
2020 pre fosdem   mysql clone2020 pre fosdem   mysql clone
2020 pre fosdem mysql clone
 
2019 BGOUG Autumn MySQL Clone
2019  BGOUG Autumn MySQL Clone2019  BGOUG Autumn MySQL Clone
2019 BGOUG Autumn MySQL Clone
 
2019 indit blackhat_honeypot your database server
2019 indit blackhat_honeypot your database server2019 indit blackhat_honeypot your database server
2019 indit blackhat_honeypot your database server
 
PLe19 How To Instrument Your Code in performance_schema
PLe19 How To Instrument Your Code in performance_schemaPLe19 How To Instrument Your Code in performance_schema
PLe19 How To Instrument Your Code in performance_schema
 
DevTalks.ro 2019 What's New in MySQL 8.0 Security
DevTalks.ro 2019 What's New in MySQL 8.0 SecurityDevTalks.ro 2019 What's New in MySQL 8.0 Security
DevTalks.ro 2019 What's New in MySQL 8.0 Security
 
DevTalks.ro 2019 MySQL Data Masking Talk
DevTalks.ro 2019 MySQL Data Masking TalkDevTalks.ro 2019 MySQL Data Masking Talk
DevTalks.ro 2019 MySQL Data Masking Talk
 
FOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureFOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component Infrastructure
 
MySQL Enterprise Data Masking
MySQL Enterprise Data MaskingMySQL Enterprise Data Masking
MySQL Enterprise Data Masking
 
Percona Live Europe 2018: What's New in MySQL 8.0 Security
Percona Live Europe 2018: What's New in MySQL 8.0 SecurityPercona Live Europe 2018: What's New in MySQL 8.0 Security
Percona Live Europe 2018: What's New in MySQL 8.0 Security
 
How to add stuff to MySQL
How to add stuff to MySQLHow to add stuff to MySQL
How to add stuff to MySQL
 
Pl18 saving bandwidth
Pl18 saving bandwidthPl18 saving bandwidth
Pl18 saving bandwidth
 
BGOUG17: Cloudy with a chance of MySQL
BGOUG17: Cloudy with a chance of MySQLBGOUG17: Cloudy with a chance of MySQL
BGOUG17: Cloudy with a chance of MySQL
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: security
 
Fosdem17 honeypot your database server
Fosdem17 honeypot your database serverFosdem17 honeypot your database server
Fosdem17 honeypot your database server
 
2016 oSC MySQL Firewall
2016 oSC MySQL Firewall2016 oSC MySQL Firewall
2016 oSC MySQL Firewall
 
OUGLS 2016: Guided Tour On The MySQL Source Code
OUGLS 2016: Guided Tour On The MySQL Source CodeOUGLS 2016: Guided Tour On The MySQL Source Code
OUGLS 2016: Guided Tour On The MySQL Source Code
 
OUGLS 2016: How profiling works in MySQL
OUGLS 2016: How profiling works in MySQLOUGLS 2016: How profiling works in MySQL
OUGLS 2016: How profiling works in MySQL
 
Openfest15 MySQL Plugin Development
Openfest15 MySQL Plugin DevelopmentOpenfest15 MySQL Plugin Development
Openfest15 MySQL Plugin Development
 

2022 TurnovoConf MySQL за начинаещи.pptx

  • 1. MySQL за начинаещи Georgi Kodinov Team Lead, MySQL Server GeneralTeam
  • 2. Да ви се представя! инж. Георги “Жоро” Кодинов • MySQL разработчик от 2006 • Работя от Пловдив • Ръководя разпределен екип от разработчици • ИТ мениджър в банка в предишен живот • Работя „от къщи“ от повече от 20 години  2
  • 3. 3
  • 4. 1. Какво е MySQL? 2. Да изберем правилния вариант 3. MySQL понятия 4. Основни операции 5. Как да преживеем културния шок? 6. Какво е новото в MySQL 8.0? 7. А след това накъде? За какво ще говорим? 4
  • 5. • Някакво ниво на разбиране на SQL • За предпочитане предишен опит с MySQL или други бази данни • Търпение! Какво ниво на разбиране очаквам от вас? 5
  • 8. 8
  • 10. Стабилна ACID compliant RDBMS (релационна база данни) С отворен код (GPL v2 или частен лиценз) Използвана от някои от най-големите web компании в този свят Налична във всички Линукс дистрибуции и облаци Детайлно документирана и поддържана професионално от Oracle Лесна за инсталиране и използване Какво е MySQL? 10
  • 12. Server and Connectors Document Store InnoDB MySQL Shell, Kubernetes operator, Router NDB Cluster Community   Classic  Standard   Enterprise     Cluster Carrier Grade      „Безоблачни“ MySQL версии 12
  • 13. Има ли среди за разработка? 13
  • 16. Архитектура на MySQL сървър Клиентски приложения Connectors: C, JDBC, ODBC, PHP, Python, .NET Сървър Parser + Optimizer Query Execution Storage Engines InnoDB MyISAM Memory … DocumentDB Plugin Component Plugin Plugin 16
  • 17. Управляват складиране и извличане на данни в/от таблица Всяка таблица има storage engine! Някои по-популярни storage engines: • InnoDB (по подразбиране от 5.5) – транзакционна,ACID compliant • MyISAM (предишна) – Не-транзакционна, базирана на файлове • INFORMATION_SCHEMA, • PERFORMANCE_SCHEMA • black hole storage engine • NDBCluster Storage Engines 17
  • 18. Добавят функционалност във сървъра без рекомпилация По-интересни типове • Authentication • Storage engines • SQL accessible functions • Password validation • INFORMATION_SCHEMA tables • Daemons • Keyring Плъгини и Компоненти 18
  • 19. Винаги от 2 части: ‘потребителско име’@’име на хост’. Може да използва маски в името на хоста: празни (‘’), ‘%’ и ‘_’. Хоста може да бъде и IP адрес или IP маска. Начините на удостоверяване са плъгини. Няма пароли записани в таблици в чист текст! Поддържа двустепенна автентикация, LDAP, Kerberos…. Потребителски акаунти в MySQL 19
  • 20. Иван от счетовдството се опитва да влезе MySQL намира потребителска сметка ’’@’%.accounting’ и автентикира Иван срещу нея Иван може да използва привилегиите дадени на ’’@’%.accounting’ Логнат (“Logged in”) и текущ (“Current”) потребителски акаунти Иван@p1.accounting mysql.user ’’@%.accounting user() current_user() 20
  • 21. Правата винаги се дават на потребител+хост комбинация Винаги използвайте DROP USER за да почисти правилно! INSERT права може да се дадат и само на определени колони от таблица Всички права се проверяват срещу current_user() Раздаване на права 21
  • 22. Глобални: USAGE, SHUTDOWN,SUPER, CREATE … На ниво база данни: CREATE, DROP, EXECUTE, SELECT, … На ниво таблици: INSERT, SELECT, … Колони: INSERT, SELECT, UPDATE Подпрограми: EXECUTE, CREATE ROUTINE, ALTER ROUTINE Потребителски сметки: PROXY Права в MySQL 22
  • 23. • Еднопосочно: Първичен (primary) към копия (replicas) • Асинхронна или полу-синхронна (Semi-Synchronous) • Формати на replication log • SQL заявки • Променени редове • Смесена • Групова репликация (group replication) Replication 23
  • 24. Само за InnoDB и NDB Horizontal partitioning Partition by • List: BY LIST(<expr>) (PARTITION <name>VALUES IN (3,5,6,9,17) • Range: BY RANGE (<expr>) (PARTITION <name>VALUES LESSTHAN (<num>), … • Hash/Key: BY HASH( <expr> ) PARTITIONS (4) Partitioning 24
  • 25. Различни за всяка сесия Нямат декларан тип Не се налага да ги декларирате Потребителски променливи (UserVariables) mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shopWHERE price=@min_price OR price=@max_price; +---------+----------+---------+ | article | dealer | price | +---------+----------+---------+ | 0003 | D | 1.25 | | 0004 | D | 19.95 | +---------+----------+---------+ 25
  • 27. IPv4 and IPv6 are supported DesignatedTCP port 3306 Transparent SSL encryption layer supported Свързаване към сървъра Protocol Connection Type Operating Systems TCP/IP Локално и отдалечено Всички UNIX Socket File Локално UNIX Named Pipe Локално и отдалечено Windows Shared Memory Локално Windows  Порръджа IPv4 и IPv6  Имаме запазен TCP порт 3306  Връзките може да са криптирани с SSL 27
  • 28. ‘?’ е за помощ за командите Заявките свършват на точка и запетая (Или какъвто разделител е настроен в програмата). Винаги има “текуща” база данни: чрез команда USE или от командния ред SQL заявките се четат от стандартния вход (stdin) ако mysql не е в интерактивен (console) режим Резултатите се печатат на стандартния изход (stdout), грешките на стандарнтия поток за грешки (stderr) Може да редактирате командите ако mysql е в интерактивен режим Не забравяйте предупрежденията! (SHOWWARNINGS) Изпълняване на заявки в програмата ‘mysql’ 28
  • 29. Традиционния MySQL начин • SHOW DATABASES / TABLES /TRIGGERS / PROCEDURE /FUNCTION STATUS • SHOWCREATETABLE /VIEW /TRIGGER • SHOW PROCEDURE / FUNCTION CODE Таблиците в INFORMATION_SCHEMA • TABLES,TRIGGERS,VIEWS, ROUTINES, COLUMNS … ls, dir ... Разглеждане на базите данни и тяхното съдържание 29
  • 30. Интерактивни • MySQLWorkbench • MSVisual Studio Code На командната линия • mysqldump • mysqlbinlog • mysql_config_editor • MySQL Shell MySQL EnterpriseTools Други интересни команди 30
  • 31. Как да преживеем културния шок? 31
  • 32. Базите данни са директории Таблиците са просто (набор от) файлове Структура на данните на диска на сървъра 32
  • 33. Най неочакваните неща • AVG() ≠ AVG<интервал>() • ’това е стринг’ (кавички) • ”това е и идентификатор и стринг” (двойни кавички) • `това също е и идентификатор и стринг` (обратни кавички) • b, n, r, t, Z значат същите неща като в C/C++ • || е OR, а не CONCAT(), && работи като AND! sql_mode (ANSI , traditional, mssql, postgresql , oracle, …) SQL диалект 33
  • 34. DROPTABLE/DATABASE … IF EXISTS Потребителски променливи По подразбиране при сравняване на текст големи и малки букви са равни! Уникални местни команди и функционалност 34
  • 35. Всяка таблица има нужда от storage engine. А има и по подразбиране! Внимавайте за Storage Engine mysql> create table t1 (a integer) engine='vaporware'; Query OK, 0 rows affected, 2 warnings (0,05 sec) mysql> show create table t1; CREATETABLE `t1` ( `a` integer(11) DEFAULT NULL ) ENGINE=InnoDB 35
  • 36. SELECT 1 FROM DUAL WHERE 1 = ‘1 текст’ връща 1 ред! Текста се изрязва когато го поставяте в по-малка колона. По-големите и по-малките числа се закръглят до възможните при запис в таблица Някои неща са валиден SQL дори и като не работят: примерно FOREIGN KEYS and MyISAM MySQL се опитва да ви помогне. Понякога дори доста натрапчиво! 36
  • 38. • Data Dictionary • Atomic DDL • Автоматичен ъпгрейд на базите • Криптиране на ниво таблици • Моментален ALTERTABLE • По-добра JSON поддръжка • SET PERSIST за конфигурация • MySQL Clone plugin • НАИСТИНА много инструменти за сигурност • Component инфраструктура MySQL 8.0: Най-добрата версия! 38
  • 40. http://www.mysql.com/training/ Курсове • MySQL Fundamentals, MySQL for Developers, MySQL for DBAs • PerformanceTuning, HighAvailability, Cluster Сертифициране • DatabaseAdministration, Database Developer Пътеки за обучение Обучения 40
  • 41. http://www.mysql.com/support Oracle Lifetime Support for MySQL • 24x7 • Неограничен брой инциденти • База от знания • Абонамент за нови версии с оправени грешки, специални версии, кръпки • MySQL консултации Вземете поддръжка 41
  • 42. MySQL “Developer Zone” : http://dev.mysql.com • Онлайн документация • Форуми • Bug tracker • Новини • Ръководства за разработчици • Готови за използване програми • Блогове Станете част от MySQL обществото 42
  • 43. Търсене на “MySQL” връща • 265M резултата на онази търсачка • 35M резултата в една друга търсачка Търсете в интернет 43