Java开发岗位面试题归类汇总八:数据库MySql

时间:2021-05-21 22:09:45

1MySql的存储引擎的不同

答:MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不 同的技术以及配套的相关功能在MySQL中称为存储引擎(也称为表类型)。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

MySql5.5.5之前默认的存储引擎是MyISAM,以后都默认的是Innodb。MySQL支持数个存储引擎作为对不同表的类型的处理器。MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的MySQL存储引擎,除非你配置MySQL默认使用另外一个引擎。

通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。

只有InnoDB存储引擎支持行级锁定,它支持外键。锁包括有行锁定、表锁定和快锁定;事务安全指Mysql事务表支持将批处理当做一个完整任务统一提交或回滚,即对包含在事务中的多条语句要么全执行,要么全部不执行。

 参考:http://blog.chinaunix.net/uid-21411227-id-1826943.html

Innodb和MyISam的区别,参考:http://www.cnblogs.com/bincoding/p/5895706.html

2、单个索引、联合索引、主键索引

答:索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

创建单个索引的语法:create index 索引名 on 表名(字段名)、索引名一般是:表名_字段名

创建联合索引的语法:create index 索引名 on 表名(字段名1,字段名2),对于单个索引,搜索时,只会使用一个索引

联合索引:多列组成的索引,主键索引:建立索引的属性值为主键

MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in,以及某些时候的like(不以通配符%或_开头的情形),理论上每张表最多16个索引。

参考:http://www.2cto.com/database/201001/44464.html

3Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解)

答:就知道几个名词方法,没有实际实践过。参考:http://blog.51yip.com/mysql/949.html

http://www.linuxidc.com/Linux/2012-08/67797.htm

4、分表之后想让一个id多个表是自增的,效率实现

答:参考:http://www.ttlsa.com/mysql/mysql-table-to-solve-the-increment-id-scheme/

5MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离

答:整体上来说,复制有3个步骤:  

master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

slave将master的binary log events拷贝到它的中继日志(relaylog);

slave重做中继日志中的事件,将改变反映它自己的数据。

http://blog.csdn.net/hguisu/article/details/7325124

6、写SQL语句。。。

答:创建数据库CREATE DATABASEwangxin;增删查改

    创建一张表:CREATE TABLE form(

usename VARCHAR(20) ,

number INT,

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

)ENGINE=INNODB ;

CREATE UNIQUE INDEX index_username ON form

增加:INSERT INTOform(usename ,number,id) VALUES('wangx',90,0);

删除:DELETE FROM form ;

查找:SELECT * FROM form;

修改:UPDATE  form SET usename='ww' WHERE id=1;

7、索引的数据结构,B+

答:http://blog.csdn.net/kennyrose/article/details/7532032

8、事务的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题

答:原子性:指事务是一个不可分割的工作单位,要么全部发生,要么全部不发生

一致性:从一种状态到另一种状态保持一致,即转账前后的总金额不变

隔离性:多线程的安全问题,当多个用户访问数据库时,数据库为每个用户开启一个事务,阻止其他事务干扰。脏读、不可重复读、幻读

持久性:一个操作一旦提交,除非有其他的事务修改,则不会发生改变

9、数据库的锁:行锁,表锁;乐观锁,悲观锁

答:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。

乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。不能解决脏读问题

参考:http://www.jb51.net/article/50047.htm

10、数据库事务的几种粒度;

答:表、行、属性等(自己找)

11、关系型和非关系型数据库区别

答:查询速度:nosql(非关系型)数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。 

存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。

参考:http://blog.csdn.net/xuanjiewu/article/details/48241045

http://blog.csdn.net/robinjwong/article/details/18502195/