当前位置:网站首页>A table splitting implementation scheme of MySQL and InnoDB, MyISAM and MRG_ Introduction to MyISAM and other engine application scenarios
A table splitting implementation scheme of MySQL and InnoDB, MyISAM and MRG_ Introduction to MyISAM and other engine application scenarios
2022-04-23 14:14:00 【pureluckyfish】
One 、MYSQL Complete example of implementing sub table (5.7 edition )
1、 Build three identical sub tables user1、user2、user3
CREATE TABLE user1 (
id INT auto_increment NOT NULL,
name varchar(50) NULL,
sex INT DEFAULT 0 NOT NULL,
CONSTRAINT user1_pk PRIMARY KEY (id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE user2 (
id INT auto_increment NOT NULL,
name varchar(50) NULL,
sex INT DEFAULT 0 NOT NULL,
CONSTRAINT user1_pk PRIMARY KEY (id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE user3 (
id INT auto_increment NOT NULL,
name varchar(50) NULL,
sex INT DEFAULT 0 NOT NULL,
CONSTRAINT user1_pk PRIMARY KEY (id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
2、 Create another main table , The table structure is the same, but engine ENGINE=MRG_MyISAM; Addition, deletion, modification and query are all operations on this table , But the real data change is in each sub table
CREATE TABLE alluser (
id INT auto_increment NOT NULL,
name varchar(50) NULL,
sex INT DEFAULT 0 NOT null,
index(id)
)
ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8
INSERT_METHOD=LAST UNION=(`user1`,`user2`,`user3`)
auto_increment=1 COMMENT=' A sub table implementation method ';
3、 verification : perform insert sentence , The query found that the data was stored in user3 in ( Why does data exist user3 Not user1 Well ? To look down )
insert into alluser(name,sex)values(' bald ',1);
select * from alluser;
delete from alluser where id=1;
select * from user1 ;
select * from user2 ;
select * from user3 ;
| The article quoted :https://www.cnblogs.com/lucky-man/p/6207873.html If I have a user list user Yes 1100W Data , Now it's going to be broken into three tables user1 and user2 and user3,user1 Table storage 500w,user2 save 500w,user3 save 100w, All new user information will exist in the future user3 in . |
INSERT INTO user1(user1.id,user1.name,user1.sex)SELECT (user.id,user.name,user.sex)FROM user where user.id <= 5000000;
INSERT INTO user2(user2.id,user2.name,user2.sex)SELECT (user.id,user.name,user.sex)FROM user where user.id > 5000000 and user.id <= 10000000;
INSERT INTO user3(user3.id,user3.name,user3.sex)SELECT (user.id,user.name,user.sex)FROM user where user.id > 10000000;
| In this way, I will succeed in putting one user surface , Divided into three tables , There is a problem at this time , In code sql What to do with the statement , It used to be a watch , Now it's three tables , The code has changed a lot , This brings a lot of workload to programmers , Is there a good way to solve this ? The way is to put the previous user Back up the table , Then delete , I created one of the above operations alluser surface , Just put this alluser Change the table name of the table to user That's it |
Two 、INSERT_METHOD There are three different ways
| INSERT_METHOD=FIRST | Insert into the first table |
| INSERT_METHOD=LAST | Insert into the last table |
| INSERT_METHOD=NO Or default | Cannot perform insert operation |
3、 ... and 、MYSQL Brief description of various engines
show engines;-- Query all engines
![]() |
| English description | Engine applicable scenario | Create table statement | Data storage files |
| InnoDB | 5.5 After version Mysql The default database for , The preferred engine for transactional databases , Support ACID Business , Support row level locking | ENGINE=InnoDB | .frm .ibd |
| MyISAM | Has a higher insert , Query speed , But does not support Business | ENGINE=MyISAM | .frm .MYD .MYI |
| MRG_MYISAM | There will be a certain number of MyISAM The watch is united into a whole , It's useful for very large-scale data storage | ENGINE=MRG_MYISAM | .frm .MRG |
| MEMORY | All the data is put in the memory of the storage engine , Has extremely high insertion , Update and query efficiency . But it will occupy the memory space which is proportional to the amount of data . And its content will be in Mysql Lost on reboot | ENGINE=MEMORY | .frm |
| ARCHIVE | Ideal for storing large amounts of independent , Data as a historical record . Because they are not often read .Archive With efficient insertion speed , But its support for query is relatively poor | ENGINE=ARCHIVE | .frm .ARZ |
mysql Data storage path

版权声明
本文为[pureluckyfish]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231406486556.html
边栏推荐
猜你喜欢

星界边境Starbound创意工坊订阅的mod的存放路径

OpenStack命令操作

线程组ThreadGroup使用介绍+自定义线程工厂类实现ThreadFactory接口

How QT designer adds resource files

Wechat applet positioning and ranging through low-power Bluetooth device (2)

squid代理

RecyclerView高级使用(一)-侧滑删除的简单实现

MYSQL 主从同步避坑版教程

Three point positioning based on ibeacons (wechat applet)
Jira截取全图
随机推荐
Some good articles on pthread multithreading
Visio画拓扑图随记
VMware15Pro在Deepin系统里面挂载真机电脑硬盘
Use of WiFi module based on wechat applet
Indoor and outdoor map switching (indoor three-point positioning based on ibeacons)
JDBC和servlet写CRUD的接口总结
mysql 5.1升级到5.66
HyperMotion云迁移完成阿里云专有云产品生态集成认证
openstack理论知识
数据库DbVisualizer Pro报文件错误,导致数据连接失败
VMware Workstation 无法连接到虚拟机。系统找不到指定的文件
关于Jmeter启动闪退问题
Wechat applet input hidden and inoperable settings
RecyclerView细节研究-RecyclerView点击错位问题的探讨与修复
教育行业云迁移最佳实践:海云捷迅使用HyperMotion云迁移产品为北京某大学实施渐进式迁移,成功率100%
postman批量生产body信息(实现批量修改数据)
ActiveMQ Basics
GFS分布式文件系统(理论)
mysql 5.1升级到5.69
MYSQL一种分表实现方案及InnoDB、MyISAM、MRG_MYISAM等各种引擎应用场景介绍
