数据库
文章平均质量分 86
HelloWorld搬运工
HelloWorld是学习程序的第一个程序,搬运工是将一件东西从一个地方运到另一个地方。HelloWorld搬运工,分享技术知识,有原创也有转发,彼此交流,一起学习,共同进步。
展开
-
1对多业务,数据库水平切分架构一次搞定
本文将以“帖子中心”为例,介绍“1对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的问题 典型问题的优化思路及实践 一、什么是1对多关系所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的映射关系。1对1 一个用户只有一...原创 2017-10-25 18:56:57 · 546 阅读 · 0 评论 -
MySQL的or/in/union与索引优化
假设订单业务表结构为:order(oid, date, uid, status, money, time, …)其中: oid,订单ID,主键 date,下单日期,有普通索引,管理后台经常按照date查询 uid,用户ID,有普通索引,用户查询自己订单 status,订单状态,有普通索引,管理后台经常按照status查询 money/time,...原创 2017-10-25 18:15:25 · 343 阅读 · 0 评论 -
用uid分库,uname上的查询怎么办
【缘起】用户中心是几乎每一个公司必备的基础服务,用户注册、登录、信息查询与修改都离不开用户中心。当数据量越来越大时,需要多用户中心进行水平切分。最常见的水平切分方式,按照uid取模分库:通过uid取模,将数据分布到多个数据库实例上去,提高服务实例个数,降低单库数据量,以达到扩容的目的。水平切分之后:uid属性上的查询可以直接路由到库,如上图,假设访问uid=...原创 2020-03-18 22:04:43 · 1262 阅读 · 0 评论 -
即使删了全库,保证半小时恢复
【高可用数据库架构】一般来说数据库集群会是主从架构:或者主主架构:如果此时主库宕机,可以:(1)一个从库顶上,重建集群(2)流量迁移到另一个主库来保证数据的安全性与服务的可用性。但是,如果人为不小心执行了“删全库”操作,命令会同步给其他从(主)库,导致所有库上的数据全部丢失,这下怎么办呢?可以问问自己,当这种情况发生的时候:(1)能不能恢复数据?...原创 2020-03-19 09:13:15 · 586 阅读 · 0 评论 -
MongoDB的正确使用姿势
MongoDB是一个非常有前途的数据库,MongoDB官方对自己的定位是通用数据库,其实这个定位跟MySQL有些像。虽其流行度还远未达到MySQL的水平,但笔者有个可能不恰当的比较,MongoDB就像N年前的MySQL,随着时间的推移,会变得越来越强大,也会越来越流行。下面结合MongoDB的几大特色来谈谈MongoDB的适用场景。首先,MongoDB是文档型(Document stor...原创 2018-08-03 12:34:18 · 1014 阅读 · 0 评论 -
MySQL数据库的几个优化建议
性能是我们衡量应用的一种方式,而应用性能的一项指标就是用户体验,也就是平时我们常说的:“用户需要等待超过合理的时间,才能获得他们想要的东西吗?”在不同的情况和场景下,该指标会有所不同。比如说:对于移动购物应用来说,其响应时间不能超过几秒钟;而对于一个员工的人力资源页面而言,其响应时间则允许比几秒钟更长。因此,不管是什么样的标准,维持应用程序的良好性能都是至关重要的,否则就会引发用户的抱怨(或更...原创 2018-04-18 21:57:27 · 2682 阅读 · 0 评论 -
常用SQL优化方法
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is n...原创 2018-04-10 07:55:09 · 13032 阅读 · 2 评论 -
58到家数据库30条军规解读
军规适用场景:并发量大、数据量大的互联网业务军规:介绍内容解读:讲解原因,解读比军规更重要一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道...原创 2020-03-18 22:06:17 · 519 阅读 · 0 评论 -
典型数据库架构设计与实践
本文,将介绍数据库架构设计中的一些基本概念,常见问题以及对应解决方案,为了便于读者理解,将以“用户中心”数据库为例,讲解数据库架构设计的常见玩法。一、用户中心用户中心是一个常见业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:User(uid, uname, passwd, sex, age,nickname, …)其中: uid为用户ID,主键 ...原创 2020-03-18 22:09:39 · 463 阅读 · 0 评论 -
单KEY业务,数据库水平切分架构实践
本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的问题 典型问题的优化思路及实践 一、用户中心用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:User(uid, login_name, passwd, ...原创 2020-03-18 22:10:27 · 214 阅读 · 0 评论 -
浅谈CAS在分布式ID生成方案上的应用
所谓“分布式ID生成方案”,是指在分布式环境下,生成全局唯一ID的方法。可以利用DB自增键(auto inc id)来生成全局唯一ID,插入一条记录,生成一个ID:这个方案利用了数据库的单点特性,其优点为: 无需写额外代码 全局唯一 绝对递增 递增ID的步长确定 其不足为: 需要做数据库HA,保证生成ID的高可用 数据...原创 2020-03-18 22:03:51 · 387 阅读 · 0 评论 -
库存扣多了,到底怎么整
业务复杂、数据量大、并发量大的业务场景下,典型的互联网架构,一般会分为这么几层: 调用层,一般是处于端上的browser或者APP 站点层,一般是拼装html或者json返回的web-server层 服务层,一般是提供RPC调用接口的service层 数据层,提供固化数据存储的db 对于库存业务,一般有个库存服务,提供库存的查询、扣减、设置等RPC...原创 2020-03-18 22:04:13 · 2504 阅读 · 0 评论 -
巧用CAS解决数据一致性问题
缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法。一、业务场景业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下:(1)从数据库查询用户现有余额SELECT money FROM t_yue WHERE uid=$uid,不妨设查询出来的$old_money=100元(2)业务层实施业务...原创 2017-12-03 22:06:29 · 338 阅读 · 0 评论 -
数据库秒级平滑扩容架构方案
一、缘起(1)并发量大,流量大的互联网架构,一般来说,数据库上层都有一个服务层,服务层记录了“业务库名”与“数据库实例”的映射关系,通过数据库连接池向数据库路由sql语句以执行:如上图:服务层配置用户库user对应的数据库实例物理位置为ip(其实是一个内网域名)。(2)随着数据量的增大,数据要进行水平切分,分库后将数据分布到不同的数据库实例(甚至物理机器)上,以达到降低数据量...原创 2020-03-19 09:12:23 · 1904 阅读 · 0 评论 -
一分钟掌握数据库垂直拆分
一、缘起当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表:user(uid bigint,name varchar(16),pass varchar(16),age int,sex tinyint,flag tinyint,sign varchar(64),intro varchar(256)…);...原创 2020-03-19 09:12:45 · 4363 阅读 · 0 评论 -
mysql中decimal,numeric,double,float的区别
概述:简单来说decimal,numeric属于标准数据类型,指定精度和刻度;decimal的存储大小不确定,numeric的存储大小默认8个字节。double,float属于非标准数据类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值。float,double类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理...原创 2017-11-10 18:35:46 · 11451 阅读 · 0 评论