search
HomeDatabaseMysql TutorialA detailed explanation of MySql tables, databases, shards and partitions

The amount of data of the database reaches a certain degree, to avoid bringing system performance bottlenecks. Data needs to be processed by means of partitioning, sharding, databases, and tables.

2. Sharding (similar to sharding)

Sharding is an effective way to scale out the database to multiple physical nodes. , its main purpose is to break through the I/O capacity limitations of single-node database servers and solve database scalability problems. The word shard means "fragment". If a database is treated as a large piece of glass and the glass is broken, then each small piece is called a fragment of the database (Database Shard). The process of breaking the entire database into pieces is called sharding, which can be translated as sharding.

Formally, sharding can be simply defined as a partitioning scheme that distributes a large database across multiple physical nodes. Each partition contains a certain part of the database, called a slice. The partitioning method can be arbitrary and is not limited to traditional horizontal partitioning and vertical partitioning. A shard can contain the contents of multiple tables or even multiple database instances. Each shard is placed on a database server. A database server can handle one or more shards of data. A server is required in the system for query routing and forwarding, and is responsible for forwarding the query to the shard or shard collection node containing the data accessed by the query for execution.

3. Scale Out/Scale Up and Vertical Splitting/Horizontal Splitting

Mysql’s expansion solutions include Scale Out and Scale Up.

Scale Out (horizontal expansion) means that the Application can be expanded in the horizontal direction. Generally speaking, for data center applications, Scale out means that when more machines are added, the application can still make good use of the resources of these machines to improve its own efficiency and achieve good scalability.

Scale Up (vertical expansion) means that the Application can expand in the vertical direction. Generally speaking, for a single machine, Scale Up is worth it. When a computing node (machine) adds more CPU Cores, storage devices, and uses larger memory, the application can make full use of these resources to improve its efficiency. Thus achieving good scalability.

MySql’s Sharding strategy includes vertical sharding and horizontal sharding.

Vertical (vertical) split: refers to splitting by functional modules to solve the io competition between tables. For example, it is divided into order database, product database, user database... In this way, the table structures of multiple databases are different.

Horizontal (horizontal) split: Save the data of the same table in blocks and save it in different databases to solve the pressure of increasing data volume in a single table. The table structures in these databases are exactly the same.

Table structure design is divided vertically. Some common scenarios include

  • #Vertical segmentation of large fields. Separately build large fields in another table to improve the access performance of the basic table. In principle, in performance-critical applications, large fields of the database should be avoided.

  • Vertical segmentation according to usage . For example, enterprise material attributes can be vertically segmented according to basic attributes, sales attributes, purchasing attributes, manufacturing attributes, financial accounting attributes, etc.

  • Vertically segmented according to access frequency. For example, in e-commerce and Web 2.0 systems, if there are a lot of user attribute settings, you can vertically separate basic, frequently used attributes and infrequently used attributes.

Table structure design is divided horizontally . Some common scenarios include

  • For example, on an online e-commerce website, the amount of order table data is too large, and it is segmented at the annual and monthly levels

  • Web 2.0 If there are too many registered users and online active users on the website, horizontally segment the relevant users and the tables closely related to the user according to the user ID range. For example, the top posts of the forum, Because of the paging problem, each page needs to display the pinned post. In this case, the pinned post can be divided horizontally to avoid reading from the table of all posts when fetching the pinned post

  • 4. Table splitting and partitioning

Table splitting superficially means dividing a table into multiple small tables, while partitioning means dividing the data of a table into N multiple areas. blocks, which can be on the same disk or on different disks.

The difference between sub-tables and partitions

    mysql’s sub-table is a real sub-table. After a table is divided into many tables, each small table is a complete table and corresponds to three files (MyISAM engine: a .MYD data file, a .MYI index file, and a .frm table structure file).
    • Data processing

    After the data is divided into tables, the data is stored in the divided tables. The main table is just a shell, and data access occurs in each divided table. There is no concept of table partitioning in partitioning. Partitioning just divides the file storing data into many small blocks. The partitioned table is still one table, and the data processing is still completed by yourself.

    • Improving performance

    After dividing the tables, the concurrency capability of a single table is improved, and the disk I/O performance is also improved. The partition breaks through the disk I/O bottleneck, and I want to improve the read and write capabilities of the disk to increase mysql performance.

    At this point, the testing focus of partitions and sub-tables is different. The focus of sub-tables is how to improve the concurrency of MySQL when accessing data; and for partitions, how to break through the read and write capabilities of the disk to achieve The purpose of improving mysql performance.

    • In terms of difficulty of implementation

    There are many ways to divide tables. Using merge to divide tables is the simplest way. This method is about as easy as partitioning and can be transparent to the program code. If you use other table partitioning methods, it will be more troublesome than partitioning. The implementation of partitioning is relatively simple. Creating a partitioned table is no different from building an ordinary table, and it is transparent to the code side.

    Applicable scenarios for partitioning

    1. When the query speed of a table is slow enough to affect its use.

    2. The data in the table is segmented

    3. Operations on data often only involve part of the data, not all the data

    CREATE TABLE sales (
    
        id INT AUTO_INCREMENT,
    
        amount DOUBLE NOT NULL,
    
        order_day DATETIME NOT NULL,
    
        PRIMARY KEY(id, order_day)) ENGINE=InnodbPARTITION BY RANGE(YEAR(order_day)) (
    
        PARTITION p_2010 VALUES LESS THAN (2010),
    
        PARTITION p_2011 VALUES LESS THAN (2011),
    
        PARTITION p_2012 VALUES LESS THAN (2012),PARTITION p_catchall VALUES LESS THAN MAXVALUE);

    Applicable scenarios for sub-tables

    1. The query speed of a table has been slow enough to affect its use.

    2. When inserting frequently or doing joint queries, the speed becomes slower.

    The implementation of sub-tables requires a combination of business implementation and migration, which is relatively complex.

    5. Table sharding and database sharding

    Table sharding can solve the problem of reduced query efficiency caused by excessive data volume in a single table. However, it cannot provide sufficient data to the database. The concurrent processing capabilities bring qualitative improvements. In the face of highly concurrent read and write access, when the database master server cannot bear the pressure of write operations, it is meaningless no matter how to expand the slave server. Therefore, we must change our thinking and split the database to improve the database writing capability. This is the so-called sub-database.

    Similar to the table sharding strategy, sharding can use a keyword modulo to route data access, as shown in the figure below

    A detailed explanation of MySql tables, databases, shards and partitions

    6. The difference between partitioning and sharding Original text

    A detailed explanation of MySql tables, databases, shards and partitions

    Recommendation: "mysql video tutorial"

The above is the detailed content of A detailed explanation of MySql tables, databases, shards and partitions. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:learnku. If there is any infringement, please contact admin@php.cn delete
MySQL's Role: Databases in Web ApplicationsMySQL's Role: Databases in Web ApplicationsApr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

MySQL: Building Your First DatabaseMySQL: Building Your First DatabaseApr 17, 2025 am 12:22 AM

The steps to build a MySQL database include: 1. Create a database and table, 2. Insert data, and 3. Conduct queries. First, use the CREATEDATABASE and CREATETABLE statements to create the database and table, then use the INSERTINTO statement to insert the data, and finally use the SELECT statement to query the data.

MySQL: A Beginner-Friendly Approach to Data StorageMySQL: A Beginner-Friendly Approach to Data StorageApr 17, 2025 am 12:21 AM

MySQL is suitable for beginners because it is easy to use and powerful. 1.MySQL is a relational database, and uses SQL for CRUD operations. 2. It is simple to install and requires the root user password to be configured. 3. Use INSERT, UPDATE, DELETE, and SELECT to perform data operations. 4. ORDERBY, WHERE and JOIN can be used for complex queries. 5. Debugging requires checking the syntax and use EXPLAIN to analyze the query. 6. Optimization suggestions include using indexes, choosing the right data type and good programming habits.

Is MySQL Beginner-Friendly? Assessing the Learning CurveIs MySQL Beginner-Friendly? Assessing the Learning CurveApr 17, 2025 am 12:19 AM

MySQL is suitable for beginners because: 1) easy to install and configure, 2) rich learning resources, 3) intuitive SQL syntax, 4) powerful tool support. Nevertheless, beginners need to overcome challenges such as database design, query optimization, security management, and data backup.

Is SQL a Programming Language? Clarifying the TerminologyIs SQL a Programming Language? Clarifying the TerminologyApr 17, 2025 am 12:17 AM

Yes,SQLisaprogramminglanguagespecializedfordatamanagement.1)It'sdeclarative,focusingonwhattoachieveratherthanhow.2)SQLisessentialforquerying,inserting,updating,anddeletingdatainrelationaldatabases.3)Whileuser-friendly,itrequiresoptimizationtoavoidper

Explain the ACID properties (Atomicity, Consistency, Isolation, Durability).Explain the ACID properties (Atomicity, Consistency, Isolation, Durability).Apr 16, 2025 am 12:20 AM

ACID attributes include atomicity, consistency, isolation and durability, and are the cornerstone of database design. 1. Atomicity ensures that the transaction is either completely successful or completely failed. 2. Consistency ensures that the database remains consistent before and after a transaction. 3. Isolation ensures that transactions do not interfere with each other. 4. Persistence ensures that data is permanently saved after transaction submission.

MySQL: Database Management System vs. Programming LanguageMySQL: Database Management System vs. Programming LanguageApr 16, 2025 am 12:19 AM

MySQL is not only a database management system (DBMS) but also closely related to programming languages. 1) As a DBMS, MySQL is used to store, organize and retrieve data, and optimizing indexes can improve query performance. 2) Combining SQL with programming languages, embedded in Python, using ORM tools such as SQLAlchemy can simplify operations. 3) Performance optimization includes indexing, querying, caching, library and table division and transaction management.

MySQL: Managing Data with SQL CommandsMySQL: Managing Data with SQL CommandsApr 16, 2025 am 12:19 AM

MySQL uses SQL commands to manage data. 1. Basic commands include SELECT, INSERT, UPDATE and DELETE. 2. Advanced usage involves JOIN, subquery and aggregate functions. 3. Common errors include syntax, logic and performance issues. 4. Optimization tips include using indexes, avoiding SELECT* and using LIMIT.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment