Your SlideShare is downloading. ×
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
MySQL: Know more about open Source Database
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MySQL: Know more about open Source Database

2,393

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,393
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
20
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. know more about MySQL open source database
    MySQL: Open Source Database
    1
    Salaria Software Services
  • 2. Storage engines
    Schema
    Normalization
    Data types
    Indexes
    Know more about your SQL queries - Using EXPLAIN
    Character set and Collation
    Resources
    2
    Salaria Software Services
    Outline
  • 3. Generics are inefficient
    • If you have chosen MySQL, take advantage of its strengths
    • Having an understanding of the database helps you develop better-performing applications
    • better to design a well-performing database-driven application from the start
    • 4. than try to fix a slow one after the fact!
    3
    Salaria Software Services
    Why is it significant for a developerto know MySQL?
  • 5. Salaria Software Services
    4
    MySQL Pluggable Storage EngineArchitecture
    MySQL supports several storage engines that act as handlers for different table types
    • No other database vendor offers this capability
  • Dynamically add and remove storage engines.
    Change the storage engine on a table with
    “ALTER TABLE <table> ENGINE=InnoDB;”
    5
    Salaria Software Services
    Storage Engines
  • 6. Concurrency: some have more granular locks than others
    • right locking can improve performance.
    • Storage: how the data is stored on disk
    • page size for tables, indexes, format used
    • Indexes: b-trees, hash
    • Memory usage
    • caching strategy
    • Transactions:
    • not every application table needs transactions
    6
    Salaria Software Services
    What makes engines different?
  • 7. “As a developer, what do I need to know about storage engines, without being a MySQL expert?”
    • Keep in mind the following questions:
    • What type of data will you be storing?
    • 8. Is the data constantly changing?
    • 9. Is the data mostly logs (INSERTs)?
    • 10. requirements for reports?
    • 11. need for transaction control?
    7
    Salaria Software Services
    So…
  • 12. Default MySQL engine
    • high-speed Query and Insert capability
    • insert uses shared read lock
    • 13. updates, deletes use table-level locking, slower
    • full-text indexing
    • Good for text search
    • Non-transactional, No foreign key support
    • good choice for :
    • read-only or read-mostly application tables that don't require transactions
    • 14. Web, data warehousing, logging, auditing
    8
    Salaria Software Services
    MyISAM Pluggable Storage engine
  • 15. Transaction-safe and ACID (atomicity, consistency, isolation, durability)compliant
    • crash recovery, foreign key constraints
    • good query performance, depending on indexes
    • row-level locking, Multi Version Concurrency Control (MVCC)
    • allows fewer row locks by keeping data snapshots
    – Depending on the isolation level, no locking for SELECT
    – high concurrency possible
    • uses more disk space and memory than ISAM
    • Good for Online transaction processing (OLTP)
    • Lots of users: eBay, Google, Yahoo!, Facebook, etc.
    9
    Salaria Software Services
    InnoDB Storage engine
  • 16. Entirely in-memory engine
    • stores all data in RAM for extremely fast access
    • 17. Updated Data is not persisted
    – table loaded on restart
    • Hash index used by default
    • Good for
    • Summary and transient data
    • 18. "lookup" tables,
    • 19. calculated table counts,
    • 20. for caching, temporary tables
    10
    Salaria Software Services
    Memory Engine
  • 21. Incredible insert speeds
    • Great compression rates (zlib)?
    • Typically 6-8x smaller than MyISAM
    • No UPDATEs
    • Ideal for storing and retrieving large amounts of historical data
    • audit data, log files,Web traffic records
    • 22. Data that can never be updated
    11
    Salaria Software Services
    Archive engine
  • 23. Salaria Software Services
    12
    Pluggable storage engines offerFlexibility
    You can use multiple storage engines in a single application
    • A storage engine for the same table on a slave can be different than that of the master
    • Choose storage engine that's best for your applications requirements
    • can greatly improve performance
  • Creating a table with a specified engine
    • CREATE TABLE t1 (...)
    ENGINE=InnoDB;
    • Changing existing tables
    • ALTER TABLE t1 ENGINE=MyISAM;
    • Finding all your available engines
    • SHOW STORAGE ENGINES;
    13
    Salaria Software Services
    Using different engines
  • 24. Basic foundation of performance
    • Normalization
    • Data Types
    • Smaller, smaller, smaller
    - Smaller tables use less disk, less memory, can give better performance
    • Indexing
    • Speeds up retrieval
    14
    Salaria Software Services
    The schema
  • 25. Eliminate redundant data:
    • Don't store the same data in more than one table
    • 26. Only store related data in a table
    • 27. reduces database size and errors
    15
    Salaria Software Services
    Goal of Normalization
  • 28. updates are usually faster.
    • there's less data to change.
    • tables are usually smaller, use less memory, which can give better performance.
    • better performance for distinct or group by queries
    16
    Salaria Software Services
    Normalization
  • 29. However Normalized database causes joins for queries
    • excessively normalized database:
    • queries take more time to complete, as data has to be retrieved from more tables.
    • Normalized better for writes OLTP
    • De-normalized better for reads , reporting
    • Real World Mixture:
    • normalized schema
    • 30. Cache selected columns in memory table
    17
    Salaria Software Services
    taking normalization way too far
  • 31. Smaller => less disk => less memory => better performance
    Use the smallest data type possible
    • The smaller your data types, The more index (and data) can fit into a block of memory, the faster your queries will be.
    • Period.
    • 32. Especially for indexed fields
    18
    Salaria Software Services
    Data Types: Smaller, smaller, smaller
  • 33. MySQL has 9 numeric data types
    • Compared to Oracle's 1
    • Integer:
    • TINYINT , SMALLINT, MEDIUMINT, INT, BIGINT
    • 34. Require 8, 16, 24, 32, and 64 bits of space.
    • Use UNSIGNED when you don't need negative numbers – one more level of data integrity
    • BIGINT is not needed for AUTO_INCREMENT
    • INT UNSIGNED stores 4.3 billion values!
    • 35. Summation of values... yes, use BIGINT
    Floating Point: FLOAT, DOUBLE
    • Approximate calculations
    • Fixed Point: DECIMAL
    • Always use DECIMAL for monetary/currency fields, never use FLOAT or DOUBLE!
    • Other: BIT
    • Store 0,1 values
    19
    Salaria Software Services
    Choose your Numeric Data Type
  • 36. VARCHAR(n) variable length
    • uses only space it needs
    – Can save disk space = better performance
    • Use :
    – Max column length > avg
    – when updates rare (updates fragment)
    • CHAR(n) fixed length
    • Use:
    – short strings, Mostly same length, or changed frequently
    20
    Salaria Software Services
    Character Data Types
  • 37. Always define columns as NOT NULL
    – unless there is a good reason not to
    • Can save a byte per column
    • 38. nullablecolumns make indexes, index statistics, and value comparisons more complicated.
    • Use the same data types for columns that will be compared in JOINs
    • Otherwise converted for comparison
    • Use BLOBs very sparingly
    • Use the filesystem for what it was intended
    21
    Salaria Software Services
    Appropriate Data Types
  • 39. “The more records you can fit into a single page of memory/disk, the faster your seeks and scans will be.”
    • Use appropriate data types
    • Keep primary keys small
    • Use TEXT sparingly
    • Consider separate tables
    • Use BLOBs very sparingly
    • Use the filesystem for what it was intended
    22
    Salaria Software Services
    smaller, smaller, smaller
  • 40. Indexes Speed up Queries,
    • SELECT...WHERE name = 'carol'
    • 41. only if there is good selectivity:
    – % of distinct values in a column
    • But... each index will slow down INSERT, UPDATE, and DELETE operations
    23
    Salaria Software Services
    Indexes
  • 42. Always have an index on join conditions
    • Look to add indexes on columns used in WHERE and GROUP BY expressions
    • PRIMARY KEY, UNIQUE , and Foreign key Constraint columns are automatically indexed.
    • other columns can be indexed (CREATE INDEX..)
    24
    Salaria Software Services
    Missing Indexes
  • 43. use the MySQL slow query log and use Explain
    • Append EXPLAIN to your SELECT statement
    • shows how the MySQL optimizer has chosen to execute the query
    • You Want to make your queries access less data:
    • are queries accessing too many rows or columns?
    – select only the columns that you need
    • Use to see where you should add indexes
    • Consider adding an index for slow queries or cause a lot of load.
    – ensures that missing indexes are picked up early in the development process
    25
    Salaria Software Services
    Know how your Queries are executed by MySQL
  • 44. Find and fix problem SQL:
    • how long a query took
    • how the optimizer handled it
    • Drill downs, results of EXPLAIN statements
    • Historical and real-time analysis
    • query execution counts, run time
    “Its not just slow running queries that are a problem, Sometimes its SQL that executes a lot that kills your system”
    26
    Salaria Software Services
    MySQLQuery Analyzer
  • 45. Salaria Software Services
    27
    Understanding EXPLAIN
    Just append EXPLAIN to your SELECT statement
    • Provides the execution plan chosen by the MySQL optimizer for a specific SELECT statement
    • Shows how the MySQL optimizer executes the query
    • Use to see where you should add indexes
    • ensures that missing indexes are picked up early in the development process
  • A character set is a set of symbols and encodings.
    A collation is a set of rules for comparing characters in a character set.
    MySQL can do these things for you:
    • Store strings using a variety of character sets
    • 46. Compare strings using a variety of collations
    • 47. Mix strings with different character sets or collations in the same server, the same database, or even the same table
    • 48. Allow specification of character set and collation at any level
    - Mysql > SET NAMES 'utf8';
    - Mysql > SHOW CHARACTER SET
    28
    Salaria Software Services
    Character set and Collation
  • 49. Two different character sets cannot have the same collation.
    Each character set has one collation that is the default collation. For example, the default collation for latin1 is latin1_swedish_ci. The output for “SHOW CHARACTER SET” indicates which collation is the default for each displayed character set.
    There is a convention for collation names: They start with the name of the character set with which they are associated, they usually include a language name, and they end with _ci (case insensitive), _cs (case sensitive), or _bin (binary).
    29
    Salaria Software Services
    Collations have these general characteristics
  • 50. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <?phpmysql_query('SET NAMES utf8'); ?>
    CREATE DATABASE mydatabase DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    CREATE TABLE mytable (  mydata VARCHAR(128) NOT NULL) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    30
    Salaria Software Services
    How to handle Unicode (UTF-8)
  • 51. MySQL Forge and the Forge Wiki
    http://forge.mysql.com/
    Planet MySQL
    http://planetmysql.org/
    MySQLDevZone
    http://dev.mysql.com/
    High Performance MySQL book
    31
    Salaria Software Services
    Resources
  • 52. ?
    Open Questions
    32
    Salaria Software Services
  • 53. Salaria Software Services
    33
    Thanks and Regards
    Mahesh Salaria
    mahesh@salaria.net
    Salaria Software Services
    http://salariasoft.com

×