你不能错过的mysql优化(后期优化)

SQL语句方面的优化

	1:不要在sql语句中做运算,影响性能

	2:优化查询时间长的sql语句(思考问题:如何发现有问题的sql语句?),尽量让其用到索引


如何发现有问题的sql语句?

	慢日志 和 explain

	#慢查询开启
		slow_query_log = ON
	#设置慢查询时间5s
		long_query_time = 5
	#设置慢日志存储位置(三种方式:file,table,file+table)
		log_output = FILE,TABLE

explain参见文章‘’0基础也能看懂的mysql索引‘’博文末尾(如何知道自己的查询语句有没有用到索引?)

分区,分表?

	分区:list,hash,range,key四种方式进行分区

	分表:垂直分表(根据字段拆分表),水平分表(建立多个相同的表存储数据)

	分表后如何保证插入的id唯一?
		
		1:union联合查询出最大id
		2:id存单独的表,每次添加数据先取id
		3:id存缓存
		
	大数据用户表如何分表?

		1:先按字段拆分成用户表和用户信息表
		2:再做水平拆分	

	分表后,用户登录怎么确定在哪个表?
		
		1:新建一个crc32关系表,存储用户在哪个表里
		2:查询用户信息先查关系表,确定在哪个表
		
	订单如何分表(商家和用户角度)
		
		1:系统存两份订单表,1份按照用户维度分表,1份按照商家维度分表
		2:用户下订单时候,只按照用户维度分表
		3:通过定时任务,把数据写入商家维度的表

mysql集群:主从 ,主主
	
	主从原理:
			主库发生改变写进二进制日志,通过slave线程通知从库的io线程把修改写到从库的中级日志,
			从库的sql线程把数据写到从库完成同步
	主主原理:
			和主从原理类似,只是主从完成后,把从库当成主库链接以前的主库

	出现的问题: 延时,主键冲突(高并发)
		
		由于主库的写入是多线程的,从库的更新是单线程的,所以有延时
	
	延时如何解决?
			1:提高从库配置
			2:强制从主库拿数据
			3:使用中间件
			4:使用缓存
			5:改配置文件sync_binlog=1,让其每次改变都写磁盘
	主键冲突如何解决?
			1:改配置文件auto-increment-increment 和  auto-increment-offset,让其
			自增量和自增起点发生改变		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值