mysql高并发优化

一、Mysql高并发处理

例子1:新增手机号码,先判断是否已经存在,如果不存在则插入,在低并发访问情况下不会发生问题,在高并发下则会插入多条数据。

解决方案:通过写sql实现,在插入之前先判断是否已经存在数据。

  INSERT INTO test SET(id,username,phone) SELECT '1','测试','10086' FROM DUAL  WHERE NOT EXISTS SELECT 1 FROM test WHERE phone = '10086';

也可以给这个字段设置唯一性。

例子2:高并发修改同一条数据

解决方案:加锁。

乐观锁:根据版本号更新数据

悲观锁:在数据库层面将数据锁死,不给其他线程使用

 

二、mysql优化:

1、表优化

1)能尽量使用数字类型的就不用使用字符串类型,因为在查询时,如果是字符串类型的,需要一个一个字符查询,而数字类型只需要查询一次;

2)每个字段的长度要尽量短,这样可以提高查询效率,而且在建立索引时也能减少资源消耗;

3)char类型查询快,但是占空间,varchar类型查询相对慢,但是可以节省空间,这个怎么使用需要看你需要保存什么信息,查询频繁的字段是什么;

2、查询优化

1)在保证功能基础上尽量减少对数据库的访问;

2)查询尽量减少查询的行数,比如你查下某个省份下的某个城市,如果你的sql同时where省份和城市就比直接where城市的查询速度慢;还有,当你where有多个查询条件时,查询那个字段扫描行数也少的就要先放到前面;

3)查询时不要使用*,你需要使用那几个字段就直接查那几个;

4)对于复杂的查询,耗时的查询,尽量分开处理,提高mysql的响应速度;

5)还有就是加索引

6)表分区,分表也可以

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值