mysql 存储引擎
1.存储引擎的介绍?
是mysql数据库服务自带的功能程序,是表的处理器,不同的存储引擎有不同的功能数据存储方式。
mysql> create table t32(
-> name char(10),
-> age int(2)
-> )engine=myisam;
mysql> show create table t32;
mysql> show create table t33;
vim /etc/my.cnf
[mysqld]
default-storage-engine=存储引擎名
systemctl stop mysqld
systemctl start mysqld
show engines;查看
常用存储引擎的特点
myisam特点
独享表空间
表。frm 表结构 desc 表
表 MYI 表索引
表。MYD 表数据 select * from 表;
表 行级锁( 对表访问时,只给被访问的行加锁)
不支持事务,事务回滚,外键
锁 解决并发访问冲突问题。
查询操作 select * from 表;
写操作(insert delete update)
锁粒度
表级锁:一次直接对整张表进行加锁。
行级锁只锁定某一行。
页级锁:对整个页面(Mysql管理数据的基本存储单位)进行加锁。
锁类型:
1.写型锁:(互斥锁、排它锁):是独占锁,上锁期间其他线程不能读表或写表。
2.读型锁(共享锁):支持并发读。
InnoDB存储引擎特点
支持表级/行级锁定。
支持事务,事务回滚,支持外键
支持表空间
相关表文件 frm,ibd,
事务:一次数据访问从开始到结束的过程。
事务回滚: 访问过程中任意一步失败,把操作恢复到,操作之前的状态。
4.建表时如何决定表使用的存储引擎
处理写操作多的表适合用INNODB存储引擎
接收读操作多的表时候使用Myisam存储引擎。
事务日志文件
nt ~]# cd /var/lib/mysql
[root@client mysql]# ls
[root@client mysql]# du -sh ib_logfile*
ib_logfile1
ib_logfile0
ibdata1
mysql>create database userdb;
mysql> create table userdb.user(
-> name char(30),
-> password char(1),
-> uid int(2),
-> gid int(2),
-> comment varchar(50),
-> homedir varchar(60),
-> shell char(30),
-> index(name)
-> );
数据导入:把系统文件的内容存储到数据库服务器的表里。
mysql> show variables like"secure_file_priv";
mysql> system ls /var/lib/
mysql>system cp /etc/passwd /var/lib/mysql-files/ 拷贝
mysql> system ls /var/lib/mysql-files
mysql> load data infile
-> “/var/lib/mysql-files/passwd”
-> into table userdb.user
-> fields terminated by “:”
-> lines terminated by “\n”;
mysql> alter table userdb.user add id int(2) zerofill primary key auto_increment first; 增加行号。
mysql> select * from userdb.user;
更改搜索目录
[root@web1 ~]# vim /etc/my.cnf
ecure_file_priv="/mydata" 导入时搜索目录
[root@web1 ~]# mkdir /mydata
[root@web1 ~]# chown mysql /mydata/
[root@web1 ~]# setenforce 0
[root@web1 ~]# cp /etc/passwd /mydata/
[root@web1 ~]# systemctl stop mysqld.service
[root@web1 ~]# systemctl start mysqld
mysql> show variables like “secure_file_priv”
-> ;
mysql> alter table userdb.user
-> drop id; 删除行号。
重新导入数据。
mysql> load data infile
-> “/mydata/passwd”
-> into table userdb.user fields terminated by “:”
-> lines terminated by “\n”;
mysql> select name,uid,gid from userdb.user limit 3 into outfile “/mydata/a.txt”;