解析:
MySQL 服务器通过权限表来控制用户对数据库的访问,权限表存放在 mysql 数据库里,由
mysql_install_db 脚本初始化。
这些权限表分别 user,db,table_priv,columns_priv 和 host。下面分别介绍一下这些表的结
构和内容:
user 权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
db 权限表:记录各个帐号在各个数据库上的操作权限。
table_priv 权限表:记录数据表级的操作权限。
columns_priv 权限表:记录数据列级的操作权限。
host权限表:配合 db 权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表
不受 GRANT 和 REVOKE 语句的影响。
MySQL 的 binlog 有有几种录入格式?分别有什么区别?
解析:
有三种格式,statement,row 和 mixed。
statement 模式下,每一条会修改数据的 sql 都会记录在 binlog 中。不需要记录每一行的
变化,减少了 binlog 日志量,节约了 IO,
提高性能。由于 sql 的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还
有一些使用了函数之类的语句无法被记录复制。
row 级别下,不记录 sql 语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一
行的改动,基本是可以全部记下来但是由于很多操作
,会导致大量行的改动(比如 alter table),因此这种模式的文件保存的信息太多,日志量太大。
mixed,一种折中的方案,普通操作使用 statement 记录,当无法使用 statement 的时候
使用 row。
此外,新版的 MySQL 中对 row 级别也做了一些优化,当表结构发生变化的时候,会记录语
句而不是逐行记录。
解析:
索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着
对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助
快速查询、更新数据库表中数据。
索引的实现通常使用 B 树及其变种 B+树。
更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成
目录。索引是一个文件,它是要占据物理空间的。
解析:
索引的优点:
- 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
- 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引的缺点:
- 时间方面:创建索引和维护索引要耗费时间.
具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维
护,会降低增/改/删的执行效率;
- 空间方面:索引需要占物理空间。
解析:
主键索引:数据列不允许重复,不允许为 NULL,一个表只能有一个主键
唯一索引:数据列不允许重复,允许为 NULL值,一个表允许多个列创建唯一索引
可以用:ALTER TABLE table_name ADD UNIQUE(column);创建唯一索引
可以用:ALTER TBALE table_name ADD INDEX index_name(c1,c2,c3);创建唯一组合索
引
普通索引:基本的索引类型,没有唯一性的限制,允许为 null 值
可以通过 ALTER TABLE t1 ADD INDEX in_name1(c1);创建普通索引
可以通过 ALTER TABLE t2 ADD INDEX in_name(c1,c2,c3)L 创建组合索引
全文索引:是目前搜索引擎使用的一种关键技术
可以用 ALTER TABLE t1 ADD FULLTEXT(c1);创建全文索引