本文承接上文:Java研发岗位面试归类A(附答案): http://www.cnblogs.com/wp5719/p/5870243.html
答案自己网上找的,如有纰漏或错误,烦请指教。
七.数据库MySql
1.MySql的存储引擎的不同.
MyISAM:拥有较高的插入,查询速度,但不支持事务.
InnoDB:5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定.
BDB:源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性.
Memory:所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失.
Merge:将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用.
Archive:非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差.
Federated:将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用.
Cluster/NDB:高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用.
CSV:逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继.谈谈MySQL两种存储引擎: http://www.cnblogs.com/kevingrace/p/5685355.html
2.单个索引、联合索引、主键索引.
3.Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解).
参考答案:http://blog.csdn.net/ahjxhy2010/article/details/50540500
MySQL优化分库分表: http://www.4wei.cn/archives/1001958
4.分表之后想让一个id多个表是自增的,效率实现.
MySQL分表自增ID解决方案: http://www.ttlsa.com/mysql/mysql-table-to-solve-the-increment-id-scheme/
MySQL分库分表环境下全局ID生成方案: https://my.oschina.net/u/142836/blog/174465
5.MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离.
MySql实现主从热备和读写分离: http://blog.csdn.net/sanjay_f/article/details/48916171
6.常用SQL语句.
7.索引的数据结构,B+树.
B+ Tree的由来、数据结构、基本操作以及数据库索引的应用: http://www.cnblogs.com/yanghuahui/p/3483047.html
B-树和B+树的应用:数据搜索和数据库索引: http://blog.csdn.net/hguisu/article/details/7786014
8.事务的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题.
9.数据库的锁:行锁,表锁;乐观锁,悲观锁.
10.数据库事务的几种粒度.
11.关系型和非关系型数据库区别.