1.请用图框的方式大致地描绘出MySQL架构体系.
忽略
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年的规划
答:
阅读(4156) | 评论(1) | 转发(0) |