Mysql系列常见面试题(三)
1.Mysql数据表在什么情况下容易损坏?
服务器突然断电导致数据文件损坏,强制关机,没有先关闭Mysql服务等。
2.Mysql有关全校的表都有那几个?
Mysql服务器通过权限表老控制用户对数据库的访问,权限表存放在Mysql数据库里,由Mysql_install_db脚本初始化,这些权限表分为,user,db,table_priv,columns_priv和host。
3.Mysql中有哪几种锁?
MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁。
表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低
行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高
4.数据库三范式是什么?
第一范式(1NF):字段具有原子性,不可分。(所有的关系型数据库系统都满足第一范式数据库表中的字段都是单一属性的,不可再分)
第二范式(2NF)必须先满足第一范式(1NF)的基础上简历起来的,即满足第二范式(2NF)必须先满足 第一范式(1NF).要求数据库表中的每个实例或行必须可以被唯一的区分,通常需要为表加上一个 列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键。
第三范式(3NF),满足第三范式,必须先满足第二范式。简而言之,第三方式:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。>所以第三范式具有如下特征:
4.3.1:每一列只有一个值,4.3.2:每一行都能区分。4.3.3:每一个表都不包含其它表已经包含的非主关键字信息。
5.有哪些数据库优化方面的经验?
分库分表,读写分离。
5.1. 用 PreparedStatement, 一般来说比 Statement 性能高:一个 sql
发给服务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存。
5.2. 有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,
那在设计数据库时就去掉外键。
5.3. 表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等
5.4. UNION ALL 要比 UNION 快很多,所以,如果可以确认合并的两个结
果集中不包含重复数据且不需要排序时的话,那么就使用 UNION
ALL。 >>UNION 和 UNION ALL 关键字都是将两个结果集合并为一
个,但这两者从使用和效率上来说都有所不同。
>5.4.1. 对重复结果的处
理: UNION 在进行表链接后会筛选掉重复的记录, Union All 不会去除
重复记录。
>5.4.2. 对排序的处理: Union 将会按照字段的顺序进行排
序; UNION ALL 只是简单的将两个结果合并后就返回。
6.请简述常用的索引有哪些种类?
普通索引:即针对数据库表创建索引,
唯一索引:与普通索引类似,不同的就是:Mysql数据库索引列的值必须唯一,单允许有空值。
主键索引:它是一种特殊的唯一索引,不允许有空值,一般是在建表的时候同事创建主键索引。
组合索引:为了进一步榨取Mysql的效率,就要考虑建立组合索引,即将数据库表中的多个字段联合起来作为一个组合索引
7.在Msql数据库中索引的工作机制是什么?
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中数据,索引的实现通车使用
B树以及其变种B+树。
8.Mysql基础操作命令
Mysql是否处于运行状态:Debian上运行命令Service Mysql status,在RedHat上运行命令Service Mysqlid status
开启或停止Mysql服务,运行命令Service Mysqlid start,开启服务。运行命令Service Mysqlid stop停止服务。
Shell登入Mysql:运行命令:Mysql -u root -p
列出所有数据库:运行命令 show databases;
切换到某个数据库并在上面工作:运行命令 use databasename;进入名为databasename的数据库;
列出某个数据库内所有的表:show tables;
获取表内所有FieId对象的名称和类型:describe table_name;
9.Mysql的复制原理以及流程。
Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Msql
的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。*复制过程中一个服务器充当主服务器,而一个或者多个其它服务器充当从
服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新,
当一个从服务器连接主服务器时,它通知主服务器在日志中读取的最后一次成功更新的位置。
从服务器接受从那时起发送的任何更新,然后封锁并等待主服务器通知新的更新。过程如下:
-1.主服务器吧更新记录到二进制日志文件中。-2.从服务器把主服务器的二进制日志拷贝到自己的中级日志(replay/log)中。
-3.从服务器重做中级日志中的时间,把更新应用到自己的数据库上。(这样就完成了主从复制,一主多备)
10.Mysql支持的复制类型?
-10.1:基于语法的复制:在主服务器上执行的SQL语句,在从服务器上执行统一的语句。Mysql默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,
会自动选着基于行的复制。
10.2:基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍,从Mysql5.0开始支持。
10.3:混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
11.Mysql中MyISAM与InnoDB的区别?
11.1事物支持>MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提高事物支持。
>InnoDB:提供事物支持事物,外部键等高级数据库功能。具有事物(commit),回滚(rollback)和崩溃修复能力(crash recivery capabilities)的事物安全
(transaction-safe(ACID compliant))型表。
11.2:InnoDB支持行级锁,而MyISAM支持表级锁,
用户在操作MyISAM表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。
11.3:InnoDB支持MVCC,而MyISAM不支持,
11.4:InnoDB支持外键,而MyISAM不支持。
11.5:表主键>MyISAM:允许没有任何所有和主键的表存在,所有都是保存行的地址。
>InnoDB:如果没有设定主键或者非空唯一所有,就会自动生成一个六字节的主键(用户不可见),数据是主索引的一部分,
附加索引保存的是主索引的值。
11.6:InnoDB不支持权威索引,而MyISAM支持。
11.7:可移植性,备份以及恢复>MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可以单独针对某个表进行操作,
>>:InnoDB:免费的方案可以是拷贝数据文件,备份binlog,或者用Mysqldump,在数据量达到几十G的时候就相对痛苦了。
11.8:存储结构:>MyISAM,每个MyISAM在磁盘上存储成三个文件,第一个文件的名字以表的名字开始,扩展名指出文件类型,.frm文件存储表定义。
数据文件的扩展名为.myd(MyData)。索引文件的扩展名是.myi(MYINDEX)。
>InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是第一列的表空间文件),InnoDB表
的大小只受限于操作系统文件的大小,一般为2GB。
12.Msql中的varchar与char的区别以及varchar(50)中的50代表的含义?
:>>12.1:varchar与char的区别,char是一种固定长度的类型,varchar则是一种可变长度的类型。
12.2:varchar(50)中的50的含义:最多存放50个字节,(比如存放了一个2字节的数据,在磁盘当中就会只占用2字节,但是使用char的话,就会定义了1-255字节中的任何一个,都会固定的占用固定字节)
12.3:int(20)中20的含义:int(M)中的M indicates the maximum display width (最大显示宽度)for integer types. The maximum
legal display width is 255.
13.Mysql中InnoDB支持的四种事物隔离级别名称,以及逐级之间的区别?
13.1:Read Uncommited(读取到未提交内容)>> 在该隔离级别,所有事物都可以看到其他未提交事物的执行结果,本隔离级别很少用于实际应用
,因为它的性能也不必其他级别好多少,读取到未提交的数据,也被称之为脏读(Dirty Read)
13.2:Read Commited(读取提交内容) >>这是大多数数据库系统的默认隔离级别(但不是Mysql默认的),它满足了隔离的简单定义:
一个事物只能看见一家提交事物所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事物的其他实例在该
实例处理期间可能会有新的commit,所以同一select可能返回不同的结果。
13.3:Repartable Read(可重复读) >>这是Mysql的默认事务隔离级别,它能确保同一事物的多个特性在并发读取数据时,会看到相同的数据行,不过理论是哪个,这会导致一个另外一个棘手的问题
幻读:(Phantom Read)。简单的说,幻读指当前用户读取某一范围的数据行时,另外一个事物又在该范围内插入新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行,
InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control 间隙锁)机制解决了该问题。
注意:其实多版本知识解决不可重复读问题,而加上间隙锁,(也就是它这里所谓的并发控制)才解决了幻读问题
13.4. Serializable(可串行化) >> 这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个
读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁
竞争。
Mysql系列常见面试题(三)的更多相关文章
- Mybatis常见面试题 三
1.什么是mybatis? (1)mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动.创建连接.创建statem ...
- MySQL数据库常见面试题
什么是存储过程?有哪些优缺点? 存储过程简单来说就是为了以后使用而保存的一条或多条预编译SQL语句,这些语句块像一个方法一样执行一些功能. 优点: 类似于封装,简化操作: 不用反复建立一系列处理步骤, ...
- MySQL 事务常见面试题总结 | JavaGuide 审核中
<Java 面试指北>来啦!这是一份教你如何更高效地准备面试的小册,涵盖常见八股文(系统设计.常见框架.分布式.高并发 ......).优质面经等内容. 本文原发于 MySQL知识点&am ...
- Mysql学习总结(21)——MySQL数据库常见面试题
1. 如何使用SELECT语句找到你正在运行的服务器的版本并打印出当前数据库的名称? 答:下面的语句的结果会显示服务器的版本和当前的数据库名称 mysql> SELECT VERSION(), ...
- 夯实Java基础系列16:一文读懂Java IO流和常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java面试炼金系列 (1) | 关于String类的常见面试题剖析
Java面试炼金系列 (1) | 关于String类的常见面试题剖析 文章以及源代码已被收录到:https://github.com/mio4/Java-Gold 0x0 基础知识 1. '==' 运 ...
- MyBatis 常见面试题总结
1.#{}和${}的区别是什么? 注:这道题是面试官面试我同事的. 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${drive ...
- JDBC常见面试题
以下我是归纳的JDBC知识点图: 图上的知识点都可以在我其他的文章内找到相应内容. JDBC常见面试题 JDBC操作数据库的步骤 ? JDBC操作数据库的步骤 ? 注册数据库驱动. 建立数据库连接. ...
- 整理的最全 python常见面试题(基本必考)
整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...
随机推荐
- Thrift之TProcess类体系原理及源码详细解析
我的新浪微博:http://weibo.com/freshairbrucewoo. 欢迎大家相互交流,共同提高技术. 之前对Thrift自动生成代码的实现细节做了详细的分析,下面进行处理层的实现做详细 ...
- vijos:P1285佳佳的魔法药水
背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水……怎么样才能得到0号药水呢?你要知道佳佳的家境也不是很好,成本得 ...
- xpath技术,用在dom4j中
title: xPath语法应用 tags: xPath,dom4j grammar_cjkRuby: true --- 在dom4j中,会使用到xPath技术. 在项目中导入 jaxen-1.1-b ...
- strTemp.Format ("%.*lf",3,600.0);
CString strTemp; strTemp.Format ("%.*lf",3,600.0); 这句话的含义?求指教 优质解答 这就是一个格式化输出,分号之前的CStri ...
- 将eclipse java程序打包成jar的总结(包括工程中没有引用外部jar包和有引用外部jar包两种情况)
一.当eclispe java工程中没有引用外部jar包时: 选中工程---->右键,Export...--->Java--->JAR file--->next-->填写 ...
- 利用css制作横向和纵向时间轴
Html代码: <div class="container"> <p>原文地址:http://www.cnblogs.com/xiaofeixiang/&l ...
- Updatepanel 中使用 Timer 控件 失去焦点问题
在Update Panel 中 如果使用timer 定时刷新数据,会造成textbox 或者其他控件的焦点丢失问题. 所以 text box 不能和timer 放在同一个Updatepanel 中. ...
- WPF后台修改内容界面不显示问题
通知3部曲:1.Model继承并实现 INotifyPropertyChanged 接口:2.数据集合使用ObservableCollection<T>集合:3.View使用Binding ...
- tcpkill工作原理分析
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 日常工作生活中大家在维护自己的服务器.VPS有时会碰到这样的情况:服务器上突然出现了许多来自未知ip的网络连 ...
- 删除ue4中c++类
http://gad.qq.com/program/translateview/7190281 删除一个C++类 该方法是从UE4的answerhub上摘选的.本教程介绍了从项目中删除一个C++类所需 ...