本文介绍: 复制过程一个服务器充当主服务器,而一个多个其它服务器充当从服务器。当一个服务连接服务器时,它通知主服务器在日志读取最后一次成功更新位置。从服务器接收从那时起发生的任何更新然后封锁并等待主服务器通知新的更新默认采用基于语句复制,一旦发现基于语句的无法精确复制时,就会采用基于行的复制。基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍.的数据分布多个系统上去,这种分布的机制,是通过将 Mysql。别,它确保同一事务多个实例并发读取数据时,会看到同样的数据

目录

Mysql篇

1、数据库的三范式是什么?

2、有哪些数据库优化方面的经验?

 3、简述常用的索引有哪些种类?

4、在Mysql数据库中索引的工作机制是什么?

5、Mysql的基础操作命令

6、Mysql的复制器原理以及流程 

7、Mysql支持那些复制类型?

8、Mysql中MyISAM和InnoDB的区别

9、Mysql中VARCHAR与CHAR的区别以及VARCHAR(50)中的50代表的含义 

10、Mysql中的InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别


Mysql

1、数据库的三范式什么

  1. 第一范式1NF):字段具有原子,不可再分。(所有关系数据库统都满足第一范式数据库表中字段都是单一属性的,不可再分)。
  2. 第二范式2NF)是在第一范式1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字主键
  3. 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中包含已在其它表中包含的非主关键字信息
    >所以第三范式具有如下特征>>1. 每一列只有一个>>2. 一行都能区分。 >>3. 每一个表都不包含其他表已经包含的非主关键字信息

2、有哪些数据库优化方面的经验?

  1. PreparedStatement, 一般来说比 Statement 性能高:一个 sql发给服务器去执行,涉及步骤语法检查语义分析编译缓存
  2. 外键约束影响插入删除性能,如果程序能够保证数据完整性,那在设计数据库时就去掉外键
  3. 表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等。
  4. UNION ALL 要比 UNION 快很多,所以,如果可以确认合并两个果集中不包含重复数据且不需要排序时的话,那么就使用 UNION ALL>>UNION UNION ALL 关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 >1. 对重复结果的处理:UNION 在进行表链接后会筛选掉重复的记录Union All 不会去除重复记录>2. 排序处理Union 将会按照字段顺序进行排序;UNION ALL 只是简单的将两个结果合并后就返回

 3、简述常用的索引哪些种类?

  1. 普通索引: 针对数据库创建索引
  2. 唯一索引: 与普通索引类似,不同的就是:MySQL 数据库索引列的值必须唯一,但允许有空值
  3. 主键索引: 它是一种特殊唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。
  4. 组合索引: 为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。即将数据库表中多个字段联合起来作为一个组合索引。

4、在Mysql数据库中索引的工作机制什么

数据库索引,是数据库管理系统中一个排序数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B
树及其变种
B+
树。 

5、Mysql的基础操作命令

  1. MySQL 是否处于运行状态:Debian 运行命令 service mysql status,在 RedHat 运行命令 service mysqld status
  2. 开启或停止 MySQL 服务 :运行命令 service mysqld start 开启务;运行命令 service mysqld stop 停止服务;
  3. Shell 登入 MySQL: 运行命令 mysql -u root -p;
  4. 列出所有数据库:运行命令 show databases
  5. 切换到某个数据库并在上面工作:运行命令 use databasename; 进入名为 databasename 的数据库;
  6. 列出某个数据库内所有表: show tables
  7. 获取表内所有 Field 对象名称类型 :describe table_name

6、Mysql复制原理以及流程 

Mysql
内建的复制功能构建大型,高性能应用程序的基础。将
Mysql
数据分布多个系统上去,这种分布的机制,是通过将 Mysql
的某一台主机的数据复制到其它主机slaves
)上,并重新执行一遍来实现的。
*
复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。 当一个从服务器连接主服务器时,它通知主服务器在日志读取最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。 过程如下
  1. 主服务器把更新记录二进制日志文件中。
  2. 从服务器把主服务器的二进制日志拷贝自己的中继日志replay log)中。
  3. 从服务器重做中继日志中的时间,把更新应用到自己的数据库上。

7、Mysql支持那些复制类型

  1. 基于语句的复制: 在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句。MySQL 默认采用基于语句的复制,效率比较高。 一旦发现没法精确复制时,会自动选着基于行的复制。
  2. 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. mysql5.0 开始支持。
  3. 混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

8、Mysql中MyISAM和InnoDB的区别

  1. 事务支持 > MyISAM:强调的是性能,每次查询具有原子,其执行数度比 InnoDB 类型更快,但是不提供事务支持。 > InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)回滚(rollback)崩溃修复能力(crash recovery capabilities)的事务安全 (transactionsafe (ACID compliant))型表。
  2. InnoDB 支持行级锁,而 MyISAM 支持表级锁. >> 用户操作myisam 表时,selectupdatedeleteinsert 语句都会给表自动加锁,如果加锁以后的表满足 insert 并发的情况下,可以在表的尾部插入新的数据。
  3. InnoDB 支持 MVCC, MyISAM 不支持。
  4. InnoDB 支持外键,而 MyISAM 不支持。
  5. 主键 > MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址> InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个 6 字节主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。
  6. InnoDB 不支持全文索引,而 MyISAM 支持。
  7. 可移植性、备份恢复 > MyISAM:数据是以文件的形式存储,所以跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进操作> InnoDB免费方案可以是拷贝数据文件备份binlog,或者用 mysqldump,在数据量达到几十 G 的时候就相对苦了。
  8. 存储结构 > MyISAM每个 MyISAM 磁盘存储成三个文件。第一文件名字以表的名字开始,扩展名指出文件类型.frm 文件存储定义数据文件扩展名为.MYD (MYData)。索引文件的扩展.MYI (MYIndex)> InnoDB:所有的表都保存在同一个数据文件中(也可能多个文件,或者是独立的表空间文件),InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。

9、Mysql中VARCHAR与CHAR的区别以及VARCHAR(50)中的50代表的含义 

  1. varchar char 区别: char 是一种固定长度类型varchar 则是一种可变长度的类型
  2. varchar(50)50 的涵义 : 最多存放 50 字节
  3. int20)中 20 的涵义: int(M)中的 M indicates the maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255; 

10、Mysql中的InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别

  1. Read Uncommitted读取提交内容>> 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别多少读取提交的数据,也被称之为脏读(Dirty Read)。
  2. Read Committed读取提交内容>> 这是大多数数据库系统的默隔离级别(但不是 MySQL 默认的)。它满足了隔离简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的 commit,所以同一 select 可能返回不同结果。
  3. Repeatable Read(可重读) >> 这是 MySQL 默认事务隔离别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围插入了新行,当用户再读取范围的数据行时,会发现有新的幻影行。InnoDB Falcon 存储引擎通过版本并发控制MVCCMultiversion Concurrency Control 间隙锁)机制解决该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题。
  4. Serializable(可串行化>> 这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争

原文地址:https://blog.csdn.net/tgdmjhf/article/details/134659022

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_28112.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注