MySQL
MySQL基本认识
mysql是单进程多线程,每个进程在电脑上能使用的内存最大是有限制的,32位系统mysql最大使用2.7g
表结构
所有的表都由表结构数据和表数据组成
- MyISAM:
1. 由下面三个文件组成
.frm:表结构文件
.MYD:表数据文件
.MYI:表索引文件
2. 不支持事务,支持表锁
- InnoDB:
- 默认每个表都有一个表结构定义文件,所有表的数据都是放在同一个表空间的文件当中。
- 建议 定义InnoDB的每个表的数据都放在一个单独的表空间文件中,修改属性innodb_file_per_table
- 由下面两个文件组成
.frm:结构文件
.ibd:表空间(表数据和表索引) - 支持事务、支持行锁
常用指令
- SHOW TABLE STATUS LIKE ‘t_user’;
- SHOW ENGINES;
- show indexes from tableName
- show global variables 全局变量
- show session variables会话变量
- how variables like’autocommit’
数据类型
- varchar:最大存65535个字符即2个字节,每个字节都需要一个结束符占据一个空间
- char:最大存255个字符,char(5)如果存储不够5个字符,左边会补空格。可以在char上索引整个字段
- TINYINT:存储一个字节,即最大存储0至255或者-127至127,至于TINYINT(4)4只是控制的展示
- SMALLINT:占用2个字节
- MEDIUMINT:占用3个字节
- INT:占用4个字节,最大存2的32次方-1
- BIGINT:占用8个字节,最大存2的64次方-1
- FLOAT:占用4个字节
- DOUBLE:占用8个字节
- DECIMAL:
- DATE:占用3字节
- TIME:占用3个字节
- DATETIME:占用8个字节,从1000-01-01 00:00:00到9999-12-31 23:59:59
- TIMESTAMP:占用4个字节,从1970-01-01 00:00:00到2038-01-18 22:14:07
- YEAR:占用1个字节
语句
- TRUNCATE 用来清除表的时候,会重置id的计数器
- select * from users limit 10000,10。。 Select * From users Where userId >=(Select userId From users Order By userId limit 10000,1 ) limit 10 当偏移量大的时候使用后者性能更高。
mysql执行流程
- 连接管理器接受请求
- 线程管理器创建线程(一个线程响应一个请求,使用线程池)
- 用户模块认证用户
- 如果数据需要加密则建立安全连接
- 缓存模块将结构化数据存储,当同样查询语句进行查询时查询缓存