常见mysql优化 面试题

本文探讨了MySQL的优化策略,包括存储引擎的选择、索引优化、查询优化和分区策略。重点介绍了InnoDB存储引擎的特点和优势,强调了行级锁和事务处理对并发性能的影响。同时,讲解了如何创建和删除索引,以及何时应避免使用索引。此外,还提到了全文索引、查询缓存和分区等高级优化技术。

优化哪些方面

1.表设计上

       范式,存储引擎,字段类型

2.功能上

       索引,缓存,分区

3.sql语句上

       合理sql,经验

4.架构上

       主从复制,负载均衡,读写分离

 

存储引擎

存储引擎是真正存储数据的地方

Mysql 5.5

1 不支持事务

2 表级锁

3 数据和索引是分开存储

4  insert ,select 适合高速插入和检索。(bbs,博客)

5 可压缩

6 全文索引(全文搜索)full index

快 糙 猛  php  mysql

压缩

 

 

 

INnodb

*************************** 8. row ***************************

      Engine: InnoDB

  1. 事务处理
  2. 行级锁  并发性
  3. 按照主键排序
  4. 外键,维护数据完整性  (逐渐淡化)
  5. 考虑CPU效率和处理大数据的最佳性能
  6. 数据和索引一块存储
  7. 5.6.4开始支持全文索引

 

Innodb表的文件

ibdata1  这是所有的innodb表的表空间文件  

开启这个选项(mysql 5.6自动开启)

mysql> show variables like 'innodb_file_per_table%';

+-----------------------+-------+

| Variable_name         | Value |

+-----------------------+-------+

| innodb_file_per_table | ON    |

+-----------------------+-------+

1 row in set (0.00 sec)

 

 

锁的概念

出现争夺资源。

读锁.    共享锁.   一个进程在读取某表的时候,另一个进程也可以读取.但是当前进程仅仅能读取这个表,而不能操作其他表.

写锁.     独占锁.  一个进程在写表时,是不允许另一个进程写,当前进程仅仅能操作这一个表.

 

锁的范围,精细程度上。

Myisam表是表级锁。    Innodb是行级锁。

表级锁:  开销小,加锁时间短。

行级锁:相反。

 

Myisam和innodb的比较

Innodb:数据完整性,并发性好。事务,且是默认表引擎

适合银行转账,等数据安全要求高的应用

  • Myisam:压缩存储,适合 insert和select多的应用,博客,BBS等
  • 高速并发插入,
  • 压缩:
  • 压缩后的数据
  • 压缩后,不能再对表进行写操作
  • 解压缩

除非考虑到innodb不支持的特性,否则就优先选择innodb存储引擎。

其他的存储引擎

  • Archive
    • 归档型。  Insert  select 日志
  • Memory
    • 内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值