SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
MySQL Cluster : Delivering Breakthrough Performance
26th July 2012

 Andrew Morgan                       Mat Keep
 Senior Product Manager – MySQL HA   Senior Product Manager – MySQL HA
 andrew.morgan@oracle.com            mat.keep@oracle.com
 clusterdb.com
The presentation is intended to outline our general
            product direction. It is intended for information
            purposes only, and may not be incorporated into any
            contract. It is not a commitment to deliver any
            material, code, or functionality, and should not be
            relied upon in making purchasing decisions.
            The development, release, and timing of any
            features or functionality described for Oracle’s
            products remains at the sole discretion of Oracle.




Copyright 2012 Oracle Corporation - 26th July 2012                2
Session Agenda
    •  Introduction to MySQL Cluster
    •  Where does MySQL Cluster fit?
    •  Benchmarks
    •  WHILE (cluster.measurePerformance() < target) {
           cluster.optimize();
       }

    •  Boosting performance
    •  Scaling out
    •  Further resources

Copyright 2012 Oracle Corporation - 26th July 2012       3
MySQL Cluster – Users & Applications
                Extreme Scalability, Availability and Affordability

 •  Web
          •     High volume OLTP
          •     eCommerce
          •     On-Line Gaming
          •     Digital Marketing
          •     User Profile Management
          •     Session Management & Caching
          •     Content Management

 •  Telecoms
          •     Service Delivery Platforms
          •     VAS: VoIP, IPTV & VoD
          •     Mobile Content Delivery
          •     Mobile Payments
          •     LTE Access                                      http://www.mysql.com/customers/cluster/



Copyright 2012 Oracle Corporation - 26th July 2012                                                  4
MySQL Cluster Architecture



                                                     JPA            REST
                                                           Application Nodes



                                          Node Group 1                         Node Group 2

                                                     F1                                  F2
                                           Node 1




                                                                               Node 3
             Cluster                                                                          Cluster
             Mgmt                                    F3                                  F4   Mgmt


                                                     F3                                  F4




                                                                               Node 4
                                           Node 2




                                                     F1                                  F2
                                                               Data Nodes




Copyright 2012 Oracle Corporation - 26th July 2012                                                5
When to Consider MySQL Cluster
  l    What are the consequences of downtime or failing to meet
        performance requirements?
  l    How much effort and $ is spent in developing and managing HA in
        your applications?
  l    Are you considering sharding your database to scale write
        performance? How does that impact your application and
        developers?
  l    Do your services need to be real-time?
  l    Will your services have unpredictable scalability demands,
        especially for writes ?
  l    Do you want the flexibility to manage your data
        with more than just SQL ?




Copyright 2012 Oracle Corporation - 26th July 2012                        6
Where would I not Use MySQL Cluster?
    •  “Hot” data sets >3TB
          •  Replicate cold data to InnoDB
    •  Long running transactions
    •  Large rows, without using BLOBs
    •  Foreign Keys
          •  Check out MySQL Cluster 7.3 Early Access: http://labs.mysql.com/
    •  Many full table scans
    •  Geo-Spatial indexes
    •  In these scenarios; InnoDB storage engine would be the
       right choice

                                    MySQL Cluster Evaluation Guide
        http://mysql.com/why-mysql/white-papers/mysql_cluster_eval_guide.php


Copyright 2012 Oracle Corporation - 26th July 2012                              7
General Design Considerations

           •  MySQL Cluster is designed for
                 –  Short transactions
                 –  Many parallel transactions
           •  Utilize Simple access patterns to fetch data
                 –  Use efficient scans and batching interfaces
           •  Analyze what your most typical use cases are
                 –  optimize for those


                                    Overall design goal
                             Minimize network roundtrips for your
                                  most important requests!

Copyright 2012 Oracle Corporation - 26th July 2012                  8
Servicing the Most Performance-Intensive Workloads




Copyright 2012 Oracle Corporation - 26th July 2012                    9
writes




                 Servicing the Most Performance-Intensive Workloads




Copyright 2012 Oracle Corporation - 26th July 2012                    10
Comparing MySQL Cluster Performance
                 8x Higher Performance per Node
                                                                    20

                                                                    18



                                      Reads per Second (Millions)
                                                                    16

                                                                    14

                                                                    12

                                                                    10

                                                                     8

                                                                     6

                                                                     4

                                                                     2

                                                                     0
                                                                         MySQL Cluster 7.1   MySQL Cluster 7.2

                •  1 Billion+ Reads per Minute, 8 node Intel Xeon cluster
                •  Multi-Threaded Data Node Extensions
                •  NoSQL C++ API, flexaSynch benchmark


Copyright 2012 Oracle Corporation - 26th July 2012                                                               11
1.2 Billion UPDATEs per Minute
                                                   25

                  Millions of UPDATEs per Second

                                                   20




                                                   15




                                                   10




                                                    5




                                                    0
                                                        2    4   6   8   10   12   14   16   18   20   22   24   26   28   30
                                                                          MySQL Cluster Data Nodes


              •  30 x Intel E5-2600 Intel Servers
              •  NoSQL C++ API, flexaSynch benchmark
              •  ACID Transactions, with Synchronous Replication


Copyright 2012 Oracle Corporation - 26th July 2012                                                                              12
WHILE (cluster.measurePerformance() < target)

           •  Don’t optimize for the sake of it
                 •  Wastes effort
                 •  Introduces unnecessary compromises/complications
           •  Forget about database benchmarks
                 •  You care about the end-to-end performance of your
                    application on your database
                 •  If possible drive your application to drive the database
           •  Measurements need to be based on
              representative traffic
           •  Measurements need to be repeatable
                 •  Easily see impact of each optimization

Copyright 2012 Oracle Corporation - 26th July 2012                        13
Where has the time gone?
           •  Enable the slow query log
                    –    set global slow_query_log=1;
                    –    set global long_query_time=3; //3 seconds
                    –    set global log_queries_not_using_indexes=1;
                    –    Slow queries will be written in the slow query log:
                         mysql> show global variables like 'slow_query_log_file';
                         +---------------------+------------------------------+
                         | Variable_name       | Value                        |
                         +---------------------+------------------------------+
                         | slow_query_log_file | /data1/mysql/mysqld-slow.log |
                         +---------------------+------------------------------+

           •  Queries will be written in plain text




Copyright 2012 Oracle Corporation - 26th July 2012                                  14
Query Analyzer in MySQL Enterprise
               Monitor (take the easy option!)




Copyright 2012 Oracle Corporation - 26th July 2012   15
Simple database traffic generation
           create.sql:
           CREATE TABLE sub_name (sub_id INT NOT NULL PRIMARY KEY, name
             VARCHAR(30)) engine=ndb;
           CREATE TABLE sub_age (sub_id INT NOT NULL PRIMARY KEY, age INT)
             engine=ndb;
           INSERT INTO sub_name VALUES (1,'Bill'),(2,'Fred'),(3,'Bill'),
             (4,'Jane'),(5,'Andrew'),(6,'Anne'),(7,'Juliette'),(8,'Awen'),
             (9,'Leo'),(10,'Bill');
           INSERT INTO sub_age VALUES (1,40),(2,23),(3,33),(4,19),(5,21),
             (6,50),(7,31),(8,65),(9,18),(10,101);


           query.sql:
           SELECT sub_age.age FROM sub_name, sub_age WHERE
             sub_name.name='Bill' AND sub_name.sub_id=sub_age.sub_id;




Copyright 2012 Oracle Corporation - 26th July 2012                       16
Simple database traffic generation
     shell> mysqlslap --concurrency=5 --
      iterations=100 --query=query.sql --
      create=create.sql
     Benchmark
          Average number of                          seconds   to run all queries: 0.132 seconds
          Minimum number of                          seconds   to run all queries: 0.037 seconds
          Maximum number of                          seconds   to run all queries: 0.268 seconds
          Number of clients                          running   queries: 5
          Average number of                          queries   per client: 1




Copyright 2012 Oracle Corporation - 26th July 2012                                          17
What on Earth is it doing?

           EXPLAIN is your friend


           mysql> EXPLAIN <query>;

           mysql> EXPLAN PARTITIONS <query>;

           mysql> EXPLAIN EXTENDED <query>;
           mysql> SHOW WARNINGS;


Copyright 2012 Oracle Corporation - 26th July 2012   18
Boosting Performance


       • ANALYZE TABLE                               •  Connection pools
       •  Access patterns                            •  Multi-threaded data
       •  AQL (fast JOINs)                              nodes
       •  Distribution aware                         •  NoSQL APIs
       •  Batching                                   •  Hardware
       •  Schema                                     •  More tips




Copyright 2012 Oracle Corporation - 26th July 2012                            19
Before you do anything else, ANALYZE!

       •  New for MySQL Cluster 7.2
       •  Lets the MySQL optimizer figure out how to best use
          indexes etc.
       •  Instantly speed up queries by many times

       mysql> ANALYZE TABLE <tab-name>;

       •  Repeat after changing schema, adding/removing
          indexes or making major data changes
       •  Only needs running on one mysqld in the cluster


Copyright 2012 Oracle Corporation - 26th July 2012              20
Access patterns

       •  Primary key reads/writes -> O(1)
             •  Independent of database size and number of nodes
       •  Index searched -> O(log n)
             •  n = number of tuples
       •  BLOBs are stored in second table -> take longer to
          access
       •  JOINs massively faster in MySQL Cluster 7.3
       •  Partition pruning
             •  By allowing a query to be satisfied with a single data node,
                reduce resource consumption -> greater throughput
             •  If result sets not large, will also reduce latency




Copyright 2012 Oracle Corporation - 26th July 2012                             21
Adaptive Query Localization
           Scaling Distributed Joins                                                    70x
                                                                                         More
                                                                                     Performance


                                                            •  Perform Complex Queries
      mysqld                                                   across Shards
                                                              •  JOINs pushed down to data nodes
                        A                      Data Nodes
                                                              •  Executed in parallel
                        Q                                     •  Returns single result set to MySQL
                        L
                                                            •  Opens Up New Use-Cases
                                                              •  Real-time analytics
                                                              •  Recommendations engines
      mysqld
                                                              •  Analyze click-streams

                                               Data Nodes        DON’T COMPROMISE
                                                            FUNCTIONALITY TO SCALE-OUT !!


Copyright 2012 Oracle Corporation - 26th July 2012                                               22
MySQL Cluster 7.2 AQL Test Query
           Web-Based Content Management System




                                                        MySQL
                                                        Server




                                                      Data    Data
                                                     Node1   Node2




Copyright 2012 Oracle Corporation - 26th July 2012               23
Web-Based CMS
                                  Query Execution Time Seconds
                                                                                         70x
                                                                                          More
   100
                                                                                      Performance
    90

    80

    70
                                                     87.23 seconds
    60

    50

    40

    30

    20

    10                                                                           1.26 seconds
     0
                            MySQL Cluster 7.1                MySQL Cluster 7.2



Must Analyze tables for best results
mysql> ANALYZE TABLE <tab-name>;


Copyright 2012 Oracle Corporation - 26th July 2012                                              24
Did I mention ANALYZE TABLE?




Copyright 2012 Oracle Corporation - 26th July 2012   25
AQL – How to Use it
•  Activated when ndb_join_pushdown is on (default)
•  Rules for a Join to be pushed down:
     1.      Joined columns use identical types
     2.      No reference to BLOB or TEXT columns
     3.      No explicit lock
     4.      Child tables in the Join must be accessed using one of the ref, eq_ref, or
             const
     5.      Tables not explicitly partitioned by [LINEAR] HASH, LIST, or RANGE
     6.      Query plan doesn’t select ‘Using join buffer'
     7.      If root of Join is an eq_ref or const, child tables must be joined by eq_ref
•  Run ANALYZE TABLE <tab-name> on each table once
•  Use EXPLAIN to see what components are being pushed down:
    •  Extra: Child of 'd' in pushed join@1
    •  EXPLAIN EXTENDED <query>;SHOW WARNINGS;


Copyright 2012 Oracle Corporation - 26th July 2012                                   26
Distribution Aware Apps
SELECT SUM(population) FROM towns                      •  Partition selected using hash on
WHERE country=“UK”;
                                                          Partition Key
                       Partition Key

             Primary Key
                                                          •  Primary Key by default
   town                country            population      •  User can override in table definition
   Maidenhead          UK                 78000        •  MySQL Server (or NDB API) will
   Paris               France             2193031         attempt to send transaction to the
   Boston              UK                 58124
                                                          correct data node
   Boston              USA                617594
                                                          •  If all data for the transaction are in
SELECT SUM(population) FROM towns                            the same partition, less messaging -
WHERE town=“Boston”;                                         > faster
   Partition Key                                       •  Aim to have all rows for high-running
             Primary Key                                  queries in same partition
   town                country            population
   Maidenhead          UK                 78000
   Paris               France             2193031
   Boston              UK                 58124
   Boston              USA                617594




Copyright 2012 Oracle Corporation - 26th July 2012                                            27
Distribution Aware – Multiple Tables

      Partition Key

      Primary Key
      sub_id             age        gender               •  Extend partition awareness over
      19724              25         male                    multiple tables
      84539              43         female
                                                         •  Same rule – aim to have all data for
      19724              16         female
                                                            instance of high running
      74574              21         female
                                                            transactions in the same partition
                         Partition Key

                Primary Key                              ALTER TABLE service_ids
      service            sub_id               svc_id      PARTITION BY KEY(sub_id);
      twitter            19724                76325732
      twitter            84539                67324782
      facebook           19724                83753984   EXPLAIN PARTITIONS <query>;
      facebook           73642                87324793




Copyright 2012 Oracle Corporation - 26th July 2012                                          28
Validate if “partition pruning” is working
       mysql> SHOW GLOBAL STATUS LIKE 'ndb_pruned_scan_count';
       +-----------------------+-------+
       | Variable_name         | Value |
       +-----------------------+-------+
       | Ndb_pruned_scan_count | 12    |
       +-----------------------+-------+
       mysql> SELECT * FROM services WHERE sub_id=1;
       +--------+--------------+--------------+
       | sub_id | service_name | service_parm |
       +--------+--------------+--------------+
       |      1 | IM           |          878 |
       |      1 | ssh          |          666 |
       |      1 | Video        |          654 |
       +--------+--------------+--------------+

       mysql> SHOW GLOBAL STATUS LIKE 'ndb_pruned_scan_count';
       +-----------------------+-------+
       | Variable_name         | Value |
       +-----------------------+-------+
       | Ndb_pruned_scan_count | 13    |
       +-----------------------+-------+


Copyright 2012 Oracle Corporation - 26th July 2012               29
Batching
•  MySQL Cluster allows batching on
      •  Inserts, index scans (when not part of a JOIN), PK reads, PK deletes,
         and PK (most) updates.
      •  Batching means that one network round trip is used to read/modify a
         number of records → less ping-pong!
      •  If you can batch - do it!
•  Example – Insert 1M records
      •  No batching:
          •  INSERT INTO t1(data) VALUES (<data>);
          •  765 seconds to insert 1M records
      •  Batching (batches of 16):
          •  INSERT INTO t1(<columns>) VALUES (<data>),
             (<data>)...
          •  50 seconds to insert 1M records


Copyright 2012 Oracle Corporation - 26th July 2012                          30
Batching, more examples
SELECT * FROM t1 WHERE userid=1 AND serviceid
 IN (1,2,3,4,5,7,8,9,10);

SET transaction_allow_batching=1; //must be set
 on the connection
BEGIN;
      INSERT              INTO t1 ....;
      INSERT              INTO t2 ....;
      INSERT              INTO t3 ....;
      INSERT              INTO t4 ....;
      DELETE              FROM t5 ....;
      UPDATE              t1 SET value='new value' WHERE id=1;
COMMIT;

Copyright 2012 Oracle Corporation - 26th July 2012               31
Optimizing schema - denormalization

                                                     userid	
   voip_data	
     userid	
   bb_data	
  
SELECT * FROM bb,voip WHERE                            1	
       <data>	
         1	
       <data>	
  
                                                       2	
       <data>	
         2	
       <data>	
  
 bb.userid=voip.userid AND                             3	
       <data>	
         3	
       <data>	
  
 bb.userid=1;                                          4	
       <data>	
         4	
       <data>	
  
                                                          voip                          bb



                                                            userid	
   voip_data	
   bb_data	
  
                                                              1	
       <data>	
   <data>	
  
mysql> SELECT * FROM                                          2	
       <data>	
   <data>	
  
  voip_bb WHERE userid=1;                                     3	
       <data>	
   <data>	
  
                                                              4	
       <data>	
   <data>	
  
1.7x improvement
                                                                       voip_bb




Copyright 2012 Oracle Corporation - 26th July 2012                                                 32
Connection Pools
                                                                                  •  Network hops increase latency (e.g.
                                                                                     Compared with InnoDB read of cached
                                                                                     data)
 App thread

               App thread

                            App thread




                                         App thread

                                                        App thread

                                                                     App thread
                                                                                    •  Increase throughput by sending in lots of
                                                                                       parallel operations
                                                                                    •  Multiple client connections (sessions) to each
                                                                                       MySQL Server
              mysqld                                  mysqld
                                                                                    •  Multiple MySQL Servers
              NDB API                                 NDB API
                                                                                  •  Connection pooling between MySQL
                                                                                     Servers and data nodes
                                                                                    •  Set ndb-cluster-connection-pool > 1
                                                                                       in my.cnf
                                                                                    •  Ensure enough [api] sections in
Data Nodes
                                                                                       config.ini
                                                                                    •  Don’t assign hostnames!


Copyright 2012 Oracle Corporation - 26th July 2012                                                                              33
Multi-threaded data nodes
                                                                             •  Scaling out on commodity
                                                                                hardware is the standard
                                        Application Nodes                       way to increase
                                                                                performance
                                                                                •  Add more data nodes and




                                                              Node 3
                                                                                   API nodes as required
                                                                             •  MySQL Cluster 7.2
Node 1




                                                                                increases the ability to also
                                                                                scale-up each data node
                                                                                •  Increases maximum
                                                                                   number of utilised threads
                                                                                   from 8 to 59
                               Node 2




                                                              Node 4




                         Node Group 1                         Node Group 2




         Copyright 2012 Oracle Corporation - 26th July 2012                                                34
Multi-threaded data nodes

                                                                                     •  Threads:
                                                                                         •  ldm: 1,2,4,8 or 12 Local
                                                 Application Nodes
                                                                                            Query Handler threads
                                                                                         •  tc: typically ldm/4
                                                                                            Transaction
                                                                                            Coordinator threads
                                                                                         •  send: ~2-3 Send
Data Node 1




                 recv                                              send    main             threads
                                                                                         •  recv: ~2-4 Receive
                                                                                            threads
                                                                                         •  main: 1 Main thread
                                                                                         •  rep: 1 Replication
                    tc                                             ldm    rep   io          thread
                                                                                         •  io: 1 I/O thread



              Copyright 2012 Oracle Corporation - 26th July 2012                                                35
Multi-threaded data nodes

       •  Applies to ntbdmtd only
       •  Configure through either:
             •  MaxNoOfExecutionThreads
                 •  Single value for number of threads
                 •  System will allocate these threads to blocks in a reasonable
                    way
             •  ThreadConfig
                 •  Specify explicitly how many threads for each block type
                 •  Lock threads to CPUs for further performance gains
                 •  Threadconfig=main={cpubind=0},ldm=
                    {count=4,cpubind=1,2,5,6},io=
                    {count=2,cpubind=3,4}


Copyright 2012 Oracle Corporation - 26th July 2012                                 36
Multi-threaded data nodes – starting
           point for ThreadConfig


                                   24 threads 32 threads 40 threads 48 thread
                      ldm                     8      12      16        16
                           tc                 4      6       8         12
                     recv                     3      3       4          5
                    send                      3      3       4          4
                        rep                   1      1       1          1


        Note that some threads are left for other data node
                    blocks as well as the OS

Copyright 2012 Oracle Corporation - 26th July 2012                              37
NoSQL APIs

                                                                          Clients


                                                                              JDBC / ODBC
                                                                               PHP / PERL
               Native            memcached           HTTP/REST                Python / Ruby


                                                             NDB API



                                                             Data Nodes

      Mix                            •  SQL: Complex, relational queries
       &                             •  Memcached: Key-Value web services
     Match                           •  Java: Enterprise Apps
                                     •  NDB API: Real-time services


Copyright 2012 Oracle Corporation - 26th July 2012                                            38
Hardware

       •  High bandwidth, low latency network
             •  Turn off firewalls if you can
       •  Use multiple disks
             •  Checkpoints
             •  Log files
             •  Table spaces
       •  SSDs
             •  Biggest benefit for Table spaces
       •  Refer to MySQL Cluster Evaluation Guide for
          more details


Copyright 2012 Oracle Corporation - 26th July 2012      39
MySQL Query Cache
          •  Don't enable the Query Cache!
                •  It is very expensive to invalidate over multiple MySQL servers
                •  A write on one server will force the others to purge their cache.
          •  If you have tables that are read only (or change very
             seldom):
                my.cnf:
                  query_cache_size=1000000
                  query_cache_type=2 (ON DEMAND)

                mysql> SELECT SQL_CACHE <cols> .. FROM table;

                    •  SQL_CACHE tells (demands) MySQL to cache the results
                       from this SELECT
                •  This can be good for STATIC data



Copyright 2012 Oracle Corporation - 26th July 2012                                     40
Non-Durable tables

       •         Some types of tables account for a lot of WRITEs, but do not
                 need to be recovered (e.g, Session tables)
       •         Unnecessary to persist such tables - no REDO LOGs or
                 CHECKPOINTs
       •         Create these tables as 'NO LOGGING' tables:

                          mysql> set ndb_table_no_logging=1;

                          mysql> create table session_table
                          (..) engine=ndb;

                          mysql> set ndb_table_no_logging=0;

       •          After system restart table will be there, but empty!


Copyright 2012 Oracle Corporation - 26th July 2012                              41
More optimisation tips
       •  When using auto-increment columns, increase ndb-
          autoincrement-prefetch-sz
       •  Set RedoBuffer=32-64M
       •  Disk-based tables:
             •  Increase UNDO_BUFFER for write-intensive apps
             •  Increase DiskIOThreadPool
             •  Increase DiskPageBufferMemory for better caching in the data
                nodes; Monitor effectiveness using NDBINFO / MEM
       • FragmentLogFileSize=256M
       • NoOfFragmentLogFiles= 6 x DataMemory (in
          MB) / (4x 256MB)
       •  Use OPTIMIZE TABLE and perform rolling restarts if
          memory fragmentation is an issue

Copyright 2012 Oracle Corporation - 26th July 2012                         42
Scaling out with MySQL Cluster Manager
                                         client




                                                       mysqld         mysqld

                                                      ndb_mgmd       ndb_mgmd

                                                        agent          agent


                                                     192.168.0.10   192.168.0.11


                   ndbd                                 ndbd

                   ndbd                                 ndbd

                   agent                                agent


            192.168.0.12                         192.168.0.13


Copyright 2012 Oracle Corporation - 26th July 2012                                 43
Scaling out with MySQL Cluster Manager
                                         client



                                                       mysqld         mysqld

                                                       mysqld         mysqld

                                                      ndb_mgmd       ndb_mgmd

                                                        agent          agent


                                                     192.168.0.10   192.168.0.11


                   ndbd                                 ndbd           ndbd           ndbd

                   ndbd                                 ndbd           ndbd           ndbd

                   agent                                agent          agent          agent


            192.168.0.12                         192.168.0.13       192.168.0.14   192.168.0.15


Copyright 2012 Oracle Corporation - 26th July 2012                                                44
Scaling out with MySQL Cluster Manager
mcm> add hosts --hosts=192.168.0.14,192.168.0.15
 mysite;
mcm> add package --basedir=/usr/local/mysql_7_0_9
 --hosts=192.168.0.14,192.168.0.15 7.0.9;
mcm> add process --
 processhosts=mysqld@192.168.0.10,mysqld@192.168.0.
 11,ndbd@192.168.0.14,ndbd@192.168.0.15,ndbd@192.16
 8.0.14,ndbd@192.168.0.15 -s port:mysqld:
 52=3307,port:mysqld:53=3307 mycluster;
mcm> start process --added mycluster;
mysql> ALTER ONLINE TABLE <table-name> REORGANIZE
 PARTITION;
mysql> OPTIMIZE TABLE <table-name>;


Copyright 2012 Oracle Corporation - 26th July 2012   45
Download MySQL Cluster Today!




http://www.mysql.com/downloads/cluster/#downloads
Further resources

•  MySQL Cluster Performance white paper:
   http://www.mysql.com/why-mysql/white-papers/
   mysql_wp_cluster_performance.php
•  MySQL Cluster Forum:
   http://forums.mysql.com/list.php?25
•  MySQL Cluster Evaluation guide:
   http://www.mysql.com/why-mysql/white-papers/
   mysql_cluster_eval_guide.php
•  MySQL Cluster in Web-Scale Architectures:
   http://www.mysql.com/why-mysql/white-papers/
   mysql_cluster_eval_guide.php
MySQL Cluster performance best practices

Contenu connexe

Tendances

Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기NeoClova
 
Parallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDBParallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDBMydbops
 
Automate Your Kafka Cluster with Kubernetes Custom Resources
Automate Your Kafka Cluster with Kubernetes Custom Resources Automate Your Kafka Cluster with Kubernetes Custom Resources
Automate Your Kafka Cluster with Kubernetes Custom Resources confluent
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeperSaurav Haloi
 
MySQL InnoDB Cluster: High Availability Made Easy!
MySQL InnoDB Cluster: High Availability Made Easy!MySQL InnoDB Cluster: High Availability Made Easy!
MySQL InnoDB Cluster: High Availability Made Easy!Vittorio Cioe
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm Chandler Huang
 
MySQL GTID 시작하기
MySQL GTID 시작하기MySQL GTID 시작하기
MySQL GTID 시작하기I Goo Lee
 
MMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorMMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorSimon J Mudd
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례I Goo Lee
 
Capacity Planning Your Kafka Cluster | Jason Bell, Digitalis
Capacity Planning Your Kafka Cluster | Jason Bell, DigitalisCapacity Planning Your Kafka Cluster | Jason Bell, Digitalis
Capacity Planning Your Kafka Cluster | Jason Bell, DigitalisHostedbyConfluent
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxNeoClova
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법Ji-Woong Choi
 
How to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversHow to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversSimon J Mudd
 
Fine-tuning Group Replication for Performance
Fine-tuning Group Replication for PerformanceFine-tuning Group Replication for Performance
Fine-tuning Group Replication for PerformanceVitor Oliveira
 
How to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleHow to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleMariaDB plc
 
Best practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability TutorialBest practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability TutorialColin Charles
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
 
MariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseMariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseSeveralnines
 

Tendances (20)

Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 
Parallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDBParallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDB
 
Automate Your Kafka Cluster with Kubernetes Custom Resources
Automate Your Kafka Cluster with Kubernetes Custom Resources Automate Your Kafka Cluster with Kubernetes Custom Resources
Automate Your Kafka Cluster with Kubernetes Custom Resources
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
 
MySQL InnoDB Cluster: High Availability Made Easy!
MySQL InnoDB Cluster: High Availability Made Easy!MySQL InnoDB Cluster: High Availability Made Easy!
MySQL InnoDB Cluster: High Availability Made Easy!
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm
 
MySQL GTID 시작하기
MySQL GTID 시작하기MySQL GTID 시작하기
MySQL GTID 시작하기
 
MMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorMMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and Orchestrator
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례
 
Capacity Planning Your Kafka Cluster | Jason Bell, Digitalis
Capacity Planning Your Kafka Cluster | Jason Bell, DigitalisCapacity Planning Your Kafka Cluster | Jason Bell, Digitalis
Capacity Planning Your Kafka Cluster | Jason Bell, Digitalis
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
How to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversHow to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL servers
 
Fine-tuning Group Replication for Performance
Fine-tuning Group Replication for PerformanceFine-tuning Group Replication for Performance
Fine-tuning Group Replication for Performance
 
Automated master failover
Automated master failoverAutomated master failover
Automated master failover
 
How to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleHow to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScale
 
Best practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability TutorialBest practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability Tutorial
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
MariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseMariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash Course
 

Similaire à MySQL Cluster performance best practices

Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql ClusterSanto Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql ClusterSanto Leto
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Geir Høydalsvik
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_colorDATAVERSITY
 
MySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime TimeMySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime TimeArnab Ray
 
Breakthrough performance with MySQL Cluster (2012)
Breakthrough performance with MySQL Cluster (2012)Breakthrough performance with MySQL Cluster (2012)
Breakthrough performance with MySQL Cluster (2012)Frazer Clement
 
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4Frazer Clement
 
UKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA'sUKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA'sFromDual GmbH
 
20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptxIvan Ma
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialFrazer Clement
 
Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...
Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...
Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...Keith Hollman
 
My sql susecon_crashcourse_2012
My sql susecon_crashcourse_2012My sql susecon_crashcourse_2012
My sql susecon_crashcourse_2012sqlhjalp
 
OpenStack Days East -- MySQL Options in OpenStack
OpenStack Days East -- MySQL Options in OpenStackOpenStack Days East -- MySQL Options in OpenStack
OpenStack Days East -- MySQL Options in OpenStackMatt Lord
 
MySQL Options in OpenStack
MySQL Options in OpenStackMySQL Options in OpenStack
MySQL Options in OpenStackTesora
 
MySQL Cluster overview + development slides (2014)
MySQL Cluster overview + development slides (2014) MySQL Cluster overview + development slides (2014)
MySQL Cluster overview + development slides (2014) Frazer Clement
 
MySQL Technology Overview
MySQL Technology OverviewMySQL Technology Overview
MySQL Technology OverviewKeith Hollman
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deploymentIvan Ma
 
Oracle to MySQL 2012
Oracle to MySQL  2012 Oracle to MySQL  2012
Oracle to MySQL 2012 Marco Tusa
 
My sql cluster_taipei_event
My sql cluster_taipei_eventMy sql cluster_taipei_event
My sql cluster_taipei_eventIvan Tu
 

Similaire à MySQL Cluster performance best practices (20)

NoSQL and MySQL
NoSQL and MySQLNoSQL and MySQL
NoSQL and MySQL
 
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql ClusterSanto Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_color
 
MySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime TimeMySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime Time
 
MySQL Cluster
MySQL ClusterMySQL Cluster
MySQL Cluster
 
Breakthrough performance with MySQL Cluster (2012)
Breakthrough performance with MySQL Cluster (2012)Breakthrough performance with MySQL Cluster (2012)
Breakthrough performance with MySQL Cluster (2012)
 
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
 
UKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA'sUKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA's
 
20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorial
 
Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...
Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...
Moodle Moot Spain: Moodle Available and Scalable with MySQL HA - InnoDB Clust...
 
My sql susecon_crashcourse_2012
My sql susecon_crashcourse_2012My sql susecon_crashcourse_2012
My sql susecon_crashcourse_2012
 
OpenStack Days East -- MySQL Options in OpenStack
OpenStack Days East -- MySQL Options in OpenStackOpenStack Days East -- MySQL Options in OpenStack
OpenStack Days East -- MySQL Options in OpenStack
 
MySQL Options in OpenStack
MySQL Options in OpenStackMySQL Options in OpenStack
MySQL Options in OpenStack
 
MySQL Cluster overview + development slides (2014)
MySQL Cluster overview + development slides (2014) MySQL Cluster overview + development slides (2014)
MySQL Cluster overview + development slides (2014)
 
MySQL Technology Overview
MySQL Technology OverviewMySQL Technology Overview
MySQL Technology Overview
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deployment
 
Oracle to MySQL 2012
Oracle to MySQL  2012 Oracle to MySQL  2012
Oracle to MySQL 2012
 
My sql cluster_taipei_event
My sql cluster_taipei_eventMy sql cluster_taipei_event
My sql cluster_taipei_event
 

Plus de Mat Keep

Blockchain & the IoT
Blockchain & the IoTBlockchain & the IoT
Blockchain & the IoTMat Keep
 
10-Step Methodology to Building a Single View with MongoDB
10-Step Methodology to Building a Single View with MongoDB10-Step Methodology to Building a Single View with MongoDB
10-Step Methodology to Building a Single View with MongoDBMat Keep
 
MongoDB at Baidu
MongoDB at BaiduMongoDB at Baidu
MongoDB at BaiduMat Keep
 
MongoDB_Spark
MongoDB_SparkMongoDB_Spark
MongoDB_SparkMat Keep
 
Business of iot_mongodb_spark
Business of iot_mongodb_sparkBusiness of iot_mongodb_spark
Business of iot_mongodb_sparkMat Keep
 
Mongo db 2.6_security_architecture
Mongo db 2.6_security_architectureMongo db 2.6_security_architecture
Mongo db 2.6_security_architectureMat Keep
 
PayPal Big Data and MySQL Cluster
PayPal Big Data and MySQL ClusterPayPal Big Data and MySQL Cluster
PayPal Big Data and MySQL ClusterMat Keep
 
MySQL HA Solutions
MySQL HA SolutionsMySQL HA Solutions
MySQL HA SolutionsMat Keep
 
MySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached APIMySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached APIMat Keep
 
My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12Mat Keep
 
NoSQL and MySQL webinar - best of both worlds
NoSQL and MySQL webinar - best of both worldsNoSQL and MySQL webinar - best of both worlds
NoSQL and MySQL webinar - best of both worldsMat Keep
 

Plus de Mat Keep (11)

Blockchain & the IoT
Blockchain & the IoTBlockchain & the IoT
Blockchain & the IoT
 
10-Step Methodology to Building a Single View with MongoDB
10-Step Methodology to Building a Single View with MongoDB10-Step Methodology to Building a Single View with MongoDB
10-Step Methodology to Building a Single View with MongoDB
 
MongoDB at Baidu
MongoDB at BaiduMongoDB at Baidu
MongoDB at Baidu
 
MongoDB_Spark
MongoDB_SparkMongoDB_Spark
MongoDB_Spark
 
Business of iot_mongodb_spark
Business of iot_mongodb_sparkBusiness of iot_mongodb_spark
Business of iot_mongodb_spark
 
Mongo db 2.6_security_architecture
Mongo db 2.6_security_architectureMongo db 2.6_security_architecture
Mongo db 2.6_security_architecture
 
PayPal Big Data and MySQL Cluster
PayPal Big Data and MySQL ClusterPayPal Big Data and MySQL Cluster
PayPal Big Data and MySQL Cluster
 
MySQL HA Solutions
MySQL HA SolutionsMySQL HA Solutions
MySQL HA Solutions
 
MySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached APIMySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached API
 
My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12My sql 5.6_replwebinar_may12
My sql 5.6_replwebinar_may12
 
NoSQL and MySQL webinar - best of both worlds
NoSQL and MySQL webinar - best of both worldsNoSQL and MySQL webinar - best of both worlds
NoSQL and MySQL webinar - best of both worlds
 

Dernier

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Dernier (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

MySQL Cluster performance best practices

  • 1. MySQL Cluster : Delivering Breakthrough Performance 26th July 2012 Andrew Morgan Mat Keep Senior Product Manager – MySQL HA Senior Product Manager – MySQL HA andrew.morgan@oracle.com mat.keep@oracle.com clusterdb.com
  • 2. The presentation is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Copyright 2012 Oracle Corporation - 26th July 2012 2
  • 3. Session Agenda •  Introduction to MySQL Cluster •  Where does MySQL Cluster fit? •  Benchmarks •  WHILE (cluster.measurePerformance() < target) { cluster.optimize(); } •  Boosting performance •  Scaling out •  Further resources Copyright 2012 Oracle Corporation - 26th July 2012 3
  • 4. MySQL Cluster – Users & Applications Extreme Scalability, Availability and Affordability •  Web •  High volume OLTP •  eCommerce •  On-Line Gaming •  Digital Marketing •  User Profile Management •  Session Management & Caching •  Content Management •  Telecoms •  Service Delivery Platforms •  VAS: VoIP, IPTV & VoD •  Mobile Content Delivery •  Mobile Payments •  LTE Access http://www.mysql.com/customers/cluster/ Copyright 2012 Oracle Corporation - 26th July 2012 4
  • 5. MySQL Cluster Architecture JPA REST Application Nodes Node Group 1 Node Group 2 F1 F2 Node 1 Node 3 Cluster Cluster Mgmt F3 F4 Mgmt F3 F4 Node 4 Node 2 F1 F2 Data Nodes Copyright 2012 Oracle Corporation - 26th July 2012 5
  • 6. When to Consider MySQL Cluster l  What are the consequences of downtime or failing to meet performance requirements? l  How much effort and $ is spent in developing and managing HA in your applications? l  Are you considering sharding your database to scale write performance? How does that impact your application and developers? l  Do your services need to be real-time? l  Will your services have unpredictable scalability demands, especially for writes ? l  Do you want the flexibility to manage your data with more than just SQL ? Copyright 2012 Oracle Corporation - 26th July 2012 6
  • 7. Where would I not Use MySQL Cluster? •  “Hot” data sets >3TB •  Replicate cold data to InnoDB •  Long running transactions •  Large rows, without using BLOBs •  Foreign Keys •  Check out MySQL Cluster 7.3 Early Access: http://labs.mysql.com/ •  Many full table scans •  Geo-Spatial indexes •  In these scenarios; InnoDB storage engine would be the right choice MySQL Cluster Evaluation Guide http://mysql.com/why-mysql/white-papers/mysql_cluster_eval_guide.php Copyright 2012 Oracle Corporation - 26th July 2012 7
  • 8. General Design Considerations •  MySQL Cluster is designed for –  Short transactions –  Many parallel transactions •  Utilize Simple access patterns to fetch data –  Use efficient scans and batching interfaces •  Analyze what your most typical use cases are –  optimize for those Overall design goal Minimize network roundtrips for your most important requests! Copyright 2012 Oracle Corporation - 26th July 2012 8
  • 9. Servicing the Most Performance-Intensive Workloads Copyright 2012 Oracle Corporation - 26th July 2012 9
  • 10. writes Servicing the Most Performance-Intensive Workloads Copyright 2012 Oracle Corporation - 26th July 2012 10
  • 11. Comparing MySQL Cluster Performance 8x Higher Performance per Node 20 18 Reads per Second (Millions) 16 14 12 10 8 6 4 2 0 MySQL Cluster 7.1 MySQL Cluster 7.2 •  1 Billion+ Reads per Minute, 8 node Intel Xeon cluster •  Multi-Threaded Data Node Extensions •  NoSQL C++ API, flexaSynch benchmark Copyright 2012 Oracle Corporation - 26th July 2012 11
  • 12. 1.2 Billion UPDATEs per Minute 25 Millions of UPDATEs per Second 20 15 10 5 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 MySQL Cluster Data Nodes •  30 x Intel E5-2600 Intel Servers •  NoSQL C++ API, flexaSynch benchmark •  ACID Transactions, with Synchronous Replication Copyright 2012 Oracle Corporation - 26th July 2012 12
  • 13. WHILE (cluster.measurePerformance() < target) •  Don’t optimize for the sake of it •  Wastes effort •  Introduces unnecessary compromises/complications •  Forget about database benchmarks •  You care about the end-to-end performance of your application on your database •  If possible drive your application to drive the database •  Measurements need to be based on representative traffic •  Measurements need to be repeatable •  Easily see impact of each optimization Copyright 2012 Oracle Corporation - 26th July 2012 13
  • 14. Where has the time gone? •  Enable the slow query log –  set global slow_query_log=1; –  set global long_query_time=3; //3 seconds –  set global log_queries_not_using_indexes=1; –  Slow queries will be written in the slow query log: mysql> show global variables like 'slow_query_log_file'; +---------------------+------------------------------+ | Variable_name | Value | +---------------------+------------------------------+ | slow_query_log_file | /data1/mysql/mysqld-slow.log | +---------------------+------------------------------+ •  Queries will be written in plain text Copyright 2012 Oracle Corporation - 26th July 2012 14
  • 15. Query Analyzer in MySQL Enterprise Monitor (take the easy option!) Copyright 2012 Oracle Corporation - 26th July 2012 15
  • 16. Simple database traffic generation create.sql: CREATE TABLE sub_name (sub_id INT NOT NULL PRIMARY KEY, name VARCHAR(30)) engine=ndb; CREATE TABLE sub_age (sub_id INT NOT NULL PRIMARY KEY, age INT) engine=ndb; INSERT INTO sub_name VALUES (1,'Bill'),(2,'Fred'),(3,'Bill'), (4,'Jane'),(5,'Andrew'),(6,'Anne'),(7,'Juliette'),(8,'Awen'), (9,'Leo'),(10,'Bill'); INSERT INTO sub_age VALUES (1,40),(2,23),(3,33),(4,19),(5,21), (6,50),(7,31),(8,65),(9,18),(10,101); query.sql: SELECT sub_age.age FROM sub_name, sub_age WHERE sub_name.name='Bill' AND sub_name.sub_id=sub_age.sub_id; Copyright 2012 Oracle Corporation - 26th July 2012 16
  • 17. Simple database traffic generation shell> mysqlslap --concurrency=5 -- iterations=100 --query=query.sql -- create=create.sql Benchmark Average number of seconds to run all queries: 0.132 seconds Minimum number of seconds to run all queries: 0.037 seconds Maximum number of seconds to run all queries: 0.268 seconds Number of clients running queries: 5 Average number of queries per client: 1 Copyright 2012 Oracle Corporation - 26th July 2012 17
  • 18. What on Earth is it doing? EXPLAIN is your friend mysql> EXPLAIN <query>; mysql> EXPLAN PARTITIONS <query>; mysql> EXPLAIN EXTENDED <query>; mysql> SHOW WARNINGS; Copyright 2012 Oracle Corporation - 26th July 2012 18
  • 19. Boosting Performance • ANALYZE TABLE •  Connection pools •  Access patterns •  Multi-threaded data •  AQL (fast JOINs) nodes •  Distribution aware •  NoSQL APIs •  Batching •  Hardware •  Schema •  More tips Copyright 2012 Oracle Corporation - 26th July 2012 19
  • 20. Before you do anything else, ANALYZE! •  New for MySQL Cluster 7.2 •  Lets the MySQL optimizer figure out how to best use indexes etc. •  Instantly speed up queries by many times mysql> ANALYZE TABLE <tab-name>; •  Repeat after changing schema, adding/removing indexes or making major data changes •  Only needs running on one mysqld in the cluster Copyright 2012 Oracle Corporation - 26th July 2012 20
  • 21. Access patterns •  Primary key reads/writes -> O(1) •  Independent of database size and number of nodes •  Index searched -> O(log n) •  n = number of tuples •  BLOBs are stored in second table -> take longer to access •  JOINs massively faster in MySQL Cluster 7.3 •  Partition pruning •  By allowing a query to be satisfied with a single data node, reduce resource consumption -> greater throughput •  If result sets not large, will also reduce latency Copyright 2012 Oracle Corporation - 26th July 2012 21
  • 22. Adaptive Query Localization Scaling Distributed Joins 70x More Performance •  Perform Complex Queries mysqld across Shards •  JOINs pushed down to data nodes A Data Nodes •  Executed in parallel Q •  Returns single result set to MySQL L •  Opens Up New Use-Cases •  Real-time analytics •  Recommendations engines mysqld •  Analyze click-streams Data Nodes DON’T COMPROMISE FUNCTIONALITY TO SCALE-OUT !! Copyright 2012 Oracle Corporation - 26th July 2012 22
  • 23. MySQL Cluster 7.2 AQL Test Query Web-Based Content Management System MySQL Server Data Data Node1 Node2 Copyright 2012 Oracle Corporation - 26th July 2012 23
  • 24. Web-Based CMS Query Execution Time Seconds 70x More 100 Performance 90 80 70 87.23 seconds 60 50 40 30 20 10 1.26 seconds 0 MySQL Cluster 7.1 MySQL Cluster 7.2 Must Analyze tables for best results mysql> ANALYZE TABLE <tab-name>; Copyright 2012 Oracle Corporation - 26th July 2012 24
  • 25. Did I mention ANALYZE TABLE? Copyright 2012 Oracle Corporation - 26th July 2012 25
  • 26. AQL – How to Use it •  Activated when ndb_join_pushdown is on (default) •  Rules for a Join to be pushed down: 1.  Joined columns use identical types 2.  No reference to BLOB or TEXT columns 3.  No explicit lock 4.  Child tables in the Join must be accessed using one of the ref, eq_ref, or const 5.  Tables not explicitly partitioned by [LINEAR] HASH, LIST, or RANGE 6.  Query plan doesn’t select ‘Using join buffer' 7.  If root of Join is an eq_ref or const, child tables must be joined by eq_ref •  Run ANALYZE TABLE <tab-name> on each table once •  Use EXPLAIN to see what components are being pushed down: •  Extra: Child of 'd' in pushed join@1 •  EXPLAIN EXTENDED <query>;SHOW WARNINGS; Copyright 2012 Oracle Corporation - 26th July 2012 26
  • 27. Distribution Aware Apps SELECT SUM(population) FROM towns •  Partition selected using hash on WHERE country=“UK”; Partition Key Partition Key Primary Key •  Primary Key by default town country population •  User can override in table definition Maidenhead UK 78000 •  MySQL Server (or NDB API) will Paris France 2193031 attempt to send transaction to the Boston UK 58124 correct data node Boston USA 617594 •  If all data for the transaction are in SELECT SUM(population) FROM towns the same partition, less messaging - WHERE town=“Boston”; > faster Partition Key •  Aim to have all rows for high-running Primary Key queries in same partition town country population Maidenhead UK 78000 Paris France 2193031 Boston UK 58124 Boston USA 617594 Copyright 2012 Oracle Corporation - 26th July 2012 27
  • 28. Distribution Aware – Multiple Tables Partition Key Primary Key sub_id age gender •  Extend partition awareness over 19724 25 male multiple tables 84539 43 female •  Same rule – aim to have all data for 19724 16 female instance of high running 74574 21 female transactions in the same partition Partition Key Primary Key ALTER TABLE service_ids service sub_id svc_id PARTITION BY KEY(sub_id); twitter 19724 76325732 twitter 84539 67324782 facebook 19724 83753984 EXPLAIN PARTITIONS <query>; facebook 73642 87324793 Copyright 2012 Oracle Corporation - 26th July 2012 28
  • 29. Validate if “partition pruning” is working mysql> SHOW GLOBAL STATUS LIKE 'ndb_pruned_scan_count'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | Ndb_pruned_scan_count | 12 | +-----------------------+-------+ mysql> SELECT * FROM services WHERE sub_id=1; +--------+--------------+--------------+ | sub_id | service_name | service_parm | +--------+--------------+--------------+ | 1 | IM | 878 | | 1 | ssh | 666 | | 1 | Video | 654 | +--------+--------------+--------------+ mysql> SHOW GLOBAL STATUS LIKE 'ndb_pruned_scan_count'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | Ndb_pruned_scan_count | 13 | +-----------------------+-------+ Copyright 2012 Oracle Corporation - 26th July 2012 29
  • 30. Batching •  MySQL Cluster allows batching on •  Inserts, index scans (when not part of a JOIN), PK reads, PK deletes, and PK (most) updates. •  Batching means that one network round trip is used to read/modify a number of records → less ping-pong! •  If you can batch - do it! •  Example – Insert 1M records •  No batching: •  INSERT INTO t1(data) VALUES (<data>); •  765 seconds to insert 1M records •  Batching (batches of 16): •  INSERT INTO t1(<columns>) VALUES (<data>), (<data>)... •  50 seconds to insert 1M records Copyright 2012 Oracle Corporation - 26th July 2012 30
  • 31. Batching, more examples SELECT * FROM t1 WHERE userid=1 AND serviceid IN (1,2,3,4,5,7,8,9,10); SET transaction_allow_batching=1; //must be set on the connection BEGIN; INSERT INTO t1 ....; INSERT INTO t2 ....; INSERT INTO t3 ....; INSERT INTO t4 ....; DELETE FROM t5 ....; UPDATE t1 SET value='new value' WHERE id=1; COMMIT; Copyright 2012 Oracle Corporation - 26th July 2012 31
  • 32. Optimizing schema - denormalization userid   voip_data   userid   bb_data   SELECT * FROM bb,voip WHERE 1   <data>   1   <data>   2   <data>   2   <data>   bb.userid=voip.userid AND 3   <data>   3   <data>   bb.userid=1; 4   <data>   4   <data>   voip bb userid   voip_data   bb_data   1   <data>   <data>   mysql> SELECT * FROM 2   <data>   <data>   voip_bb WHERE userid=1; 3   <data>   <data>   4   <data>   <data>   1.7x improvement voip_bb Copyright 2012 Oracle Corporation - 26th July 2012 32
  • 33. Connection Pools •  Network hops increase latency (e.g. Compared with InnoDB read of cached data) App thread App thread App thread App thread App thread App thread •  Increase throughput by sending in lots of parallel operations •  Multiple client connections (sessions) to each MySQL Server mysqld mysqld •  Multiple MySQL Servers NDB API NDB API •  Connection pooling between MySQL Servers and data nodes •  Set ndb-cluster-connection-pool > 1 in my.cnf •  Ensure enough [api] sections in Data Nodes config.ini •  Don’t assign hostnames! Copyright 2012 Oracle Corporation - 26th July 2012 33
  • 34. Multi-threaded data nodes •  Scaling out on commodity hardware is the standard Application Nodes way to increase performance •  Add more data nodes and Node 3 API nodes as required •  MySQL Cluster 7.2 Node 1 increases the ability to also scale-up each data node •  Increases maximum number of utilised threads from 8 to 59 Node 2 Node 4 Node Group 1 Node Group 2 Copyright 2012 Oracle Corporation - 26th July 2012 34
  • 35. Multi-threaded data nodes •  Threads: •  ldm: 1,2,4,8 or 12 Local Application Nodes Query Handler threads •  tc: typically ldm/4 Transaction Coordinator threads •  send: ~2-3 Send Data Node 1 recv send main threads •  recv: ~2-4 Receive threads •  main: 1 Main thread •  rep: 1 Replication tc ldm rep io thread •  io: 1 I/O thread Copyright 2012 Oracle Corporation - 26th July 2012 35
  • 36. Multi-threaded data nodes •  Applies to ntbdmtd only •  Configure through either: •  MaxNoOfExecutionThreads •  Single value for number of threads •  System will allocate these threads to blocks in a reasonable way •  ThreadConfig •  Specify explicitly how many threads for each block type •  Lock threads to CPUs for further performance gains •  Threadconfig=main={cpubind=0},ldm= {count=4,cpubind=1,2,5,6},io= {count=2,cpubind=3,4} Copyright 2012 Oracle Corporation - 26th July 2012 36
  • 37. Multi-threaded data nodes – starting point for ThreadConfig 24 threads 32 threads 40 threads 48 thread ldm 8 12 16 16 tc 4 6 8 12 recv 3 3 4 5 send 3 3 4 4 rep 1 1 1 1 Note that some threads are left for other data node blocks as well as the OS Copyright 2012 Oracle Corporation - 26th July 2012 37
  • 38. NoSQL APIs Clients JDBC / ODBC PHP / PERL Native memcached HTTP/REST Python / Ruby NDB API Data Nodes Mix •  SQL: Complex, relational queries & •  Memcached: Key-Value web services Match •  Java: Enterprise Apps •  NDB API: Real-time services Copyright 2012 Oracle Corporation - 26th July 2012 38
  • 39. Hardware •  High bandwidth, low latency network •  Turn off firewalls if you can •  Use multiple disks •  Checkpoints •  Log files •  Table spaces •  SSDs •  Biggest benefit for Table spaces •  Refer to MySQL Cluster Evaluation Guide for more details Copyright 2012 Oracle Corporation - 26th July 2012 39
  • 40. MySQL Query Cache •  Don't enable the Query Cache! •  It is very expensive to invalidate over multiple MySQL servers •  A write on one server will force the others to purge their cache. •  If you have tables that are read only (or change very seldom): my.cnf: query_cache_size=1000000 query_cache_type=2 (ON DEMAND) mysql> SELECT SQL_CACHE <cols> .. FROM table; •  SQL_CACHE tells (demands) MySQL to cache the results from this SELECT •  This can be good for STATIC data Copyright 2012 Oracle Corporation - 26th July 2012 40
  • 41. Non-Durable tables •  Some types of tables account for a lot of WRITEs, but do not need to be recovered (e.g, Session tables) •  Unnecessary to persist such tables - no REDO LOGs or CHECKPOINTs •  Create these tables as 'NO LOGGING' tables: mysql> set ndb_table_no_logging=1; mysql> create table session_table (..) engine=ndb; mysql> set ndb_table_no_logging=0; •  After system restart table will be there, but empty! Copyright 2012 Oracle Corporation - 26th July 2012 41
  • 42. More optimisation tips •  When using auto-increment columns, increase ndb- autoincrement-prefetch-sz •  Set RedoBuffer=32-64M •  Disk-based tables: •  Increase UNDO_BUFFER for write-intensive apps •  Increase DiskIOThreadPool •  Increase DiskPageBufferMemory for better caching in the data nodes; Monitor effectiveness using NDBINFO / MEM • FragmentLogFileSize=256M • NoOfFragmentLogFiles= 6 x DataMemory (in MB) / (4x 256MB) •  Use OPTIMIZE TABLE and perform rolling restarts if memory fragmentation is an issue Copyright 2012 Oracle Corporation - 26th July 2012 42
  • 43. Scaling out with MySQL Cluster Manager client mysqld mysqld ndb_mgmd ndb_mgmd agent agent 192.168.0.10 192.168.0.11 ndbd ndbd ndbd ndbd agent agent 192.168.0.12 192.168.0.13 Copyright 2012 Oracle Corporation - 26th July 2012 43
  • 44. Scaling out with MySQL Cluster Manager client mysqld mysqld mysqld mysqld ndb_mgmd ndb_mgmd agent agent 192.168.0.10 192.168.0.11 ndbd ndbd ndbd ndbd ndbd ndbd ndbd ndbd agent agent agent agent 192.168.0.12 192.168.0.13 192.168.0.14 192.168.0.15 Copyright 2012 Oracle Corporation - 26th July 2012 44
  • 45. Scaling out with MySQL Cluster Manager mcm> add hosts --hosts=192.168.0.14,192.168.0.15 mysite; mcm> add package --basedir=/usr/local/mysql_7_0_9 --hosts=192.168.0.14,192.168.0.15 7.0.9; mcm> add process -- processhosts=mysqld@192.168.0.10,mysqld@192.168.0. 11,ndbd@192.168.0.14,ndbd@192.168.0.15,ndbd@192.16 8.0.14,ndbd@192.168.0.15 -s port:mysqld: 52=3307,port:mysqld:53=3307 mycluster; mcm> start process --added mycluster; mysql> ALTER ONLINE TABLE <table-name> REORGANIZE PARTITION; mysql> OPTIMIZE TABLE <table-name>; Copyright 2012 Oracle Corporation - 26th July 2012 45
  • 46. Download MySQL Cluster Today! http://www.mysql.com/downloads/cluster/#downloads
  • 47. Further resources •  MySQL Cluster Performance white paper: http://www.mysql.com/why-mysql/white-papers/ mysql_wp_cluster_performance.php •  MySQL Cluster Forum: http://forums.mysql.com/list.php?25 •  MySQL Cluster Evaluation guide: http://www.mysql.com/why-mysql/white-papers/ mysql_cluster_eval_guide.php •  MySQL Cluster in Web-Scale Architectures: http://www.mysql.com/why-mysql/white-papers/ mysql_cluster_eval_guide.php