mysql+redis+memcached
mysql+redis+memcached
数据库
数据库设计
a. 单表
b. FK(单表;一张表存储时,如果有重复出现的字段为了防止硬盘的浪费,所以做一个FK;去掉FK变成单表(这样子访问速度快了))
c. M2M(多对多关系) 到底是什么关系?
单选的下拉框/radio FK;多选下拉框/checkbox M2M
举个小例子:
问题:员工信息表员工当前薪资;保留员工的所有的调薪记录。
思路一:两张表
员工表:
id name salary调薪:
id price time 员工ID
思路二:三张表
员工表:
id name salary调薪:
id price time 员工调薪表:
id uid sid</span></pre>
基本SQL
分组(group by)
select depart_id,count(1),max(salary),min(age),sum(age) from user group by depart_id
select depart_id,count(1),max(salary),min(age),sum(age) from user group by depart_id having count(1)>5
注意事项:
通过聚合条件group by然后进行筛选的用having不能用where
连表
inner join / left join / right join
inner join是保留两个共有的,如果一个没有就不保留。
left join 是以左表为主表,如果右表没数据,则为null
right join 是以右表为主表,如果左表没数据,则为null
举个小例子:
数据:
部门表:
id title
1 销售
2 运营
3 IT用户表:
id name 部门id
</span>1 x1 1
2 x2 1
3 x3 1
4 x4 1
5 x5 1</pre>
请问查到多少条数据?
select * from userinfo left join depart on userinfo.did = depart.id 5select </span>* <span style="color: #0000ff;">from</span> depart left join userinfo on userinfo.did = depart.id 7<span style="color: #000000;"> select </span>* <span style="color: #0000ff;">from</span> userinfo inner join depart on userinfo.did = depart.id 5<span style="color: #000000;"> select </span>* <span style="color: #0000ff;">from</span> depart inner join userinfo on userinfo.did = depart.id 5</pre>
MySQL数据库引擎以及区别?
a. 常见innodb、mysiam
b. 区别:
- innodb:
- 支持事务(特性:原子性、一致性、隔离性、持久性)
事务就是(要完成都完成,要不完成就回滚)
- 表锁
- 行锁
- mysiam
- 不支持事务
- 表锁
- 全文索引
- 速度快
补充:
原生SQL
begin;select </span>* <span style="color: #0000ff;">from</span> xxx <span style="color: #0000ff;">for</span><span style="color: #000000;"> update; update ... commit; django: with trancation.automic:
User.objects.filter().select_for_update()</span></pre>
应用场景:商品数据计数。
索引
作用:
- 加速查找
- 约束
种类:
- 索引:随便写
- 唯一索引:允许Null + 不重复
- 主键索引:不允许Null + 不重复</span>-<span style="color: #000000;"> 联合索引:多列组成一个索引
</span>- 联合唯一索引:多列组成一个索引 +<span style="color: #000000;"> 唯一
例如:
name email pwd 命中索引遵循最左前缀的原则: name、name email、name pwd、name email pw</span></pre>
补充:
- 覆盖索引,当查找数据时候在索引表中就可以获取数据,无需去数据表中查找。
select name from user where name='xxx'
- 索引合并, 使用多个单列索引进行查找。
select * from user where name='xx' email='xx'为什么索引快?
因为在索引结构中讲述按照B</span>+来进行存放的数据。</pre>
优化数据库方案
a. 索引。
b. 固定长度的字段写在前面。
id name age < id age name
c. 对于固定选择的内容:性别,可以将其对应关系保存在内存中。
d. 分表
- 垂直分分,将数据分割到N张表。
- 水平分分,将列分到到N种表。
e. 分库
f. 读写分离(主从复制)
主:读写
从:读在django中的应用:
models.Users.objects.filter(id</span>=2).using(<span style="color: #800000;">'</span><span style="color: #800000;">default</span><span style="color: #800000;">'</span><span style="color: #000000;">)
models.Users.objects.filter(id</span>=2).using(<span style="color: #800000;">'</span><span style="color: #800000;">db1</span><span style="color: #800000;">'</span><span style="color: #000000;">)
g. limit
select </span>* <span style="color: #0000ff;">from</span> tb where name=<span style="color: #800000;">'</span><span style="color: #800000;">alex</span><span style="color: #800000;">'</span> limit 1<span style="color: #000000;">; h. 缓存
将常用数据读取到redis中(缓存),读取速度快。
</span></pre>
char和varchar的区别。
char是定长,不变的。
varchar是变长,可变的。
视图、触发器、存储过程、函数
视图:视图是虚拟表或逻辑表,它被定义为具有连接的SQL SELECT查询语句。因为数据库视图与数据库表类似,它由行和列组成,因此可以根据数据库表查询数据。其内容由查询定义。
但是,视图并不在数据库中以存储的数据值集形式存在,行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。简单的来说视图是由其定义结果组成的表;
触发器:触发器,是一个表数据的变更后通过触发器来修改与之相关联的其他表的数据,保证数据的一致性。使用触发器可以定制用户对表进行【增、删、改】操作时前后的行为,注意:没有查询
存储过程是存储在数据库目录中的一坨的声明性SQL语句。
Java,Python,PHP等应用程序可以调用存储过程。
mysql自定义函数就是实现程序员需要sql逻辑处理,参数是IN参数,含有RETURNS字句用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。
</div>
<div class="postDesc">posted @ <span id="post-date">2018-11-21 20:10</span> <a href="https://www.cnblogs.com/hnlmy/">hnlmy</a> 阅读(<span id="post_view_count">2</span>) 评论(<span id="post_comment_count">0</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=9997515" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(9997515);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=419389,cb_entryId=9997515,cb_blogApp=currentBlogApp,cb_blogUserGuid='9dd4be1f-fb20-4ca9-9d43-08d5866282ce',cb_entryCreatedDate='2018/11/21 20:10:00';loadViewCount(cb_entryId);var cb_postType=1;</script>
【活动】申请成为华为云云享专家 尊享9大权益
【工具】SpreadJS纯前端表格控件,可嵌入应用开发的在线Excel
【腾讯云】拼团福利,AMD云服务器8元/月
</div><!--end: forFlow -->
</div>
markdown_highlight();
var allowComments = true, cb_blogId = 428941, cb_blogApp = 'djfboai', cb_blogUserGuid = '45f5b0eb-3adb-4dfd-d622-08d5a91b4f51';
var cb_entryId = 10005466, cb_entryCreatedDate = '2018-11-23 08:45', cb_postType = 1;
loadViewCount(cb_entryId);
loadSideColumnAd();
var commentManager = new blogCommentManager();
commentManager.renderComments(0);
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function () {
googletag.defineSlot("/1090369/C1", [300, 250], "div-gpt-ad-1546353474406-0").addService(googletag.pubads());
googletag.defineSlot("/1090369/C2", [468, 60], "div-gpt-ad-1539008685004-0").addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
fixPostBody();
deliverBigBanner();
setTimeout(function() { incrementViewCount(cb_entryId); }, 50); deliverAdT2();
deliverAdC1();
deliverAdC2();
loadNewsAndKb();
loadBlogSignature();
LoadPostCategoriesTags(cb_blogId, cb_entryId); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate, cb_postType);
loadOptUnderPost();
GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);
mysql+redis+memcached的更多相关文章
- centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展
centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...
- Mysql和Memcached的连动
Memcached 和 mysqld 的联通 一 概述: what's UDFs ? UDFs是User Defined Functions的缩写,表示Mysql用户自定义的函数,应用程序可以利用这些 ...
- CentOS7下安装Mysql和Memcached 以及 使用C#操作Mysql和Memcached
我本身是学.net的,但是现在很多主流SQL和NOSQL都是部置在linux下,本着好学的精神,前段时间装了个虚拟机,在其装上CentOS64位的服务器系统,对于英文0基础,linux0基础的我来说, ...
- Mysql 官方Memcached 插件初步试用感受 - schweigen - ITeye技术网站
Mysql 官方Memcached 插件初步试用感受 - schweigen - ITeye技术网站 Mysql 官方Memcached 插件初步试用感受
- CentOS搭建Apache+php+MySQL+Redis环境
要搭建一个本地linux服务器环境,按照网络教程依葫芦画瓢,噼里啪啦搭好后,发现redis服务怎么也弄不好,不喜欢那种明知有问题却无从下手又无能为力的感觉,碰了无数次壁以后,我决定卸载,重头来过,并尽 ...
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】
https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...
- redis/memcached可视化客户端工具TreeNMS
RedisDesktopManager 之前用的redis客户端工具还不错,今天发现一个国产的nosql客户端,还挺方便滴 TreeNMS是一款redis,Memcache可视化客户端工具,采用JAV ...
- SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置
2016年03月03日 10:37:47 标签: mysql / redis / mybatis / spring mvc / spring 33805 项目环境: 在SpringMVC + MyBa ...
- 性能测试二十六:环境部署之Mysql+Redis+Tomcat环境整合
系统中使用了缓存+数据库,通用读取数据规则1.先从缓存读数据,如果有,直接返回数据:2.如果没有,去数据库中读,然后再插入到缓存中,再返回数据 Mysql+Redis+Tomcat环境整合 1.修改P ...
随机推荐
- 【防坑指南】nginx重启后出现[error] open() “/usr/local/var/run/nginx/nginx.pid” failed
重新启动nginx后,出现报错,原因就是下没有nginx文件夹或没有nginx.pid文件,为什么会没有呢? 原因就是每次重新启动,系统都会自动删除文件,所以解决方式就是更改pid文件存储的位置, 打 ...
- awk基本用法
1 简介 awk实质是一种编程语言,基本作用在于查找和替换. 2 基本用法 有文本名称为:awk.txt 内容为: john.wang male 30 021-111111 lucy.yang f ...
- openstack Q版部署-----界面horizon安装(9)
一.界面的安装 控制节点安装软件包: yum install openstack-dashboard -y [root@linux-node1 ~]# vim /etc/openstack-dashb ...
- WindowsPE权威指南-PE文件头中的重定位表
PE加载的过程 任何一个EXE程序会被分配4GB的内存空间,用户层处理低2G的内存,驱动处理高2G的内存. 1.双击EXE程序,操作系统开辟一个4GB的空间. 2.从ImageBase决定了加载后的基 ...
- Python3-lamba表达式、zip函数
lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'alex' ...
- 用户态驱动--UIO机制的实现【转】
转自:https://blog.csdn.net/u013982161/article/details/51584900 1 uio理论部分 1.1为什么出现了UIO? 硬件设备可以根据功能分为网 ...
- python实战===教你用微信每天给女朋友说晚安【转】
转自:https://www.cnblogs.com/botoo/p/8622379.html#4081184 但凡一件事,稍微有些重复.我就考虑怎么样用程序来实现它. 这里给各位程序员朋友分享如何每 ...
- [Codeforces671D]Roads in Yusland
[Codeforces671D]Roads in Yusland Tags:题解 题意 luogu 给定以1为根的一棵树,有\(m\)条直上直下的有代价的链,求选一些链把所有边覆盖的最小代价.若无解输 ...
- Power Network POJ - 1459 [网络流模板]
http://poj.org/problem?id=1459 嗯,网络流模板...多源点多汇点的图,超级汇点连发电厂,用户连接超级汇点 Status Accepted Time 391ms Memor ...
- 005_elasticsearch的数据导入导出
一.全部备份和导入 安装:git clone https://github.com/taskrabbit/elasticsearch-dump.gitcd elasticsearch-dumpnpm ...