当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
JSP学习2
RobotFramework 之 用例执行
Wechat applet input hidden and inoperable settings
Visio画拓扑图随记
帆软报表设置单元格填报以及根据值的大小进行排名方法
Detailed tutorial on the use of smoke sensor (mq-2) (based on raspberry pie 3B +)
mysql查询库大小
云迁移的六大场景
在MAC上安装mysql
mysql锁数据库锁
RobotFramework 之 公共变量
Use of WiFi module based on wechat applet
数据库DbVisualizer Pro报文件错误,导致数据连接失败
Multiple inheritance virtual base exercises
elk安装
Idea控制台乱码解决
预览CSV文件
JDBC和servlet写CRUD的接口总结
帆软中单元格中隔行变色以及数量大于100字体变大变红设置
Indoor and outdoor map switching (indoor three-point positioning based on ibeacons)










