忽略
2.限定MySQL5.5及以下为例,InnoDB存储引擎与MyISAM存储引擎的区别,至少写四点.
特点 |
MyISAM |
Innodb |
名称 |
Indexed Sequential Access Method(索引顺利访问) |
|
文件构成 |
frm (存储表的定义) MYD (存储数据) MYI (存储索引) 索引文件和数据文件可以放在不同的目录,需要在创建表的时候通过DATA directory和index directory语句指定 |
innodb:有两种存储方式 共享表空间存储:表结构保存在.frm文件中,数据和索引保存在ibdata 多表空间存储:表结构保存在.frm文件中,每个表的数据和索引单独保存在.ibd中 修改innodb_file_per_table【1,0】 |
存储限制 |
有,在5.0版本以前,默认大小只支持4G。取决于OS文件大小的限制,你可以使用SHOW TABLE STATUS语句或myisamchk -dv tbl_name检查表的最大尺寸.myisam支持3种不同的存储格式: 静态表 动态表 压缩表 |
64TB |
事务安全 |
|
支持 |
锁机制 |
表锁 |
行锁 |
B树索引 |
支持 |
支持 |
哈希索引 |
|
|
全文索引 |
支持 |
|
集群索引 |
|
支持 |
数据缓存 |
|
支持 |
索引缓存 |
支持 |
支持 |
数据可压缩 |
支持 |
|
空间使用 |
低 |
高 |
内存使用 |
低 |
高 |
批量插入的速度 |
高 |
低 |
支持外键 |
|
支持 |
数据物理存储 |
按插入数据的顺序存储 |
按照主键集聚存储 |
3.MySQL中控制内存分配的全局参数,有哪些?
public主要包括:key_buffer_size, innodb_buffer_pool_size, innodb_additional_memory_pool_size, innodb_log_buffer_size, query_cache_size
private主要包括:read_buffer_size, sort_buffer_size,join_buffer_size, read_rnd_buffer_size, tmp_table_size
4.请简洁地描述下MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间区别?
READ UNCOMMITED
SELECT的时候允许脏读,即SELECT会读取其他事务修改而还没有提交的数据。
READ COMMITED
SELECT的时候无法重复读,即同一个事务中两次执行同样的查询语句,若在第一次与第二次查询之间时间段,其他事务又刚好修改了其查询的数据且提交了,则两次读到的数据不一致。
REPEATABLE READ
SELECT的时候可以重复读,即同一个事务中两次执行同样的查询语句,得到的数据始终都是一致的。
SERIALIZABLE
与可重复读的唯一区别是,默认把普通的SELECT语句改成SELECT …. LOCK IN SHARE MODE。即为查询语句涉及到的数据加上共享琐,阻塞其他事务修改真实数据。
5. 小题集锦
1>.VARCHAR(N) 或 CHAR(N)中的N含义是:
N代表的是字符个数
2>.若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少(精确到数量级即可):
65535/3
3>.表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问您
是选择拆成子表,还是继续放一起,并且写出您的 理由?
答案:
拆分成子表
理由:
1.读写分离
2.减少数据页拆分和链接
4>.MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的:
A. 数据块
B. 索引值
索引值
选择答案后,告诉我们为什么?
答:
5>.username字段定义为VARCHAR(40)和VARCHAR(200) 有啥区别?
答:
可以存储长度一个是40,一个是200,如果超过255长度就要使用2个字节存储一个字符,这里设置200不知道是什么意思?
6>.MySQL数据库备份方式有那几种(只讨论InnoDB存储引擎),至少写四种。
1.mysqldump
2.xtrabackup
3.直接拷贝数据文件
4.主从复制也算备份一种
6. MySQL复制搭建M->N的过程,请简述各个步骤?(备注:M已经在线跑,N为新安装的MySQL服务器)
1>.mysqldump --single-transaction --master-data=2 导出数据
2>.把dump出来的数据导入到新的mysql服务器
3>.在主库上建立一个复制账号repliaction slave repliaction client
4>.change master to .....
5>.start slave
7. 看图分析(申明:应用程序未有任何版本变更)
1>.图出现什么样的现象,及现象关联性?
2>.通过图分析可能什么原因造成的?
3>.准对分析的原因,告知如何解决
4>.你是怎样思考分析的?
答:
8.SQL语句优化
原SQL语句:
SELECT ID,WAYBILL_NO,EXP_TYPE,PKG_QTY,EXPRESS_CONTENT_CODE,EFFECTIVE_TYPE_CODE
FROM T_EXP_OP WHERE ORDERID NOT IN(SELECT ORDERID FROM T_EXP_OP WHERE AUX_OP_CODE IN ('NEW','UPDATE','DELETE') AND ((OP_CODE IN (176, 162, 171, 131, 136)AND EXP_TYPE IN ('10', '20', '30')) OR (OP_CODE IN (191, 121)AND EXP_TYPE IN ('10', '20')) OR (OP_CODE IN (181, 111)AND EXP_TYPE = '10'))) LIMIT 10;
条件:
T_EXP_OP表主键为BIGINT类型的ID字段,存储引擎为InnoDB,无其他索引
优化后为:
9. 分页SQL语句优化
原SQL语句:
SELECT * FROM test FORCE(idx_m_n) WHERE m=1 ORDER BY n LIMIT 1000,10;
条件:
Test表为InnoDB存储引擎,主键为BIGINT类型的ID字段,二级索引:idx_m_n(m,n)
优化后为:
10. 语句挑错
SQL语句:
SELECT M.columnname……,N.* columnname…..
FROM left_table M LEFT JOIN right_table N
ON M. columnname_join=N. columnname_join AND N. columnname=XXX AND M.columnname=XXX
请问本SQL语句哪里不合理,为啥不合理?
答:
11. [SELECT *] 和[SELECT 全部字段]的2种写法有何优缺点,至少写出四点
1>.
2>.
3>.
4>.
5>.
12. HAVNG 子句 和 WHERE的异同点,至少写出3点
1>.
2>.
3>.
4>.
13. 分布式数据库产品的特点(至少写4条)
1>.
2>.
3>.
4>.
5>.
14. 数据拆分架构 的优缺点(至少写8条)
1>.
2>.
3>.
4>.
5>.
6>.
7>.
8>.
9>.
15. 工作是否还有MySQL疑难至今未解决(备注:有,请简洁描述;若无,请写无)?
答:
16. 你对自己的未来3-5年的规划,以及近期1-2年的规划
答: