数据库
文章平均质量分 89
zhuzhufxz
这个作者很懒,什么都没留下…
展开
-
数据库垂直拆分
一、缘起当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表:user(uid bigint,name varchar(16),pass varchar(16),age int,sex tinyint,flag tinyint,sign varchar(64),intro varchar(256)…);水平切分是指,以某个字段为依据(例如uid),按...原创 2018-04-22 19:13:16 · 148 阅读 · 0 评论 -
MySQL的索引优化
假设订单业务表结构为:order(oid, date, uid, status, money, time, …)其中:oid,订单ID,主键date,下单日期,有普通索引,管理后台经常按照date查询uid,用户ID,有普通索引,用户查询自己订单status,订单状态,有普通索引,管理后台经常按照status查询money/time,订单金额/时间,被查询字段,无索引… 假设订单有三种状态:0已下...原创 2018-05-02 13:02:35 · 186 阅读 · 0 评论 -
数据库操作10条SQL技巧
一、一些常见的SQL实践(1)负向条件查询不能使用索引select * from order where status!=0 and stauts!=1not in/not exists都不是好习惯可以优化为in查询:select * from order where status in(2,3) (2)前导模糊查询不能使用索引select * from order where desc like...原创 2018-05-02 13:05:10 · 237 阅读 · 0 评论 -
索引技巧
花1分钟时间,了解聚集索引,非聚集索引,联合索引,索引覆盖。 举例,业务场景,用户表,表结构为:t_user(uid primary key,login_name unique,passwd,login_time,age,…); 聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用primary key来约束。 举例:t_user场景中,...原创 2018-05-02 13:08:04 · 177 阅读 · 0 评论 -
冗余表数据一致性
一、需求缘起互联网很多业务场景的数据量很大,此时数据库架构要进行水平切分,水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非patition key上的查询可能就需要扫描多个库了。例如订单表,业务上对用户和商家都有订单查询需求:Order(oid, info_detail)T(buyer_id, seller_id, oid)如果用buyer_id...原创 2018-05-02 13:09:27 · 225 阅读 · 0 评论 -
MySQL冗余数据的三种方案
一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非patition key上的查询可能就需要扫描多个库了。此时常见的架构设计方案,是使用数据冗余这种反范式设计来满足分库后不同维度的查询需求。例如:订单业务,对用户和商家都有订单查询需求:Order(oid, ...原创 2018-05-02 13:10:46 · 694 阅读 · 0 评论 -
典型数据库架构设计
一、用户中心用户中心是一个常见业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:User(uid, uname, passwd, sex, age,nickname, …)其中:uid为用户ID,主键uname, passwd, sex, age, nickname, …等为用户的属性数据库设计上,一般来说在业务初期,单库单表就能够搞定这个需求。 二、图示说明为了方便大家理解,后...原创 2018-05-02 13:20:40 · 19796 阅读 · 0 评论