主流的数据库软件都有哪些?开原可以跨平台的数据库都有哪些?
甲骨文:orcale
IBM:DB2
微软:SQL server
开原的可以跨平台的:
Mysql:开源切跨平台; Orcale DB2:跨平台不开源
SQL server :不跨平台,不开源;
mysql的服务进程叫什么名字?端口是多少? 默认数据库的目录?
进程名:mysqld 端口:3306 默认目录:/var/lib/mysql
mysql默认的三个库名叫什么名字?哪个库的数据不占磁盘空间?
mysql ,test , information_schema
information_schema:不占磁盘空间,存在内存里面。
请列出mysql的常用数据类型?写出定义这些数据类型所定义的关键字?
数值类型:int (整数性)、float (浮点型)
玫举类型:set 、 enum
字符类型:char、varchar
日期时间类型:time、year、datetime
索引的优点和缺点?默认保存索引信息的是哪个文件?
优点:索引像一本书的目录,可以加快查询的速度;
缺点:会降低插入、更新表记录数据的速度;
索引信息默认保存在表名.MYI的文件中。
请简述在表中创建外键字段要满足哪些条件?
1.表类型必须都是Innodb存储引擎;
2.表的外键字段的类型要明确匹配;
3.被参照的字段要有明确的索引。
简述mysql的结构体系?每个组件都有什么作用?
连接池:内存检查,缓存检查,进程数的限制
SQL接口:用户通过sql客户端发来的命令,由sql接口接收,执行sql操作。(DML操作语言:查询,修改,升级数据。DDL数据操作语言:创建新的库,新的索引,创建新的用户);存储过程,视图触发器。
分析器:分析数据库的查询语句、数据处理、对象的访问权限;
优化器:优化访问路径,生成执行树;
缓存缓冲器:查询结果的缓存;
存储引擎:用来管理存储的文件系统,讲逻辑结构转化为物理结构的程序,不同的存储引擎有不同的存储方式和功能;
管理工具:负责数据的备份,回复,安全,移植,集群,这些管理用具一般和文件系统打交道,不和mysql-server打交道,都是通过命令去执行;
物理存储设备(文件系统)。
mysql数据库访问的执行过程?
1.客户端发起请求 2.服务器开启线程相应客户端的请求
3.客户端发起sql查询语句
4.缓存查询,先记录sql语句,查看是否有缓存,有缓存直接在缓存提出,如果缓存没有则进入分析器
5.分析器:进行分析sql命令是否正确,将客户的命令进行切换,将每个词用空格隔开,获得用户要查询的表,内容,用户权限
6.优化器:执行路径的选择,生成执行树。
7.存储引擎:管理存储的文件系统;不同的存储引擎有不同的功能和存储方式。
简述mysql数据库中查询,插入,更新,删除表记录的指令格式?
插入记录的指令格式:insert into 表名(字段名) values(key值)
查询记录的指令格式:select 字段名 from 表名 where 条件
更新表记录的指令格式:update 表名 set 字段=更新的key值;
删除表记录的指令格式:delete from 表名 where 条件
简述用户授权命令的格式?
grant 权限 on 库.表 to 用户名@访问地址 identified by 密码 with grant option(是否给用户授权的权限);
简述mysqldump 备份数据库时库名的表示方式?
--all-database :表示所有库 或 -A
数据库名 :表示单个库
数据库名.表名:表示单个表
-B 数据库1,数据库2,.... :表示备份多个库
什么是mysql集群?
mysql集群是一个无共享的,分布式节点架构的存储方案。
建造集群的目的是:提高数据的容错性和高可用性能。
mysql集群和mysql主从的区别?
集群:包含成员,消息,冗余,故障转移等功能;
主从:也可以理解为数据的复制,也就是一个服务器想另一个服务器发送消息的功能。
mysql集群的特点?
是为了实现最高性能,达到高可用性和冗余等目标。主库对从库进行数据复制。数据复制采用的是同步机制,主库数据同步到其他从库数据节点上,数据在多个数据节点保存。
mysql集群有一些创建高可用系统的专用功能,主要包括哪些?
节点回复、日志、检查点、系统恢复、热备份恢复、无单点故障、故障转移,分区、联机操作。
mysql中myisam和innodb的区别?
存储限制: myisam支持256G、 innodb支持64G
事务: myisam不支持事务 innodb支持事务
索引: 两者都支持
锁粒度: myisam支持标级锁 innodb支持行级锁
数据压缩: myisam支持数据压缩 innodb不支持数据压缩
外键: myisam不支持外键 innodb支持外键
什么是读写分离?
读写分离就是让主库处理事务性查询,从库处理select查询。数据库复制被用来把事务性查询导致的数据变更同步到从库,当然,主库也可以select查询。
读写分离最大的作用就是缓解服务器的压力。
读写分离的好处都有哪些?
增加冗余;
缓解服务器的压力;增加机器的处理能力;
对于读应用较多的,应用读写分离是最好的,可以确保写的服务器压力更小,而读的服务器又可以接受点时间上的延迟。
读写分离提高性能的原因?
1.物理服务器增加;负荷增加;
2.主库和从库只负责自己的写和读操作,极大的缓解了X锁和S锁;
3.从库可以配置为myisam引擎,提高读的性能及节省系统开销;
4.从库同步主库的数据和主库直接写还是有区别的,从库是通过主库发来的binlog来同步的,但是呢,区别在于主库向从库发送binlog是异步的,所以同步数据也是异步的。
5.读写分离适用于读的操作应用较多的场景,如果只有一台服务器,当select很多时,update和delete会被select的访问堵塞,这时就需要等待select结束,并发性能不高;当读和写比例相近时,可以设置成互为主从。
6.分摊读写,这个就是拿机器数量去换性能。
7.增加冗余,提高容错,当主故障时,可以迅速地把从切换为主来使用。
char和varchar的区别?
char:是定长变量 varchar:是可变长的变量
mysqldump和xtranbackup的实现原理?备份恢复时间?
mysqldump:采用了sql级别的备份机制,是把数据导成sql脚本文件,在不同的mysql版本升级之间较合适;
xtranbackup:是innodb的hotbackup工具,在启动的时候会复制所有的日志文件,同时会启动一个后台进程,监视事务日志,并且从事务日志中复制最新的修改。因此,在xtranbackup启动的开始就将每个事务日志的修改都记录了下来。
mysqldump:备份恢复的时间都很慢,任何数据的更新和变化都会被挂起,不适用于生产中的备份,
xtranbackup:备份和恢复的时间比nmysqldump快,但是会锁表。
mysql中的innodb的行锁,是通过加载什么上面完成的?
是通过加在索引上来实现的。
mysql的数据备份方式?
完全备份、增量备份、差异备份
mysql的主从复制原理?
分为同步复制和异步复制,实际复制架构中大部分为异步复制。
复制过程:1.slave上的IO进程连接到master,并请求从binlog日志的指定位置复制之后的日志内容;
2.master接到来自slave的IO请求后,通过IO的请求读取binlog日志的指定位置之后的日志内容,返回给slave的IO线程,在返回信息中还包括了本次master的binlog的文件名称以及binlog日志的位置;
3.slave的接收到IO进程的返回信息后,将日志信息依次添加到relay-log的最末端,
4.sql进程检测到relay-log增加了新内容,解析成sql命令,在本身执行;
同步复制:把数据都load到内存中,对内存的要求非常大,实施性不大。