mysql组件:
1、连接池:用于分配给用户连接数据库
2、sql接口:将sql语句传递给mysl服务
3、管理单元:mysql自己提供的管理命令
4、分析器:用于分析语法以及确认用户权限
5、优化器:对sql进行优化,从而节省资源
6、存储引擎:不同的存储引擎提供不同的功能以及不同的存储方式
7、文件系统:mysql物理存储
查看存储引擎信息:(不同的mysql版本,默认的存储引擎可能不同)
mysql> show engines; #查看当前数据库支持的存储引擎
mysql> show variables like "%verison%" #查看mysql版本
mysql> show create table a; #查看表a的创建信息,包括存储引擎
配置存储引擎:
1、修改服务器存储引擎:
mysql> SET default_storage_engine=MyISAM; #通过命令行修改,临时有效
vim /etc/my.cnf #修改配置文件,永久有效
[mysqld]
...
default_storage_engine=MyISAM #修改存储引擎为myisam,默认是的innodb
2、创建表时指定表的存储引擎:
create table db1.table1(
id int,
name char(10)
) engine = innodb; #指定db1下的table1表的存储引擎为innodb
3、修改表的存储引擎:
alter table db1.table1 engine = myisam
目前常用存储引擎myisam和innodb的比较:
myisam:
支持表级锁,不支持事务,不支持外键
表文件:
.frm表结构
.MYI索引
.MYD数据
innodb:
支持行级锁,支持事务,支持外键
表文件:
.frm表结构
.ibd数据
事务日志:
ibdata,ib_logfile
mysql锁机制:
粒度:
表级锁:对整个表进行加锁
行级锁:仅对访问的行进行加锁
类型:
读锁(共享锁):支持读并发,可以多个线程读,在读的同时不能写
写锁(互斥锁):上锁期间其他线程不能读写
查看当前锁状态:
show status like "%table_lock%"
事务特性:
A-原子性:一个操作的整体,要么全部成功,要么全部失败
C-一致性:事务之前所有用户看到的数据是一致的,事务之后所有用户看到的数据也是一致的
I-隔离性:事务的操作是相互隔离、互不影响的
D-持久性:一旦事务提交,永久改变表中数据
写总结的第四十五天!!!