mysql left now 14_关于MySQL

2ff34e647e2e3cdfd8dca593e17d9b0a.png

具有MySQL索引优化、查询优化和存储优化经验;

具有缓存使用经验,熟悉Redis各种数据结构的使用场景;

有分布式、集群、高并发、高负载、高可用系统

使用MySQL

如何设计web数据库?

使用关系数据库代替普通文件有哪些优点?

关系数据库专门的内置机制是怎么处理并发访问的?

什么是关系数据库?

web数据库的设计和架构是什么?

什么是建模?要考虑什么?

如何避免空间的浪费?

如何确定所获取的数据是最新的?什么是修改不规则?什么是删除不规则?

什么是原子列值?

数据库里面的空值会占用空间么?如何避免浪费空间?

用户在浏览器上查看信息的一个流程?主要历经了哪几个?

如何提高数据库性能?

登录MySQL的指令是什么?远程如何登录?

什么是MySQL权限系统?

最少权限原则是啥?

MySQL提供多个表类型和存储引擎,其中包括一些食物安全的类型这些都是什么??myisam是什么?为什么要用这种存储引擎?什么是存储引擎?

什么是索引?怎样创建索引?

char和varchar的区别?

text和blob的区别?

set和enum的区别?

有哪些常见的数据库系统?他们之间有什么区别?

笛卡尔积是什么?

左关联是干嘛的?

MySQL中的关联类型?

如何分组和合计数据?

如何进行子查询?有没有同等作用的查询sql?哪个效率更高?

子查询的操作符有哪些?

用alter如何对表进行修改?

MySQL

CRUD

JOIN、LEFT JOIN 、RIGHT JOIN、INNER JOIN

UNION

GROUP BY + COUNT + WHERE 组合案例

常用 MySQL 函数,如:now()、md5()、concat()、uuid()等

1:1、1:n、n:n 各自适用场景

了解触发器是什么,说个使用场景

数据库优化手段

索引、联合索引(命中条件)

分库分表(水平分表、垂直分表)

分区

会使用 explain 分析 SQL 性能问题,了解各参数含义

重点理解 type、rows、key

Slow Log(有什么用,什么时候需要)

MSSQL(了解)查询最新5条数据

NOSQLRedis、Memcached、MongoDB

对比、适用场景(可从以下维度进行对比)

持久化

支持多钟数据类型

可利用 CPU 多核心

内存淘汰机制

集群 Cluster

支持 SQL

性能对比

支持事务

应用场景

你之前为了解决什么问题使用的什么,为什么选它?

mysql架构

什么是嵌入式应用?什么是数据仓库?什么是内容索引?什么是分发软件?什么是高可用的冗余系统?什么是联机事务处理系统(OLTP)?

MySQL的存储引擎架构是什么?为什么它可以将查询处理和各类服务器任务与数据的存储/提取相分离?

这种分离特性有啥用?怎么满足的?

服务器是怎样缓存线程的??

安全套接层方式(SSL)是什么方式的连接?

服务器如何验证该客户端是否有权限执行某个具体查询?

什么是优化器?

服务器如何“询问”查询缓存?

缓存是存放在哪里的?

并发控制问题是怎么产生的?

MySQL如何处理并发读取程序?

MySQL如何处理并发写入程序?

什么是读锁?什么是写锁?

什么是事务?

如何回滚事务?

什么是ACID测试?如何确保ACID特性的实现?

什么是幻读问题?什么是脏读?如何解决?

什么是锁竞争?

什么是对最易回滚事务的最大估算?

什么是预写式日志?

事务日志是什么?记录在哪里?为什么速度很快?

什么是活动事务?

非事务型有哪些?特点是什么?

什么叫显式的开始一个事务?

啥是数据定义语言(DDL)命令?

什么是alter table命令?

lock tables是干嘛的?

MySQL中如何设置隔离级?

ANSI标准隔离级是什么?

怎样在事务中混合使用存储引擎?

如果混合使用事务性表和非事务性表(如InnoDB和MyISAM表),假如事务处理一切顺利,结果也会正常,但是如果事务要回滚,那么在非事务性表上做的修改将无法取消,这将导致数据库处于数据不一致的状态,在这种状态下,很难讲数据进行恢复,并且事务会变得很悬。所以为每个表选择正确的存储引擎很重要!那么如何为每个表选择正确的存储引擎呢?

如果在一个非事务性表上进行事务性操作,MySQL通常不会给出警告或者报错信息,有时回滚任务会产生一个警告信息“some nontransactional changed tables couldn’t be rolled back”,但是大多数情况下,操作一个非事务性表不会得到任何提示。

如何自动提交事务?

什么是隐式锁定?

什么是显式锁定?

一个应用从myisam引擎转换到innoDB引擎后,仍然在使用lock tables命令,而这实际是没必要的,因为innoDB已经可以实现行级加锁,为什么这种命令还会引起服务器的性能问题?

LOCKTABLES命令与事务处理之间的交互作用,是比较复杂的,在某些服务器版本上可能会导致产生一些不可预料的行为。因此建议,除非是在一个事务中使用lock tables,同事autocommit模式是被禁止的,否则,无论是赢何种存储引擎,都不要使用lock tables。

多版本并发控制,是怎样和行加锁机制关联使用的?

如何改变myisam表上的指针大小?(调高或者调低)

sql语句中类型ser_agent varchar(255) not null,为什么是255 ?代表啥意思?

为什么有些语言能对性能分析有内嵌的支持功能?怎么做到的?

示例

假设,对于来自中心电话交换机的所有电话呼叫,都要使用MySQL进行实时数据记录(Logging),或者,Apache中已经安装了mod_log_sql模块,可以将web站点的所有访问信息直接记录到表中,那么在这类应用中,速度可能是最重要的设计指标,没人希望数据库因此陷入瓶颈状态,MYISAM引擎和Archive引擎非常适合这类应用,因为他们消耗的系统开销很小,并且支持每秒钟高达数千条记录的插入,另外,PBXT存储引擎可能也很适合这种数据记录应用。

事情看起来可能很简单,不过,如果还要运行报告程序,对记录的数据进行汇总,那么基于这种查询,报告程序可能需要提取大量数据,而这将严重减缓数据记录的插入处理。如果出现这种情况,那该怎么办?

一种解决办法是使用MySQL内置的复制特性,将相关数据克隆岛第二台服务器(从服务器)上,再从服务器上运行那些对时间或CPU要求苛刻的程序,这可以将主服务器腾出手来,继续完成数据插入,同时,从服务器上运行任何查询,都不必担心影响实时的数据记录。

当然,也可以选择在系统低负载阶段,运行相关查询,不过随着应用规模的不断增长,这种策略是不可靠的,无法确保应用稳定运行。

另一个选择是使用合并表。调整应用,不是将所有的数据记录在同一张表里,而是将数据记录在不同表中,表名可以按照年份,原表名和月份区分,例如Web_logs_2008_01然后定义一个合并表,用于相关查询,合并表中包含了需汇总的所有数据。如果要按日或按周进行汇总,策略也是相同的,只需创建含有特定名称的表即可。在这种设计里,汇总程序可以在那些不再需要进行写操作的表上,运行相关汇总查询,而对于当前表中,可以继续不中断的实时记录数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值