1、MySql的存储引擎的不同
答: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
3、Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解)
答:就知道几个名词方法,没有实际实践过。参考: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/
5、MySql的主从实时备份同步的配置,以及原理(从库读主库的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/