文档章节

mysql面试题

陈栋
 陈栋
发布于 2016/04/05 07:51
字数 1417
阅读 129
收藏 3

0.mysql工作原理:查看原文博客:http://blog.itpub.net/26435490/viewspace-1133659/

 MYSQL支持事务吗?  在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。  但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,


1,问mysql中varchar与char的区别以及varchar(50)中的30代表的涵义。

(1)varchar与char的区别

        char是一种固定长度的类型,varchar则是一种可变长度的类型

(2)varchar(50)中50的涵义

         最多存放50个字节

(3)int(20)中20的涵义

         int(M)中的M indicates the maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255.

(4)为什么MySQL这样设计?

2,问了innodb的事务与日志的实现方式。 

(1)有多少种日志

错误日志:记录出错信息,也记录一些警告信息或者正确的信息

慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。

二进制日志:记录对数据库执行更改的所有操作

  查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。


3,sql优化。

(1)explain出来的各种item的意义

(2)profile的意义以及使用场景。

(3)explain中的索引问题。



4.

问了下mysql数据库cpu飙升到500%的话他怎么处理?

(1) 没有经验的,可以不问

(2)有经验的,问他们的处理思路

5.

备份计划,mysqldump以及xtranbackup的实现原理,

(1) 备份计划

(2)备份恢复时间

(3)备份恢复失败如何处理

6.

 innodb的读写参数优化

(1)读取参数,global buffer pool以及 local buffer

(2)写入参数

(3)与IO相关的参数

(4)缓存参数以及缓存的适用场景


7.SQL标准定义的四个隔离级别为:

read uncommited

read committed

repeatable read

serializable



Read Uncommitted(读取未提交内容)

      在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

Read Committed(读取提交内容)

      这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

Repeatable Read(可重读)

      这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control 间隙锁)机制解决了该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题。

Serializable(可串行化)

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

       

对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在:

1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。

2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。

3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。

不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差.


8.表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问

(1)您 是选择拆成子表,还是继续放一起?
拆成子表

(2)写出您这样选择的理由?
1   提高检索效率


9.MyISAM 与innodb的区别

 问5点不同

                        MyISAM                  Innodb

事物支持 :   不支持                     支持

锁的粒度:     table                      Row

存储容量:    没有上限               64TB

哈希索引 :   不支持                       支持

全文索引:   支持                         不支持

外键:            不支持                    支持


本文转载自:http://blog.itpub.net/26435490/viewspace-1133659/

陈栋
粉丝 0
博文 44
码字总数 14858
作品 0
益阳
高级程序员
私信 提问

暂无文章

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
15分钟前
3
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
3
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
11
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部