mysql 求余 优化_mysql优化笔记

mysql优化

1.存储引擎

在创建表的时候我们使用sql语句,Create table tableName () engine=myisam|innodb;

innodb存储引擎,开启独立表空间my.cnf配置文件,行级锁定处理高并发

myisam表级锁定,支持并发插入

Innodb :数据完整性,并发性处理,擅长更新,删除。

myisam:高速查询及插入。擅长插入和查询。

2.字段类型选择

尽量选择整数类型,尽量使用占用空间小(TINYINT用在年龄),固定长度。char代替vchar

尽量把字段设置为NOT NULL,查询的时候,数据库不用去比较NULL值

3.减少数据库操作,需要查询count的时候,可以增加一个字段存储

4.索引

查询数据尽量用索引指定。

5.分区分表

在创建表时,指定分区的选项:

Create table table_name (定义)

Partition by 分区算法 (参数) 分区选项。

例如:Partition by key (id) partitions 5;

分区算法

MySQL提供4种分区算法:取余:Key,hash 条件:List,range 。

KEY 取余 ,按照某个字段进行取余

partition by key(id) partition 5;

Hash 取余,按照某个表达式的值进行取余

partition by hash (month(birthday)) partition 12;

List 条件 ,列表,需要指定的每个分区数据的存储条件。

partition by list (month(birthday)) (

partition chun values in(3,4,5),

partition xia values in(6,7,8),

partition qiu values in(9,10),

partition dong values in(11,12,1,2)

);

Range 条件,范围, 条件依赖的数据是一个条件表达式。

partition by range (year(birthday)) (

partition q_01 less than (1981),

partition q_02 less than (1990),

partition q_03 less than (2000),

partition q_04 less than maxvalue

);

分表

水平分表,创建结构相同的N个表

垂直分表,字段单独存储一张表

比如商品表根据不同商品种类分成不同的表。

6.服务器架构,主从服务器复制,读写分离,负载均衡

一主多从服务器,主服务器负责写数据。从服务器负责读数据。复制功能mysql会自带。

服务器安装mysql proxy

7.sql语句优化:

尽量不用子查询,多表联合操作,而是将复杂的SQL拆分多次执行。

用join代替子查询,不需要在内存中创建临时表

使用UNION连接字段代替建立临时表

使用事务来进行插入操作,用于并发的情况不出错。

尽量不用like,select *,直接指定字段名。

使用外键使关联数据同步操作

8.查询缓存query_cache,开启查询缓存,第二次查询使用缓存,通过语句设置。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值