最近在看mysql 记录了一些东西 有需要的可以看下

2019-05-28  本文已影响0人  numlock272

mysql篇

1:mysql数据库优化

1):表涉及要合理(符合3NF 3范式)

1NF:表中的记录具有原子性即每列不可再拆分

2NF:表中的记录要是唯一的不能存在多条一模一样的数据 通常涉及主键保证唯一

3NF:表中不要存在冗余数据即可以由一个字段推到出另一个字段

2):添加适当的索引(index)(普通索引、主键索引、唯一索引、全文索引)

3):分表技术(水平分割、垂直分割)

4):读写分离

5):存储过程(模块化编程可以提高速度  因为预先编译好的sql,但不利于管理)

6):对mysql配置优化(配置最大并发数my.ini、调整缓存大小)

7):mysql服务器硬件升级

8):定时清除不需要的数据,定时进行碎片整理(MYISAM引擎)

9):sql语句优化

2:mysql 存储引擎

show engines; 显示mysql支持的存储引擎

MyISAM              1、不支持事物处理  不支持外键

2、查询和添加的效率很高

3、碎片很多

4、表锁 锁住的是整个表 效率高

5、支持全文索引

optimize table tablename;进行碎片处理

常用  论坛

innodb 1、支持事物

2、行锁  锁住的是一行 更细度

用来保存比较重要的数据

memory 数据频繁改动、而且不需要在数据库中永久保存

session入库

3:mysql慢查询

show status;

常用

show status like 'uptime';

show status like 'com_select';

show status like 'com_insert';

show status like 'connections';查看连接数

show status like 'slow_queries';显示慢查询次数

show [session|global] status like 'com_insert'; 默认不写是session  想看mysql启动至现在的情况使用global

show variables like 'long_query_time';显示当前慢查询时间

set long_query_time=1;修改慢查询时间单位 秒  默认10秒

安全模式 慢查询启动

设置方法

方法一:全局变量设置

将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log='ON';

设置慢查询日志存放的位置

mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';

查询超过1秒就记录

mysql> set global long_query_time=1;

方法二:配置文件设置

修改配置文件my.cnf,在[mysqld]下的下方加入

[mysqld]

slow_query_log = ON

slow_query_log_file = /usr/local/mysql/data/slow.log

long_query_time = 1

3.重启MySQL服务

service mysqld restart

4:mysql 索引的代价

1:占用磁盘空间

2:对dml操作有影响  变慢

频繁的作为查询条件的字段应该建索引

唯一性太差的不适合建索引  如男女

频繁更新的字段不适合建索引

不出现在where后面的不适合建索引

上一篇 下一篇

猜你喜欢

热点阅读