Optimiser sa base de donnée est l’obsession principale du DBA. Savoir identifier, anticiper et régler les problèmes de performances constituent une vrai valeur ajoutée et cela n’est pas donné à tout le monde. Satisfaction personnelle, satisfaction des décideurs maissurtout satisfaction du client…
Visualizing Words and Topics with ScattertextJason Kessler
1) The document describes the Scattertext tool for visualizing how corpora differ through interactive scatterplots. Scattertext uses scaled F-score to identify terms that are characteristic of different classes or groups.
2) It then provides examples of using Scattertext to analyze different corpora, including identifying words that characterize positive vs. negative movie reviews, distinguishing language used by different demographic groups, and analyzing clickbait headlines to find what language drives engagement.
3) Scattertext allows interactive exploration of term associations through visualizations and uses normalized precision and frequency to identify terms that are highly predictive of classes while being sufficiently distinct from common language.
O documento discute redes sem fio, apresentando:
1) As principais categorias de redes sem fio: interconexão de sistemas, LANs sem fio e WANs sem fio.
2) O padrão 802.11 para LANs sem fio (WiFi), abordando desafios e modos de operação.
3) Conceitos sobre hardware e arquitetura do Bluetooth para conexão sem fio de dispositivos.
Ce cours vise à initier les élèves Ingénieurs de 3e année à l'UMa/ENSPM aux principes de base de l’administration réseau. À la fin de cet enseignement, l’élève sera capable de gérer un réseau, de définir les besoins et de réaliser l’architecture des
réseaux informatiques d’une entreprise. En d’autres mots, l’élève sera à mesure de garantir le bon fonctionnement et la qualité du réseau informatique, et même participer, en outre, à son évolution.
O documento apresenta uma introdução sobre redes de computadores, abordando sua evolução, organização e conceitos básicos. Discorre sobre os modelos OSI e TCP/IP, redes locais, metropolitanas e de longa distância, equipamentos de conectividade e comunicação digital. Também introduz tópicos como modulação, códigos de correção de erros e comunicação wireless.
Visualizing Words and Topics with ScattertextJason Kessler
1) The document describes the Scattertext tool for visualizing how corpora differ through interactive scatterplots. Scattertext uses scaled F-score to identify terms that are characteristic of different classes or groups.
2) It then provides examples of using Scattertext to analyze different corpora, including identifying words that characterize positive vs. negative movie reviews, distinguishing language used by different demographic groups, and analyzing clickbait headlines to find what language drives engagement.
3) Scattertext allows interactive exploration of term associations through visualizations and uses normalized precision and frequency to identify terms that are highly predictive of classes while being sufficiently distinct from common language.
O documento discute redes sem fio, apresentando:
1) As principais categorias de redes sem fio: interconexão de sistemas, LANs sem fio e WANs sem fio.
2) O padrão 802.11 para LANs sem fio (WiFi), abordando desafios e modos de operação.
3) Conceitos sobre hardware e arquitetura do Bluetooth para conexão sem fio de dispositivos.
Ce cours vise à initier les élèves Ingénieurs de 3e année à l'UMa/ENSPM aux principes de base de l’administration réseau. À la fin de cet enseignement, l’élève sera capable de gérer un réseau, de définir les besoins et de réaliser l’architecture des
réseaux informatiques d’une entreprise. En d’autres mots, l’élève sera à mesure de garantir le bon fonctionnement et la qualité du réseau informatique, et même participer, en outre, à son évolution.
O documento apresenta uma introdução sobre redes de computadores, abordando sua evolução, organização e conceitos básicos. Discorre sobre os modelos OSI e TCP/IP, redes locais, metropolitanas e de longa distância, equipamentos de conectividade e comunicação digital. Também introduz tópicos como modulação, códigos de correção de erros e comunicação wireless.
This document discusses fuzzy regression models. It begins by introducing fuzzy regression and its motivation for addressing situations where classical regression is problematic, such as small data sets or vagueness in relationships. It then defines the components of fuzzy regression models, including fuzzy coefficients represented by triangular membership functions. Two approaches to fuzzy regression are explored: Tanaka's possibilistic regression which minimizes coefficient fuzziness, and fuzzy least squares regression. The document uses a sample data set to illustrate key concepts throughout.
O documento descreve a arquitetura em camadas dos protocolos de rede, conhecida como pilha de protocolos. Os protocolos são organizados em camadas empilhadas que se comunicam umas com as outras, com cada camada fornecendo serviços à camada acima. O modelo TCP/IP, que sustenta a Internet, possui quatro camadas principais. Organizações como IETF, IEEE e ISO estabelecem padrões para protocolos de rede.
O documento discute a gestão de processos em sistemas operacionais. Explica que um processo representa um programa em execução e utiliza recursos como CPU e memória. Também descreve os estados possíveis de um processo, como executável, dormente e parado. Finalmente, apresenta comandos como ps, kill e nice para gerenciar e monitorar processos.
O Linux surgiu da mistura do nome Linus com Unix. Foi criado por Linus Torvalds em 1991 como uma versão melhorada do Minix e hoje é um sistema operacional estável e gratuito licenciado sob a GPL.
O documento descreve um sistema de controle acadêmico (SiCAd) com 13 requisitos funcionais para cadastrar e gerenciar cursos, disciplinas, alunos, professores e turmas. Também apresenta um caso de uso de matrícula de aluno com detalhes de interação e regras. Por fim, sugere estudar modelos semelhantes para melhor compreender o domínio.
O documento apresenta uma introdução ao framework Vue.js, descrevendo o que é Vue.js, como iniciar uma instância, as principais diretivas como v-model, v-if e v-for, a estrutura de uma instância Vue incluindo os objetos data, computed e methods. Também discute porque usar Vue.js, destacando sua simplicidade, desempenho e rápida adoção.
The YANG syntax is similar to C and C++ and uses a C-like syntax that was chosen for its readability. This section introduces the YANG syntax. While SMIv1, SMIv2, and SPPI are bound to specific protocols like SNMP and COPS-PR, the purpose of SMIng is to define a common data definition language that can specify data models independently of protocols.
Artificial Intelligence (AI), specifically deep learning, is revolutionizing industries, products, and core capabilities by delivering dramatically enhanced experiences. However, the deep neural networks of today use too much memory, compute, and energy. Plus, to make AI truly ubiquitous, networks need to run on the end device within a tight power and thermal budget. One approach to help address these issues is quantization, which attempts to reduce the number of bits used for weight parameters and activation calculations without sacrificing model accuracy. This presentation covers: why quantization is important, existing quantization challenges, Qualcomm AI Research's existing quantization research, and how developers and researchers can take advantage of quantization on Qualcomm Snapdragon.
This document discusses fuzzy regression models. It begins by introducing fuzzy regression and its motivation for addressing situations where classical regression is problematic, such as small data sets or vagueness in relationships. It then defines the components of fuzzy regression models, including fuzzy coefficients represented by triangular membership functions. Two approaches to fuzzy regression are explored: Tanaka's possibilistic regression which minimizes coefficient fuzziness, and fuzzy least squares regression. The document uses a sample data set to illustrate key concepts throughout.
O documento descreve a arquitetura em camadas dos protocolos de rede, conhecida como pilha de protocolos. Os protocolos são organizados em camadas empilhadas que se comunicam umas com as outras, com cada camada fornecendo serviços à camada acima. O modelo TCP/IP, que sustenta a Internet, possui quatro camadas principais. Organizações como IETF, IEEE e ISO estabelecem padrões para protocolos de rede.
O documento discute a gestão de processos em sistemas operacionais. Explica que um processo representa um programa em execução e utiliza recursos como CPU e memória. Também descreve os estados possíveis de um processo, como executável, dormente e parado. Finalmente, apresenta comandos como ps, kill e nice para gerenciar e monitorar processos.
O Linux surgiu da mistura do nome Linus com Unix. Foi criado por Linus Torvalds em 1991 como uma versão melhorada do Minix e hoje é um sistema operacional estável e gratuito licenciado sob a GPL.
O documento descreve um sistema de controle acadêmico (SiCAd) com 13 requisitos funcionais para cadastrar e gerenciar cursos, disciplinas, alunos, professores e turmas. Também apresenta um caso de uso de matrícula de aluno com detalhes de interação e regras. Por fim, sugere estudar modelos semelhantes para melhor compreender o domínio.
O documento apresenta uma introdução ao framework Vue.js, descrevendo o que é Vue.js, como iniciar uma instância, as principais diretivas como v-model, v-if e v-for, a estrutura de uma instância Vue incluindo os objetos data, computed e methods. Também discute porque usar Vue.js, destacando sua simplicidade, desempenho e rápida adoção.
The YANG syntax is similar to C and C++ and uses a C-like syntax that was chosen for its readability. This section introduces the YANG syntax. While SMIv1, SMIv2, and SPPI are bound to specific protocols like SNMP and COPS-PR, the purpose of SMIng is to define a common data definition language that can specify data models independently of protocols.
Artificial Intelligence (AI), specifically deep learning, is revolutionizing industries, products, and core capabilities by delivering dramatically enhanced experiences. However, the deep neural networks of today use too much memory, compute, and energy. Plus, to make AI truly ubiquitous, networks need to run on the end device within a tight power and thermal budget. One approach to help address these issues is quantization, which attempts to reduce the number of bits used for weight parameters and activation calculations without sacrificing model accuracy. This presentation covers: why quantization is important, existing quantization challenges, Qualcomm AI Research's existing quantization research, and how developers and researchers can take advantage of quantization on Qualcomm Snapdragon.
Numéro un pour les applications en ligne, MySQL se positionne maintenant sur le secteur des applications d’entrepôts de données et d’informatique décisionnelle…
MySQL Day Paris 2016 - MySQL as a Document StoreOlivier DASINI
MySQL Day Paris 2016 - MySQL as a Document Store
✔ Built on Proven SQL/InnoDB/Replication
✔ Schema-less/Relational/Hybrid
✔ ACID/Transactions
✔ CRUD/JSON/Documents
✔ Modern Dev API
✔ Modern/Efficient Protocol
✔ SQL Queries/Analytics over JSON Documents
✔ Transparent and Easy HA/Scaling/Sharding
The document discusses Oracle's MySQL Cloud Service which provides MySQL as a database service on Oracle Public Cloud. Key features include automated backups, patching, monitoring, elastic scaling, high availability, security features from MySQL Enterprise Edition, and tools for data access, migration and restoration. The service runs MySQL 5.7 Enterprise Edition with an optimized configuration for the cloud environment.
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterOlivier DASINI
The document discusses two high availability solutions for MySQL: InnoDB Cluster and NDB Cluster. InnoDB Cluster provides high availability using MySQL Group Replication and allows for read scaling. It has weak consistency, no sharding, and medium operational complexity. NDB Cluster uses the NDB storage engine, provides automatic sharding and strong consistency. It has high operational complexity but also provides native NoSQL APIs and load balancing. The document explores these solutions in further detail.
Case Study: MySQL migration from latin1 to UTF-8Olivier DASINI
This document summarizes Olivier Dasini's presentation on migrating a MySQL database from the latin1 character set to UTF-8. Some key points:
- The migration involved converting database tables, columns, and data to the UTF-8 character set and UTF-8 collations to support non-Latin characters from around the world.
- Challenges included minimizing downtime to avoid loss of income, dealing with legacy data issues, and handling errors due to differences between character sets.
- The solution involved a rolling upgrade approach, with slaves being migrated first to test the process before a master-slave switchover.
- Significant effort was required to clean legacy data issues and handle errors manually
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceOlivier DASINI
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud
MySQL Cloud Service Offering
• Simple:
– Quickly provision MySQL database instances with only a few clicks
• Automated:
– Database management made easy with tools that automate administrative tasks
• Integrated:
– Integrated with Oracle Cloud Services for quick development and deployment
• Enterprise Ready:
– Oracle’s proven MySQL Enterprise Edition for performance, security & uptime
MySQL Parallel Replication: inventory, use-cases and limitationsJean-François Gagné
In the last 24 months, MySQL replication speed has improved a lot thanks to implementing parallel replication. MySQL and MariaDB have different types of parallel replication; in this talk, I present in detail the different implementations, with their limitations and the corresponding tuning parameters (covering MySQL 5.6, MariaDB 10.0, MariaDB 10.1 and MySQL 5.7). I also present benchmark results from real Booking.com workloads. Finally, I discuss some deployments at Booking.com that benefits from parallel replication speed improvements.
Pldc2012 innodb architecture and internalsmysqlops
Innodb uses a traditional OLTP architecture with row-based storage and row locking. Data is stored in tablespaces made up of segments and logs record changes in circular log files. The buffer pool caches data pages and uses an LRU algorithm to flush dirty pages. Multi-versioning allows transactions to read past versions of rows without locking while write operations require row locks. A variety of helper threads perform tasks like flushing data from the buffer pool to disk.
Solutions pour l’optimisation de l’infrastructure des établissements scolairesMicrosoft Technet France
Nous présenterons dans cette session comment optimiser l’infrastructure de vos établissements scolaires : déploiement, virtualisation, clients légers, Windows MultiPoint Server 2011, gestion du cycle de vie des stations et des applications.
Some internal tools were relying on deprecated statements and behavior that changed in MySQL 5.6. The presenter had to update the tools to use the proper START SLAVE/STOP SLAVE statements and account for new information logged in binlogs due to configuration changes. Testing in pre-production helped uncover these issues so they could be addressed before upgrading production servers.
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsPedro Gomes
The document discusses mixing asynchronous replication and group replication for advanced MySQL replication setups. It provides an overview of asynchronous replication, semi-synchronous replication, multi-source replication, and group replication. It then discusses some basic scenarios for mixing these technologies, such as using asynchronous replication for read scaling beyond the group's 9 member limit or aggregating data from multiple groups. The document also covers migrating from asynchronous to group replication and migrating disjoint servers into a group.
Fine-tuning Group Replication for PerformanceVitor Oliveira
This presentation is an overview of Group Replication from the perspective of performance optimization. It shows the main moving parts, the available options and how they can be used to tune its behaviour, and also a few significant benchmark results.
Présentation effectuée pendant la piscine du POC Innovation de Epitech (15 février 2022) par Christophe Villeneuve avec Sébastien "MariaDB : une base de données NewSQL".
Après un tour d'horizon de l'évolution des bases de données, nous nous intéresserons sur la base de données MariaDB qui propose le NewSQL (NoSQL + SQL) et ces différents storages engines disponibles. Ainsi chaque problématique projet peut être couverte par celle-ci.
Présentation effectuée aux JDLL (Journées du Logiciel Libre) 2017 par Christophe Villeneuve sur "Sécuriser et chiffrer MariaDB"/.
La conférence a pour but de montrer comment utiliser le SQL, NoSQL, NewSQL, d'une part et de l'autre le BigData avec ColumnStore dans un environnement sécuriser et chiffrer
Alphorm.com Support de la Formation PHP MySQLAlphorm
Formation complète ici :
http://www.alphorm.com/tutoriel/formation-en-ligne-php-mysql
Le PHP est devenu une véritable langue de programmation, avec une style similaire du C et du C++, le PHP est très puissante pour les applications sur Internet.
PHP est le langage de référence pour le développement d'applications web, de même qu'Apache équipe la grande majorité des serveurs HTTP et que MySQL est la plus utilisée des bases de données SQL Open Source. C'est ainsi que la plate-forme appelée LAMP s'est imposée comme l'architecture la plus courante pour publier sur le web.
Pour qui possède (ou loue) un ordinateur avec Ubuntu, Debian, OS X, ou tout autre distribution dérivée d'Unix, l'effort technique pour créer son propre serveur web et le lier avec un nom de domaine est très abordable (au moins au début). Il est ainsi possible de s'écarter des hébergements uniformes. Pour cela, vous verrez tout au long de cette formation PHP MySQL quels sont les outils système (peu nombreux) que vous devez connaître pour installer Apache et les autres composants.
Vous aborderez pendant cette formation PHP MySQL pas à pas toutes les bases algorithmiques de PHP, les types de données, les fonctions, les structures de contrôle, ainsi que les spécificités liées au web : le traitement des formulaires, la gestion des cookies, des sessions, etc.
Vous apprendrez avec cette formation PHP MySQL les premiers jalons des bonnes pratiques de la programmation, en évoquant les outils de tests automatiques (développés plus tard), la documentation du code, ou l'esquisse d'une organisation du code, comprendre les bases de données relationnelles et la notion de modèle. Vous vous servirez de l'algèbre relationnelle pour fouiller dans les données et vous mettrez en œuvre les opérations fondamentales résumées sous l'acronyme CRUD : Create, Read, Update, Delete.
Au fil de cette formation PHP MySQL, nous commencerons à réfléchir à une application-jouet qui sera un mini-Trello, à savoir une application en ligne permettant de gérer des listes de tâches, qui pourrait être tout aussi bien un outil pour prendre des décisions.
A l’issue de cette formation PHP MySQL, vous aurez tous les outils pour héberger et développer vous -mêmes vos applications en PHP et partir vers d'autres horizons.
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-microsoft-sql-server-2016-ssis-implementer-une-solution-etl
Afin d'améliorer les capacités de BI, les entreprises doivent gérer de façon sécurisée la migration des données à travers de nombreuses plateformes. Dans cette formation SSIS, vous obtiendrez les compétences pour automatiser les tâches de migration complexes et contrôler la réussite ou l'échec des processus de migration.
SQL Server Integration Services (SSIS) est un puissant outil ETL utilisé dans le cadre de projets d'intégration ou de BI. Grâce à cette formation SSIS pratique, vous apprendrez à implémenter une solution ETL évoluée avec SSIS 2016. Vous découvrirez le traitement et l'alimentation des données, la sécurisation et l'optimisation des flux.
Cette formation SSIS vous apprendra à concevoir et à déployer une solution de Business Intelligence avec SQL Server 2016. A l'issue de cette formation SSIS, vous aurez acquis les connaissances et compétences nécessaires pour mettre en œuvre les méthodes de base de l’ETL, implémenter un flux de contrôles et de données dans Intégration Services, déboguer et implémenter la gestion d'erreurs dans Intégration Services, gérer et sécuriser des packages …
Extrait d'une formation d'introduction au NoSQL et à Elasticsearch. L'objectif est de parfaitement comprendre les tenants et les aboutissants des différentes technologies NoSQL et d'avoir l'occasion de les manipuler.
Le NoSQL permet à l'entreprise de résoudre avec des performances remarquables des problématiques complexes en adaptant le bon outil au bon usage.
Pour suivre cette formation ou en savoir plus, rendez-vous sur http://constellation.tech/formation-nosql
Constellation propose également des formations plus spécialisée telles que MongoDB, ELK ou des formations orientées Big Data et Machine learning.
Bon visionnage :)
Alphorm.com Formation MySQL Administration(1Z0-883)Alphorm
La formation complète est disponible ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-mysql-1z0-883
MySQL est devenu le serveur de bases de données issu du monde libre le plus largement adopté par les entreprises.
A l'issue de cette formation, vous saurez installer et administrer MySQL au quotidien, d'une manière efficace et sécurisée.
Cette formation traite aussi des notions avancées de MySQL : réplication, sécurité, sauvegarde, performances et optimisation.
Présentation de la conférence "Optimisation LAMP". Une formation donnée par Openska pour ceux qui veulent aller vite :
http://www.openska.com/formation-optimisation-php.php
#ScalaBigDay
Jeudi 12 juin 2014
"Présentation autour de la BI, Power BI, SQL Server 2014 et témoignage client de Massa Pneu" (Salle 1, 11h15 - 12h00)
Speakers : Ilana Cohen, Sébastien Blanc et Cédric Massa
Sécurité et performance, comment bien optimiser PrestaShopPrestaShop
Sécurité et performance, comment bien optimiser PrestaShop - Oxalide & Rémi Gaillard
Security and performance, how to optimize PrestaShop - Oxalide & Rémi Gaillard
Présentation effectuée à Open Source Expérience 2022 par Christophe Villeneuve et Sébastien de MariaDB sur "MariaDB : une base de données NewSQL".
Cette présentation a pour but de montrer que la base de données Mariadb propose des nouvelles fonctionnalités et avancés importantes pour devenir un coeur
MySQL High Availability Solutions - Avoid loss of service by reducing the r...Olivier DASINI
MySQL High Availability Solutions
Avoid loss of service by reducing the risk of failures
MySQL InnoDB Cluster
Collection of products that work together to provide a complete High Availability solution for MySQL
MySQL InnoDB ReplicaSet
Administer a set of MySQL instances running asynchronous replication
MySQL NDB Cluster
A high-availability, high-redundancy version of MySQL adapted for the distributed computing environment
MySQL Performance Best Practices document discusses various techniques for optimizing MySQL performance. It covers monitoring performance with tools like MySQL Enterprise Monitor, optimizing configurations such as increasing the InnoDB buffer pool size, balancing data consistency versus performance by adjusting the innodb_flush_log_at_trx_commit setting, and summarizes that monitoring is essential to identify performance issues and test configuration changes before deploying to production.
Summary of the MySQL 8.0.22 new features, released on October 19th, 2020.
==
== Highlights
==
Read Only Schema
Error Log Table
Periodic Synchronization For SELECT INTO DUMPFILE|OUTFILE
Libmysql Support For DNS SRV
MySQL Shell Enhancements
> Table dump utility
> Table export utility
MySQL Router Enhancements
> Enable REST API at bootstrap
> Scale routing core to 50k connections
MySQL Replication Enhancements
> Automatic Asynchronous Replication Connection Failover
MySQL NDB Cluster Enhancements
> Support for IPv6 addresses
> Encrypted backup
MySQL Enterprise New Features
> MySQL Enterprise Backup
> Keyring plugin for Oracle Cloud Infrastructure Vault
Thanks to the Contributors
> Krunal Bauskar
> Eric Beuque
> Facebook
> Kamil Holubicki
> Kan Liyong
> Javier Matos Odut
> Gord Thomson
> Andrey Turbanov
> TXSQL (Tencent MySQL)
> Daniël van Eeden
> Xiaoyu Wang
> Denis Yarkovoy
==
== Follow me
==
Blog EN : http://dasini.net/blog/en/
Blog FR : http://dasini.net/blog/fr/
Twitter : https://twitter.com/freshdaz
Youtube : https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
Slideshare : https://www.slideshare.net/freshdaz
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL TeamOlivier DASINI
MySQL Database Service Overview
#1 Open Source Database
100% Developed by the MySQL Team
100% Managed by the MySQL Team
100% Supported by the MySQL Team
100% Built on MySQL Enterprise Edition
100% Up to date with the latest security fixes
100% Compatible with on-premises MySQL
100% Compatible with Oracle technologies
MySQL 8.0 is the latest Generally Available version of MySQL. This session will help you upgrade from older versions, understand what utilities are available to make the process smoother and also understand what you need to bear in mind with the new version and considerations for possible behavior changes and solutions.
MySQL 8.0.21 includes several new features and enhancements:
1) It allows disabling of the InnoDB redo log at runtime to improve performance while loading initial data.
2) The JSON_VALUE function was added to extract scalar values from JSON documents.
3) CREATE TABLE...SELECT statements are now atomic and crash-safe operations.
4) Per-user comments and attributes can now be set when creating or updating MySQL user accounts.
Summary of the MySQL 8.0.19 new features, released on January 13th, 2020.
==
== Highlights
==
* InnoDB ReplicaSet
* SQL Improvements
=> Table Value Constructors
=> LIMIT in recursive CTE
=> ALTER TABLE… DROP/ALTER CONSTRAINT
=> More information to Duplicate Key Error
* Account Management Enhancements
* Time zone offset for Timestamp & Datetime
* Information Schema views for SQL Roles
* MySQL Document Store Enhancements
* MySQL Shell Enhancements
* MySQL Router Enhancements
* MySQL InnoDB Cluster Enhancements
* MySQL Replication Enhancements
* MySQL NDB Cluster Enhancements
* MySQL Enterprise New Features
* Thanks to the Contributors
The document summarizes new features in MySQL 8.0.18, including:
1. Hash join functionality has been implemented to execute inner equi-joins more efficiently than the current block-nested loop algorithm in most cases.
2. EXPLAIN ANALYZE has been added to run a query and produce EXPLAIN output with additional information about how the optimizer's estimates matched the actual execution.
3. MySQL now only uses OpenSSL as its SSL/TLS library, removing support for wolfSSL and yaSSL from the codebase.
The document summarizes new features in MySQL 8.0.17, including the CLONE plugin for native automatic provisioning, multi-valued indexes, enhanced JSON functions using multi-valued indexes, JSON schema validation, a new binary collation for utf8mb4, improvements to MySQL Shell, MySQL Router, InnoDB Cluster, and Group Replication. It provides links to documentation and blogs for more information on each feature.
Presentation of some of the new features of MySQL 8.0.16 released on April 25, 2019
Agenda:
➢ mysql_upgrade is no longer necessary
➢ CHECK Constraints
➢ Constant-Folding Optimization
➢ SYSTEM_USER & partial_revokes
➢ Chinese collation for utf8mb4
➢ Performance Schema keyring_keys table
➢ MySQL Shell Enhancements
➢ MySQL Router Enhancements
➢ InnoDB Cluster Enhancements
➢ Group Replication Enhancements
➢ Size of the binary tarball for Linux
➢ Server quick settings validation
MySQL Day Paris 2018 - MySQL & GDPR; Privacy and Security requirementsOlivier DASINI
MySQL Enterprise Transparent Data Encryption (TDE) protects your critical data by enabling data-at-rest encryption in the database. It protects the privacy of your information, prevents data breaches and helps meet regulatory requirements including the Payment Card Industry Data Security Standard (PCI DSS), Health Insurance Portability and Accountability Act (HIPAA) and numerous others.
MySQL Enterprise Audit provides an easy to use, policy-based auditing solution that helps organizations implement stronger security controls and satisfy regulatory compliance.
As more sensitive data is collected, stored and used online, database auditing becomes an essential component of any security strategy. To guard against the misuse of information, popular compliance regulations including HIPAA, Sarbanes-Oxley, and the PCI Data Security Standard require organizations to track access to information.
MySQL Enterprise Firewall guards against cyber security threats by providing real-time protection against database specific attacks. Any application that has user-supplied input, such as login and personal information fields is at risk. Database attacks don't just come from applications. Data breaches can come from many sources including SQL virus attacks or from employee misuse. Successful attacks can quickly steal millions of customer records containing personal information, credit card, financial, healthcare or other valuable data.
MySQL Enterprise Masking and De-identification provides an easy to use, built-in database solution to help organizations protect sensitive data from unauthorized uses by hiding and replacing real values with substitutes.
MySQL Enterprise Edition provides ready to use external authentication modules to easily integrate existing security infrastructures, including Linux Pluggable Authentication Modules (PAM) and Windows Active Directory.
MySQL Day Paris 2018 - Upgrade from MySQL 5.7 to MySQL 8.0Olivier DASINI
Upgrading is a common procedure, as you pick up bug fixes within the same MySQL release series or significant features between major MySQL releases. You perform this procedure first on some test systems to make sure everything works smoothly, and then on the production systems.
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...Olivier DASINI
Here are the steps to deploy a local 3-node MySQL InnoDB Cluster sandbox:
1. Start 3 local MySQL instances on ports 3310, 3320, 3330
2. Connect to the first instance using MySQL Shell
3. Run the following commands in MySQL Shell to bootstrap and join the nodes:
```js
// Bootstrap first node
dba.bootstrapCluster({
"host": "127.0.0.1",
"port": 3310
});
// Join second node
dba.addInstance({
"host": "127.0.0.1",
"port": 3320
});
// Join third node
dba.add
MySQL Day Paris 2018 - MySQL JSON Document StoreOlivier DASINI
NoSQL + SQL = MySQL
MySQL Document Store allows developers to work with SQL relational tables and schema-less JSON collections. To make that possible MySQL has created the X Dev API which puts a strong focus on CRUD by providing a fluent API allowing you to work with JSON documents in a natural way. The X Protocol is a highly extensible and is optimized for CRUD as well as SQL API operations.
MySQL Document store gives users maximum flexibility developing traditional SQL relational applications and NoSQL schema-free document database applications. This eliminates the need for a separate NoSQL document database. Developers can mix and match relational data and JSON documents in the same database as well as the same application. For example, both data models can be queried in the same application and results can be in table, tabular or JSON formats.
The MySQL Document Store architecture consists of the following components:
Native JSON Document Storage - MySQL provides a native JSON datatype is efficiently stored in binary with the ability to create virtual columns that can be indexed. JSON Documents are automatically validated.
X Plugin - The X Plugin enables MySQL to use the X Protocol and uses Connectors and the Shell to act as clients to the server.
X Protocol - The X Protocol is a new client protocol based on top of the Protobuf library, and works for both, CRUD and SQL operations.
X DevAPI - The X DevAPI is a new, modern, async developer API for CRUD and SQL operations on top of X Protocol. It introduces Collections as new Schema objects. Documents are stored in Collections and have their dedicated CRUD operation set.
MySQL Shell - The MySQL Shell is an interactive Javascript, Python, or SQL interface supporting development and administration for the MySQL Server. You can use the MySQL Shell to perform data queries and updates as well as various administration operations.
MySQL Connectors - The following MySQL Connectors support the X Protocol and enable you to use X DevAPI in your chosen language.
MySQL Connector/Node.js
MySQL Connector/PHP
MySQL Connector/Python
MySQL Connector/J
MySQL Connector/NET
MySQL Connector/C++
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?Olivier DASINI
MySQL 8.0 introduces several new features for developers including a document store for working with JSON documents, over 20 new JSON functions, UTF-8 as the default character set, common table expressions (CTEs) for hierarchical data traversal, window functions for analytics, and new options like SKIP LOCKED and NOWAIT for better handling of locked rows. The MySQL Shell provides a way to prototype applications using the new X DevAPI and import JSON data. Many new features in MySQL 8.0 were added to boost developer and data analyst productivity.
MySQL is the world's most popular open source database. Whether you are a fast growing web property, technology ISV or large enterprise, MySQL can cost-effectively help you deliver high performance, scalable database applications.
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...Olivier DASINI
SQL + NoSQL = MySQL
MySQL Document Store allows developers to work with SQL relational tables and schema-less JSON collections. To make that possible MySQL has created the X Dev API which puts a strong focus on CRUD by providing a fluent API allowing you to work with JSON documents in a natural way. The X Protocol is a highly extensible and is optimized for CRUD as well as SQL API operations.
MySQL powers the most demanding Web, E-commerce, SaaS and Online Transaction Processing (OLTP) applications.
It is a fully integrated transaction-safe, ACID compliant database with full commit, rollback, crash recovery and row level locking capabilities.
MySQL delivers the ease of use, scalability, and performance to power Facebook, Google, Twitter, Uber, Booking.com and many more...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Optimisation de MySQL
1. http://dasini.net/blog/ Olivier DASINI
Forum PHP Novembre 2007
Optimisation
de
MySQL
http://dasini.net/blog/
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 1
Forum PHP Novembre 2007
2. http://dasini.net/blog/
Votre conférencier
Olivier DASINI
Formateur certifié MySQL
Consultant technologies Open Sources
olivier@dasini.net
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 2
Forum PHP Novembre 2007
3. http://dasini.net/blog/
Au programme...
● Introduction
● Pourquoi optimiser ?
● Comment
● Architectures de la base de données
● Créer des requêtes rapides
● Optimisation du serveur MySQL
● Questions / Réponses
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 3
Forum PHP Novembre 2007
4. http://dasini.net/blog/
Introduction
● Quel SGBD utilisez-vous ?
● Quel système d'exploitation ?
● Versions de MySQL utilisées ?
● Quels sont vos besoins ?
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 4
Forum PHP Novembre 2007
5. http://dasini.net/blog/
Introduction
● MySQL est le SGBDR open source le plus
populaire
● MySQL à une double licence (GPL et
commerciale
● Une multitude d'outils (Administrator, Query
Browser, Migration Toolkit, mysqlslap, ...)
● S.E. supportés: beaucoup (Linux, Solaris,
Windows, FreeBSD, Mac OS X, ....)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 5
Forum PHP Novembre 2007
6. http://dasini.net/blog/
Pourquoi optimiser ?
● Tirer le maximum du matériel disponible
● Répondre à un accroissement des données
et/ou de la charge
● Plus facile et moins couteux que de recoder
l'application
● Satisfaire l'utilisateur final (et le boss :) )
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 6
Forum PHP Novembre 2007
7. http://dasini.net/blog/
Comment
● Écrire des requêtes performantes
– Avec des index pertinents
– La différence de performances peut être importante
● Choisir le moteur de stockage adéquat
– Toutes les données ne se valent pas
– A chaque besoins, son moteur
● Choisir les bons types de données
– MySQL possède un choix important de types de
données
– Chaque type à un coût de stockage !
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 7
Forum PHP Novembre 2007
8. http://dasini.net/blog/
Comment
● Paramétrer de façon optimale son serveur
MySQL
– Changer un paramètre a la fois
– Les changements ne sont pas forcement
immédiats
– Les gains sont rarement spectaculaires
● Tester et superviser son serveur MySQL
– Tester avec un jeu de données réaliste
– Superviser pour détecter et anticiper les
problèmes
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 8
Forum PHP Novembre 2007
9. http://dasini.net/blog/
Architectures de la base de données
● Normaliser (3ème forme normale)
– Éliminer les données redondantes
– Avoir des tables plus petites
– Optimiser les jointures
– Permettre à l'optimiseur d'être plus
performant
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 9
Forum PHP Novembre 2007
10. http://dasini.net/blog/
Architectures de la base de données
● Dénormaliser
– Supprimer les jointures (ENUM, SET,...)
● CREATE TABLE country (
Code char(3) NOT NULL DEFAULT '',
Continent enum('Asia','Europe','North
America','Africa','Oceania','Antarctica'
'South America') NOT NULL DEFAULT 'Asia',
...
– Stocker des données calculée
– Ajouter des colonnes (auto_increment,...)
– Table de résumé (snapshot)
● Problème: gérer les mises à jours
– Schéma en étoile...
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 10
Forum PHP Novembre 2007
11. http://dasini.net/blog/
Architectures de la base de données
● Choix du bon type de colonne
– MySQL à un large choix de types de données
– Adapter le type à la taille des données
● code_postal CHAR(5) et non VARCHAR(255)
● UNSIGNED
– La clause NOT NULL
● Risque de problèmes d'intégrité
● Surcoût inutile pour MySQL
● procedure analyse()
– SELECT col1, col2 FROM ma_table PROCEDURE
ANALYSE();
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 11
Forum PHP Novembre 2007
12. http://dasini.net/blog/
Architectures de la base de données
● Architecture à moteurs de stockage modulaire
MySQL
Database Management Level
Retrieve
Parse Optimize
1
Store
Pluggable Storage Engines
MyISAM InnoDB MySQL Memory Other ...
Cluster
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 12
Forum PHP Novembre 2007
13. http://dasini.net/blog/
Architectures de la base de données
● Propriétés qui dépendent du moteur de stockage
– Support de stockage
– Support des transactions
– Type de verrou
– Sauvegarde & restauration
– Optimisation
– Fonctionnalités
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 13
Forum PHP Novembre 2007
14. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage
– MyISAM
– InnoDB
– Memory
– Archive
– NDBCluster
– Autres...
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 14
Forum PHP Novembre 2007
15. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: MyISAM
– Moteur de stockage par défaut
– Très rapide (insert, select count(*))
– Verrou niveau table
– Prend peu de place (40% de moins qu'InnoDB)
– Index fulltext
– Possibilité de SELECT & INSERT non bloquant
concurrent_insert=2
– Très portable
– Statique, Dynamique, compressée
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 15
Forum PHP Novembre 2007
16. http://dasini.net/blog/
Architectures de la base de données
● Table MyISAM dynamique
– Contient au moins un champs de type dynamique (CHAR,
VARCHAR, TEXT)
– Prend moins de place sur le disque
– Fragmentation => OPTIMIZE TABLE
● Table MyISAM statique
– Plus rapide, plus robuste
– Pas de fragmentations, mais prend plus de place sur le
disque
● Table MyISAM compressée
– Lecture seule
– Gain de place de l'ordre de 70%
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 16
Forum PHP Novembre 2007
17. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: MyISAM
– Moteur non transactionnel
– Pas de « Crash recovery »
– Pas de sauvegarde cohérente non bloquante
– Pas de support des clés étrangères (6.x ?)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 17
Forum PHP Novembre 2007
18. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: InnoDB
– Moteur transactionnel ACID
– Verrou niveau enregistrement
– Support des clés étrangères
– Crash recovery
– Multi-versionning (MVCC)
– Sauvegarde cohérente non bloquante à
chaud (physique & logique)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 18
Forum PHP Novembre 2007
19. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: InnoDB
– Pas de support de full-text
– Sauvegarde physique cohérente non
bloquante à chaud payante (InnoDB Hot
Backup)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 19
Forum PHP Novembre 2007
20. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: Memory
– Données et index stockés en mémoire
– Très rapide (un accès mémoire 1 million de fois
plus rapide qu'un accès disque)
– 2 algorithmes d'index hash & b-tree (MySQL
4.1+)
– Utiliser init-file pour peupler les tables
Memory au démarrage de MySQL
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 20
Forum PHP Novembre 2007
21. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: Memory
– Données perdues lors de l'arrêt du serveur
– Pas de full-text
– Pas de blob ou de text
– Pas transactionnel
– Pas de clés étrangères
– Verrou niveau table
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 21
Forum PHP Novembre 2007
22. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: Archive
– Stockage de grands volumes de données en
les compressant (70% de réduction)
– Seulement SELECT, INSERT
– Pas d'index
– Verrou niveau ligne
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 22
Forum PHP Novembre 2007
23. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: NDBCluster
– Moteur transactionnel
– Haute disponibilité
– Scalabilité
– Verrou niveau ligne
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 23
Forum PHP Novembre 2007
24. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: CSV
– Stock les données au format csv
(nom_table.csv)
– N'accepte pas d'index
– Non transactionnel
– Le fichier peut être lu avec
● OpenOffice.org Calc
● Microsoft Excel
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 24
Forum PHP Novembre 2007
25. http://dasini.net/blog/
Architectures de la base de données
● Bien choisir son moteur de stockage: Autres...
– Falcon
● Transactionnel
● Verrou ligne
– SolidDB
● Transactionnel
● Verrou ligne
– PBXT
● Transactionnel
● Verrou ligne
– ... le votre (?)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 25
Forum PHP Novembre 2007
26. http://dasini.net/blog/
Architectures de la base de données
● Utiliser plusieurs moteurs de stockage
– Données statiques en MyISAM
– Données dynamiques critiques en InnoDB
– Tables temporaires, tables résumés en Memory
– Données d'archives (log) en... Archive
– ...
– ALTER TABLE <nom_table> ENGINE=<moteur>
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 26
Forum PHP Novembre 2007
27. http://dasini.net/blog/
Architectures de la base de données
● Utiliser plusieurs moteurs de stockage: inconvénients
– Configuration plus compliquée
– Partage de la RAM : moins d'espace pour
chaque moteur
– Jointure entre moteurs transactionnels et non
transactionnels
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 27
Forum PHP Novembre 2007
28. http://dasini.net/blog/
Les index
● But:
– Accélérer les accès en lecture à la base de
données
– Renforcer la cohérence de la base avec des
contraintes
● Critères:
– Pertinence de l'index (cardinalité, utilisé ?)
– Unique, non unique ?
– Alorithme (BTREE / HASH)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 28
Forum PHP Novembre 2007
29. http://dasini.net/blog/
Les index: attention !
● Compromis entre vitesse et maintenance
● Risque de ralentissement des requêtes d'ecriture
● Prendre en compte la selectivité : moins les données
sont redondantes, plus l'index est efficace
● Ne pas indexer plusieurs fois les mêmes colonnes
● N'indexer que les colonnes nécessaires
● Vérifier la pertinence des index (EXPLAIN)
● Mettre à jours les stats (ANALYZE TABLE)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 29
Forum PHP Novembre 2007
30. http://dasini.net/blog/
Les index: Cardinalité
● Plus la cardinalité est élevée, plus un index est selectif, il est donc
d'autant plus efficace
● SHOW INDEX FROM ma_table
CREATE PROCEDURE `sp_pert_idx`(IN _table CHAR(255), IN _col CHAR(255))
COMMENT 'Calcul la pertinence d''un index'
BEGIN
DECLARE req char(255);
SET @req = CONCAT('SELECT count(*) AS "Total Rows", count(DISTINCT ', _col,')
AS "Valeurs distinctes", count(*) - count(DISTINCT ', _col, ') AS "Valeurs
dupliquées" FROM ', _table);
PREPARE st_pert_idx FROM @req; EXECUTE st_pert_idx;
DEALLOCATE PREPARE st_pert_idx;
END $$
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 30
Forum PHP Novembre 2007
31. http://dasini.net/blog/
Algorithmes d'index de MySQL
● B-TREE (Arbre binaire équilibré)
– Recherche dichotomique
– Inférieur à log2(N)
– Log2(1048576) = 20
– Plusieurs variantes (B+tree, RB-tree, T-tree,...)
● HASH (table memory)
– Très rapide pour recherche avec égalité (=)
– Ne fonctionne pas avec inégalité (<, >, between,..)
– Pas performant avec beaucoup de duplicats
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 31
Forum PHP Novembre 2007
32. http://dasini.net/blog/
Les types d'index de MySQL
● Primary key
– unique
– not null
● Unique
– unique
– accepte les NULL
● Index
– Index simple (pas de contraintes)
● GIS
– Gestion, génération, stockage et analyse des données
spatiales
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 32
Forum PHP Novembre 2007
33. http://dasini.net/blog/
Les types d'index de MySQL
● Fulltext
– Uniquement pour les tables MyISAM
– Pour les champs de type char, varchar et text
– Optimise la recherche de mots dans du texte
– MATCH (index_fulltext) AGAINST (mot_recherché)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 33
Forum PHP Novembre 2007
34. http://dasini.net/blog/
Les index: astuces
● Index composites
– INDEX (col1, col2)
permet d'utiliser l'index pour les colonnes
suivantes
● ... WHERE col1=valx AND col2=valy
● ... WHERE col1=valx
● SELECT col2 ... WHERE col1=valx
● SELECT col1 ... WHERE col2=valx (full scan index)
● SELECT col2 ... WHERE col2=valx (full scan index)
– Mais pas pour
● SELECT * ... WHERE col2=valx
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 34
Forum PHP Novembre 2007
35. http://dasini.net/blog/
Les index: astuces
● Préfixes d'index
– Minimiser la taille de l'index
– Indexer les n premiers caractères d'un champs de
type texte
– Ces n caractères doivent être suffisament
discriminants
– CREATE INDEX pref_index ON ma_table(col_text(30));
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 35
Forum PHP Novembre 2007
36. http://dasini.net/blog/
Les index: astuces
● Préfixes d'index
CREATE PROCEDURE `sp_pref_idx`(IN _table CHAR(255), IN _col
char(255), IN _nbr tinyint unsigned)
COMMENT 'Determine la pertinence du prefix d''un index'
BEGIN
DECLARE req CHAR(255);
SET @req = CONCAT('SELECT count(DISTINCT LEFT(', _col, ', ',
_nbr,')) AS "Valeurs prefix distinctes", count(*) - count(DISTINCT
LEFT(', _col, ', ', _nbr,')) AS "Valeurs prefix dupliquées" FROM ',
_table);
PREPARE st_pref_idx FROM @req;
EXECUTE st_pref_idx;
DEALLOCATE PREPARE st_pref_idx;
END $$
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 36
Forum PHP Novembre 2007
37. http://dasini.net/blog/
Optimiser ses requêtes
● Comprendre l'optimiseur
– Élimine le plus d'enregistrements possible
– Utilise l'index quand cela est possible
– Évite (autant que possible), les full table scans
– Cherche l'ordre de jointure des tables optimal
– Cherche à éviter les accès disque
– Préfère les accès index aux accès données
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 37
Forum PHP Novembre 2007
38. http://dasini.net/blog/
Optimiser ses requêtes
● Identifier les requêtes candidates à l'optimisation
– Slow log (log-slow-queries, log-queries-not-using-indexes,
long_query_time)
– Log general
– SHOW PROCESSLIST
● Écrire des requêtes simples (si possible)
– Une requête simple verrouillera moins longtemps les ressources
● Simplifier les expressions
– SELECT name,population FROM city WHERE population*1.5 >
10000000; => pas index
– SELECT name,population FROM city WHERE population >
10000000/1.5 ; => index
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 38
Forum PHP Novembre 2007
39. http://dasini.net/blog/
Optimiser ses requêtes
● Utiliser des tables temporaires (temporary tables)
– CREATE TEMPORARY TABLE tmp_ma_table
● Utiliser l' extension MySQL REPLACE
– Correspond selon le contexte, à une clause INSERT ou à la suite
de clauses DELETE + INSERT
– L’enregistrement est supprimé si et seulement si, la clause
INSERT entraîne une violation d’unicité sur la clé primaire
– Pas identique à la clause UPDATE les champs omis prendront
comme valeur, la valeur par défaut
● Insertion multi-enregistrements
– INSERT INTO ma_table VALUES (...),(...),(...);
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 39
Forum PHP Novembre 2007
40. http://dasini.net/blog/
Optimiser ses requêtes
● Regrouper les requêtes dans des transactions
– START TRANSACTION;
...
COMMIT;
● Minimiser la tailles des index (surtout la PK pour InnoDB)
● LOAD DATA INFILE (mysqlimport)
● Bannir le SELECT * FROM ...
● Utiliser des index (pertinents)
● Utiliser la commande EXPLAIN
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 40
Forum PHP Novembre 2007
41. http://dasini.net/blog/
Optimiser ses requêtes: EXPLAIN
● EXPLAIN explique comment MySQL va traiter la
commande SELECT
● Donne les informations suivantes:
– L'ordre de traitement des tables
– Le(s) index vu par l'optimiseur
– Le(s) index utilisé(s)
– Nombre de lignes à analyser
● EXPLAIN SELECT ...
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 41
Forum PHP Novembre 2007
42. http://dasini.net/blog/
Optimiser ses requêtes: EXPLAIN
● type 1/3:
– All
● Lecture entière du fichier de données
● Le cas à éviter
– Index
● Lecture entière du fichier d'index
● A priori mieux que all
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 42
Forum PHP Novembre 2007
43. http://dasini.net/blog/
Optimiser ses requêtes: EXPLAIN
● type 2/3:
– range
● Recherche par intervalle
● <, <=, >, >=, ...
– Index_subquery, unique_subquery
● Sous requête utilisant un index
– index_merge (MySQL 5.0 +)
● Combine différents index
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 43
Forum PHP Novembre 2007
44. http://dasini.net/blog/
Optimiser ses requêtes: EXPLAIN
● type 3/3:
– ref_or_null / ref / eq_ref
● Index non unique « nullable »
● Index non unique
● Index unique
– Const / system
● Référence à un enregistrement
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 44
Forum PHP Novembre 2007
45. http://dasini.net/blog/
Optimiser ses requêtes: EXPLAIN
● possible_keys:
– Index vu par MySQL
● Key
– Index choisis par MySQL
● Ref
– Colonne utilisée pour sélectionner les lignes de
la table
● Rows
– Nombre de ligne à analyser (estimation)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 45
Forum PHP Novembre 2007
46. http://dasini.net/blog/
Optimiser ses requêtes: EXPLAIN
● Extra (Informations complémentaire sur la
stratégie employée par l'optimiseur)
– Using filesort
– Using temporary
– ...
– Using index
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 46
Forum PHP Novembre 2007
47. http://dasini.net/blog/
Optimiser ses requêtes
● L'optimiseur est performant, mais il peut se
tromper
● Possibilité de le contraindre
– USE INDEX
– FORCE INDEX
– IGNORE INDEX
● STRAIGHT_JOIN
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 47
Forum PHP Novembre 2007
48. http://dasini.net/blog/
Les requêtes préparées
● Préparer une requête en vue de l'exécuter plusieurs
fois avec des paramètres différents
● SELECT, INSERT, REPLACE, UPDATE, DELETE, CREATE
TABLE, SET, ANALYSE TABLE, OPTIMIZE TABLE, REPAIR
TABLE, SHOW...
● L'analyse de la requête n'est faite qu'une seule fois,
lors de la préparation de la requête
● La requête préparée n'est visible que pour la session
en cours, et sa durée de vie max est celle de la
session
● Compatible avec le cache de requête depuis MySQL
5.1.17
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 48
Forum PHP Novembre 2007
49. http://dasini.net/blog/
Les requêtes préparées
● PREPARE ma_rp FROM 'SELECT name
FROM city WHERE countrycode = ? AND population > ?';
● SET @cc='fra', @pop=400000;
● EXECUTE ma_rp USING @cc, @pop;
● SET @cc='USA', @pop=800000;
● EXECUTE ma_rp USING @cc, @pop;
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 49
Forum PHP Novembre 2007
50. http://dasini.net/blog/
Le cache de requêtes
Client1 Client2 ClientN
MySQL Server
Connection Thread Pool
Query Cache
InnoDB
Storage Engines MyISAM
Parser Query 101101 MERGE
MEMORY
Federated
Optimizer ARCHIVE
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 50
Forum PHP Novembre 2007
51. http://dasini.net/blog/
Le cache de requêtes
● Mise en cache des requêtes SELECT et de leur résultat
● Les requêtes doivent être strictement identiques (casse,
espace,...)
● Le cache est toujours à jour, car lorsqu'une table est
modifiée, les requêtes qui lui font références sont
invalidées
● Certaines fonctions empêchent la mise en cache(NOW(),
RAND()...)
● Désactivé par défaut, car query_cache_size=0
– SHOW VARIABLES LIKE 'query_cache%';
● query_cache_size |0
● query_cache_type | ON
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 51
Forum PHP Novembre 2007
52. http://dasini.net/blog/
Le cache de requêtes
● query_cache_type
– ON
● Met en cache les requêtes select
● Sauf si SELECT SQL_NO_CACHE
– DEMAND
● SELECT SQL_CACHE
– OFF
● query_cache_size
– Taille du cache de requêtes (en octets)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 52
Forum PHP Novembre 2007
53. http://dasini.net/blog/
Le cache de requêtes
● SHOW STATUS LIKE 'qcache%';
● Qcache_hits
– Nombre de fois que le cache de requête a servi
● Qcache_inserts
– Nombre de requêtes insérées dans le cache
● Qcache_lowmem_prunes
– Nombre de requêtes effacées du cache pour laisser place a de
nouvelles requêtes (cache trop petit)
● Qcache_not_cached
– Nombre de requêtes non ''cachable''
● Qcache_queries_in_cache
– Nombre de requêtes dans le cache
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 53
Forum PHP Novembre 2007
54. http://dasini.net/blog/
Le cache de requêtes
● FLUSH QUERY CACHE
– Défragmente le cache de requête
● RESET QUERY CACHE
– Réinitialise le cache de requêtes
● FLUSH TABLES
– Réinitialise le cache de requêtes
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 54
Forum PHP Novembre 2007
55. http://dasini.net/blog/
Optimisation du serveur MySQL
● Rassembler l'information pour savoir quoi
optimiser
– Log général, slow log, log binaire
– SHOW PROCESSLIST
– SHOW VARIABLES
– SHOW STATUS
– STATUS
– MySQL Administrator
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 55
Forum PHP Novembre 2007
56. http://dasini.net/blog/
Optimisation du serveur MySQL:
MyISAM
● Key_buffer_size
– Tampon qui stock les index des tables MyISAM
– 25 à 30% de la RAM, pour un serveur dédié
MySQL, en full MyISAM
– Pas trop grand car risque de swap !
– Ratio:
● key_reads / key_read_requests < 0.03 (0.01 encore
mieux)
sinon l'augmenter
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 56
Forum PHP Novembre 2007
57. http://dasini.net/blog/
Optimisation du serveur MySQL:
MyISAM
• myisam_sort_buffer_size
– Tampon pour la création d'index pour les
requêtes de maintenance: ALTER TABLE,
REPAIR TABLE, LOAD DATA INFILE
SET SESSION myisam_sort_buffer_size =
–
800*1024*1024;
ALTER TABLE ma_table ADD INDEX ...;
• bulk_insert_buffer_size
– Tampon pour les insertions massives
• INSERT ...SELECT
• INSERT VALUES(),(),(),....
• LOAD DATA INFILE
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 57
Forum PHP Novembre 2007
58. http://dasini.net/blog/
Optimisation du serveur MySQL:
InnoDB
• innodb_buffer_pool_size
– Tampon pour stocker les index et des données
des tables InnoDB
Jusqu'à 80% de la RAM, pour un serveur dédié
–
MySQL, en full InnoDB
• innodb_flush_logs_at_trx_commit (1 par défaut)
– 0: Risque de pertes de transactions validées en
cas de crash d 'InnoDB
– 1: transactions flushées après chaque commit.
Pas de pertes de transactions validées (ACID)
– 2: Risque de pertes de transactions validées
uniquement en cas de crash de l'O.S.
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 58
Forum PHP Novembre 2007
59. http://dasini.net/blog/
Optimisation du serveur MySQL:
InnoDB
• innodb_log_buffer_size
– Taille du tampon des logs d'InnoDB
– Vidé environ toutes les secondes (checkpoint)
– En général entre 8Mo & 16Mo
• innodb_log_file_size
– Taille des fichiers de log d'InnoDB (2 par défaut)
– Une grande valeur améliore les performances
Mais augmente le temps de restauration
– Valeurs courantes: 64Mo à 512Mo
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 59
Forum PHP Novembre 2007
60. http://dasini.net/blog/
Optimisation du serveur MySQL:
Variables globales
• table_cache
– Cache des descripteurs de fichier
– Chaque table ouverte nécessite un descripteur de
fichiers (par connection), plus un pour le .MYI (MyISAM)
– Augmenter votre table_cache si opened_tables croit
rapidement
• thread_cache
– Cache des threads
– Chaque session prend un thread à la connexion et le
rend à la déconnexion
– Augmenter si threads_created croit rapidement
– Taux de succès du cache de thread:
threads_created/connections
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 60
Forum PHP Novembre 2007
61. http://dasini.net/blog/
Optimisation du serveur MySQL:
Variables spécifiques à la session
● read_buffer_size
– Tampon d'enregistrements pour les full table scans
● sort_buffer_size
– Tampon pour GROUP BY / ORDER BY
● tmp_table_size
– Tampon pour les tables temporaires stockées en
mémoire (memory). Au delà, elles sont copiées sur
disque (MyISAM)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 61
Forum PHP Novembre 2007
62. http://dasini.net/blog/
Optimisation du serveur MySQL:
Autres variables à surveiller...
● Indicateur de hautes charges
– max_used_connections
– threads_created
– opened_tables
● Indicateur de réponses lentes
– slow_queries
– Slow_launch_threads (Nombre de threads qui ont
pris plus de slow_launch_time secondes pour être
créés)
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 62
Forum PHP Novembre 2007
63. http://dasini.net/blog/
Optimisation du serveur MySQL:
Autres variables à surveiller...
● Indicateurs de comportements
– Table_locks_immediate
– Table_locks_waited
● Les handler
– Handler_read_first=>lecture d'index
– Handler_read_key=>lecture d'index
– Handler_read_next=>lecture d'index
– Handler_read_prev=>lecture d'index
– Handler_read_rnd=>lecture des données
– Handler_read_rnd_next=>lecture des données
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 63
Forum PHP Novembre 2007
64. http://dasini.net/blog/
Optimisation du serveur MySQL:
Autres variables à surveiller...
● Indicateurs de requêtes:
– Tables temporaires
● Created_tmp_disk_tables => augmenter tmp_table_size
● Created_tmp_tables => order by, group by
– Requêtes pas optimisées
● Select_full_join, Select_full_range_join: problèmes d'index
dans la jointure
● Select_scan: full scan sur la premiere table de la jointure
– Requêtes coûteuse
● sort_merge_passes => augmenter le sort_buffer_size
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 64
Forum PHP Novembre 2007
65. http://dasini.net/blog/
Optimisation de MySQL...
● Les procédures stockées
● Le partitionnement (MySQL 5.1)
● La réplication
● Le cluster
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 65
Forum PHP Novembre 2007
66. http://dasini.net/blog/
Aller (encore) plus loin
● Comme JC Vandamme, soyez « aware »
● http://www.mysql.com
● http://www.mysqlperformanceblog.com
● http://jpipes.com/index.php
● http://dasini.net/blog/
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 66
Forum PHP Novembre 2007
67. http://dasini.net/blog/
Questions ?
Optimisation de MySQL
Olivier DASINI - http://dasini.net/blog 67
Forum PHP Novembre 2007