数据库和实例
- 数据库: 存储在物理操作系统系统文件或者其他形式文件类型的集合,根据存储引擎的不同,产生的文件可能是frm、MYD、MYI、ibd结尾的文件。(NDB是基于内存的存储引擎,产生的文件存储在内存中)。
- 实例: 数据库实例是真正操作数据库文件的,它是一个应用进程,从架构上来看,它是单进程多线程的。
如果你在Linux上有安装MySQL实例,那么你可以通过以下指令对MySQL数据库的状态进行查看:
ps -ef | grep mysqlId
查看配置文件读取顺序:my.cnf
排序越靠后,权重越高
mysql --help | grep my.cnf
存储引擎
MySQL提供了可插拔式的表存储引擎(注意,存储引擎是针对表结构来说的,很多人习惯性地把存储引擎理解为是数据库级别的行为)
可以通过SHOW ENGINES
查看当前MySQL数据库所支持的存储引擎.
- InnoDB
- InnoDB支持事务,面向OLTP(面向在线事务处理)。
- InnoDB支持行锁与表锁,外键约束,还有区别于MyIsAM的非锁定读,即默认读不加锁。
- InnoDB使用MVCC(多版本并发控制)来保证它在高并发下的性能,并且提供了4种事务隔离级别,默认为REPEATABLE级别。
对于产生幻读问题,InnoDB使用了一种next-key locking的策略来避免幻读的产生。
除此之外,InnoDB提供了插入缓冲、二次写、自适应哈希索引、预读等高可用、高性能的功能。- 聚簇。InnoDB采用聚簇的方式对数据进行存储,无论是数据或者索引,大多数它们都基于B+树而实现(B-树可以理解成规约,但是具体实现为B+树)。
- MyISAM
- MyISAM存储引擎不支持事务,面向OLAP数据库应用.
- 支持全文索引,仅支持表锁.
- MyISAM的缓冲池只缓存索引文件,而不缓存数据文件.
- MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。
- NDB
集群存储引擎,最大的特点是将数据加载到内存中进行检索。但是MySQL5.7中,NDB存储引擎的连接操作仍是在MySQL数据库层完成的。所以连接操作需要巨大的网络开销。
- Memory
Memory存储引擎将表中的数据放在内存中,如果数据库重启或者崩溃,表中的数据将会消失。值得一提的是,Memory是使用Hash索引的,而不是InnoDB中使用的B+树索引。
缺陷: 仅支持表锁,并发性能较差,不支持TEXT和BLOB列类型。
- Archive
只支持INSERT和SELECT操作,支持索引。它使用了zlib算法对行数据进行压缩。基于以上特性,Archive框架非常适合存储日志信息。
TCP/IP
TCP/IP套接字方式是MySQL数据库在任何平台都提供的连接方式,也是网络中使用的最多的一种方式。Server端和Client端通过TCP/IP进行网络通信。
Linux下的连接命令
mysql -h192.168.0.101 -u root -p
MySQL的权限视图
MySQL将用户的账户密码信息存放在user表下.
use mysql;
SELECT host,user,password FROM user;
网友评论