MySQL高级使用和特性

问题:

  • 索引
  • 如何分区
  • 数据库优化?
  • 主从
  • 如何读写分离
  • 如何设计表,如日增百万
  • sql的执行步骤
  • 如何查看索引被使用

【干货】MySQL 5.7 多实例(多进程)配置教程 启动多个进程去取数据,实现并发。

mysql引擎:

如何设计表?
1、根据实际的产品设计
2、抽象
主表 辅表 主表
商品 关系表 品牌

第一范式 第二范式 (必须遵循)
第三范式 反范式

tinyint 类型,男女
smallint 端口
不要用ID作为用户ID,防止被猜出用户数量。
数据转换?

float单精度
bigint*1000,把小数点后三位算出来。

时间戳:1970-01-01
早期做国际化,用时间戳date_format()转化。
但是,生日怎么办? 用datetime
所有的时间类型,均设计为数字类型的。

枚举:ENUM()。

Connection Pool :类似php-fpm,检查连接最大数,用户名等
SQL Interface:SQL/视图等
Parser:检查语法错误
Optimizer:优化查询,判断是否使用索引,left join 可能会被替换为inner join (mysql的优化器做的并不够好)
Cache&buffer

Memory 内存级别
Merge 数据分表(鸡肋,底层使用的是myisam)

文件系统

1. MySQL的体系结构

  1. 什么是体系结构?
    部件+联系(部件之间协同工作)
    了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。--------TechTarget中国原创内容,原文链接地址: http://www.searchdatabase.com.cn/showcontent_57918.htm
  2. MySQL的部件有哪些?
    查看官方网站的逻辑架构图。


    MySQL高级使用和特性_第1张图片
    MySQL逻辑架构图
  3. 各个部件的执行顺序是什么?

2. MySQL的存储引擎

  1. 面试时,一般都会问到myisam和innodb两个存储引擎的区别,你是怎么回答的?

答:读操作多的时候用myisam,innodb支持事务,myisam不支持事务,或许还有别的吧?是不是感觉知道点,但是又没办法完全说清楚。 如果面试官在追问下,为什么myisam读的时候快呢?是不是觉得有点那什么~

这时候如果我们用类比的方法来比较,比如在问到人和人之间的区别是什么的时候,我们一般会从他们的年龄、性别、身高、性格、工作等方面来比较?

同样,myisam和innodb也有这样的类比因素或特征。
我们主要从数据类型、锁、索引、事务四个方面进行比较即可。

  • 数据类型:基本一致,可不比较,但要了解在业务中存储字段时要选择合适的类型;
  • 锁机制
  • 索引
  • 事务

下面会从锁、索引、事务三方面来讲myisam和innodb存储引擎的区别。
1、了解myisam存储引擎的 锁、索引、事务。

2、了解innodb存储引擎的 锁、索引、事务。

3、事务的隔离级别。

  • read uncommitted (未提交读)
  • read committed (提交读)
  • repeatable read (可重复读)
  • serializable(可串行化)

3. MySQL驱动与API


4. MySQL索引


5. SQL语句优化

问题:查询语句select * 比 select id 好吗?为什么?
这里需要了解sql查询语句的 "执行顺序"。比如下面这句,你觉得它的执行顺序是什么:

select * from user u left outer join group g on u.uid=g.uid where status=0 order by sortorder;

6. MySQL分表


7. MySQL主从复制(Master-Slave)、读写分离(Master-Proxy)

MySQL主从复制(Master-Slave)实践


8. MySQL高可用方案

9.MySQL中间件

MySQL高级使用和特性_第2张图片
image

你可能感兴趣的:(MySQL高级使用和特性)