Mysql采用单进程多线程系统结构,Mysql采用插件结构,将对数据库表的操作和管理交个数据库引擎完成。核心组件如下图:
存储引擎的插件化是Mysql的特色和核心,这位Mysql提供了多样性和多种场景的适应性;
MySql在5.6版本前的默认存储引擎是MyISAM(ISAM是一种算法),但是因为MyISAM不支持事务等原因,InnoDB这个第三方存储引擎被越来越多的人接受后,MySql官方将InnoDB收购后将InnoDB作为默认存储引擎;
存储引擎基于表,而不是数据库!
MySql中存储引擎各有特点和应用场景:
MyISAM:MySql官方推出的默认存储引擎,不支持事务,仅支持表锁,不支持行锁,支持全文索引(中、日、韩文不可以),主要面向OLAP应用,仅cache索引文件,由MYD和MYI组成; InnoDB:现在普遍采用的存储引擎,支持事务,支持行锁,让MySql成为企业级应用的功臣; NDB:集群引擎,类似Oracle的RAC,Share nothing架构(对应Share everything),数据在内存中,主键查找非常快,高可用,高性能,可用添加Data Node,JOIN操作在Mysql层面完成,不是在引擎层面,索引Join的开销很大; Memory:在内存中的引擎,并发性较差;- 基于Tcp、Ip的连接方式:mysql -h 127.0.0.1 -u root -p - 基于Unix套接字:mysql -u root -S /tmp/mysql.socket - named-pipe方式。 查询Mysql的套接字文件位置: SHOW VARIABLES LIKE ‘socket’ ;
Mysql使用一个User表存储每个用户的权限及用户可以通过哪个(哪段)IP来连接访问服务器。
查看引擎:SHOW ENGINE \G; 查询变量:SHOW VARIABLES LIKE ‘socket’ ; 连接:mysql -h 127.0.0.1 -u root -p 套接字方式:mysql -u root -S '/tmp/mysql.socket'; 启动:mysql | mysql_safe 查看配置文件位置:mysql --help | grep my.cnf 排至文件的查找顺序:/etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/mysql/etc/my.cnf 数据库文件存放位置:SHOW variables LIKE 'datadir' \G;