- 使用Redis走进误区,该怎么办? 12-22
- Redis 结构及其性能测试 12-22
- Mysql语句优化的原则——让你写sql更加顺手 12-22
- mysql数据库表操作——表的主键索引和普通索引 12-22
- 手把手教你安装Mysql 12-22
- mysql数据库入门需要解决的3个问题 12-22
- MySQL:由USE DB堵塞故障引发的思考 12-22
- MySQL Sleep进程处理(二) 12-22
- 数据库简单使用语句(九) 12-22
- Mysql中关于聚合函数sum()最新的认识 12-22
使用Redis走进误区,该怎么办?
发布者: superzhang | 发布时间:2017-12-22首先是一个产品线开发人员搭建起了一套庞大的价格存储系统,底层是关系型数据库,只用来处理一些事务性的操作和存放一些基础数据;
在关系型数据库的上面还有一套MongoDB,因为MongoDB的文档型数据结构,让他们用起来很顺手,同时也可以支撑一定量的并发。
在大部分的情况下,一次大数据量的计算后结果可以重用但会出现细节数据的频繁更新,所以他们又在MongoDB上搭建了一层Redis的缓存,这样就形成了数据库→MongoDB→Redis三级的方式,方案本身先不评价不是本文重,我们来看Redis这层的情况。
由于数据量巨大,所以需要200GB的Redis。并且在真实的调用过程中,Redis是请求量最大的点,当然如果Redis有故障时,也会有备用方案,从后面的MongoDB和数据库中重新加载数据到Redis,就是这么一套简单的方案上线了。
当这个系统刚开始运行的时候,一切都还安好,只是运维同学有点傻眼了, 200GB的Redis单服务器去做,它的故障可能性太大了,所以大家建议将它分片,没分不知道一分吓一跳,各种类型用的太多了,特别是里面还有一些当类似消息队列使用的场景。
由于开发同学对Redis使用的注意点关注不够,一味的滥用,一锤了事,所以让事情变的困难了。有些侥幸不死的想法是会传染,这时的每个人都心存侥幸,懒惰心里,都想着
Redis 结构及其性能测试
发布者: superzhang | 发布时间:2017-12-22redis是一个高性能的key-value非关系数据库,它可以存键与5种不同类型的值之间的映射,支持存储的value类型包括:String(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(散列表)。
string可存储字符串、整数、浮点数
命令
行为
GET
获取存储在给定键中的值
SET
设置存储在给定键中的值
DEL
删除存储在给定键中的值(这个命令可以用于所有类型)
list链表上的每个节点都包含了一个字符串
命令
行为
RPUSH
将给定值推入列表的右端
LRANGE
获取列表在给定范围上的所有值
LINDEX
获取列表在给定位置上的单个元素
LPOP
Mysql语句优化的原则——让你写sql更加顺手
发布者: superzhang | 发布时间:2017-12-22使用索引的原则:
1.最左前缀匹配原则。
mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配。所以要尽量把这些条件放在最后,把“=”条件放在前面。
不会用到b的索引:
where a=1 and c>0 and b=2
会用到b的索引:
where a=1 and b=2 and c>0
2.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少。
3.当取出的数据超过全表数据的20%时,不会使用索引。
4.使用like时注意:
不使用索引:
like ‘%L%’
使用索引:
like ‘L%’
5.尽量将or 转换为 union all
不使用索引:
select * from user where name=’a’ or age=’20’
使用索引:
select * from user where name=’a’ union all select * from user where age=’20’<
mysql数据库表操作——表的主键索引和普通索引
发布者: superzhang | 发布时间:2017-12-22广东IT优就业
数据库索引就象书的目录一样,如果在字段上建立了索引,那么以索引列为查询条件时可以加快查询数据的速度。查询数据库,按主键查询是最快的,每个表只能有一个主键列,但是可以有多个普通索引列,主键列要求列的所有内容必须唯一,而普通索引列不要求内容必须唯一。主键就类似我们在学校学习时的学好一样,班级里是唯一的,整个表的每一条记录的主键值在表内都是唯一的,用来唯一标识一条记录
创建表的时候同时为表创建主键索引和普通索引:例子如下
mysql> create table student( id int(4) not null auto_increment, name char(20) not null, age tinyint(2) not null default'0', dept varchar(16) default null, primary key(id), key index_na
手把手教你安装Mysql
发布者: superzhang | 发布时间:2017-12-22广东IT优就业
目录
一、概述
二、MySQL安装
三、安装成功验证
四、NavicatforMySQL下载及使用
一、概述
MySQL版本:5.7.17
下载地址:http://rj.baidu.com/soft/detail/12585.html?ald
客户端工具:NavicatforMySQL
绿色版下载地址:http://www.cr173.com/soft/38153.html
二、MySQL安装
安装条件:
1).net framework4.0(下载地址:http://rj.baidu.com/soft/detail/15910.html?ald)
如果Windows Server 2003 在安装.net framework4.0安装过程中报错: net framework 4.0安装时
mysql数据库入门需要解决的3个问题
发布者: superzhang | 发布时间:2017-12-221. mysql数据库的导出导入,比较简单的方法是什么?
具体方法步骤如下
a.导出:
1)进入phpMyAdmin环境中,选择根目录(服务器:localhost),点击下方的“导出”超链接。:
2)在查看数据库的转存选项中,选择要导出的数据库,勾选下面的“另存为文件”复选框,点击“执行”按钮,然后选择导出文件路径,并且更改文件名。
说明:为了演示方便,导出后删除数据库。
b.删除:
1)选择根目录(服务器:localhost),点击下方的“数据库”超链接。
还是回到上图,我们可以归纳一下语句类型如下:
1、CREATE TABLE A AS SELECT B
其STATE为 s
MySQL Sleep进程处理(二)
发布者: superzhang | 发布时间:2017-12-22上一篇文章讲到了通过修改系统参数配置,自动结束MySQL数据库中超时的Sleep的进程。本次将讲述如何通过编写Shell脚本结束Sleep进程。
第一步,连接数据库
第二步,查询sleep进程
第三步,过滤选择对应的进程
第四步,结束选中的进程
最后一步,部署脚本。
按照以上的步骤,对照脚本如下:
#It is used to kill processlist of mysql sleep# shell脚本:Kill掉MySQL中所有sleep的client线程# 0 */1 * * * sh ~/mysql_kill_sleep_process.sh#!/bin/sh n=`mysqladmin processlist -uxxxx -pxxxx -hxx.xx.xx.xx1 |grep -i sleep | grep xx.xx.xx.xx2 | grep connect_user |wc -l` date=`date +%Y%m数据库简单使用语句(九)
发布者: superzhang | 发布时间:2017-12-22各位好,最近一段时间一直在更新Mysql简单使用语句,感觉不太受欢迎呢,没多少人看呢,没关系,但是我一定会继续更新完的,做事有始有终,让真正热爱MySQL的人能够看到,我会尽量把剩下的一些内容压缩一下,每次更新内容多一些,另外周末不更新技术类内容,会更新一些鸡汤、搞笑等事情,下面开始继续学习MySQL吧。
MySQL ALTER命令
先创建一个表alter_table表,然后使用alter命令对表字段进行删除、添加等操作。
alter命令DROP表中字段
alter命令ADD表中字段
如果我们需要指定新增字段的位置,
Mysql中关于聚合函数sum()最新的认识
发布者: superzhang | 发布时间:2017-12-22最近开发后台接口的时候,需要做一个统计查询,使用到sum()函数,数据库中的表是以前已经设计好的,并且要进行统计查询的那张表在其他一些接口中已经使用,mysql的版本是5.5.28,这是背景。
当写接口写sql语句时,才发现需要用sum()函数统计的那个字段在表中设计好的数据类型是varchar类型,由于对聚合函数sum()认识不深,本以为直接统计会报错,语句如下:
SELECT SUM(file_size) FROM res_material
但运行正常,上网搜索时看到了这么一句话“如果varchar类型中存放的都是数字,需要看是什么数据库,如果是sqlserver那么可将字符转成数字再进行sum,如果是oracle,则可隐形转换成数字,无需修改语句”。虽然没有搜索到关于mysql中sum()函数也有隐形转化的特点,但我使用的是Mysql,如上文所示我没有在语句中加上cast()转换类型的函数,运行结果依然正确,这应该能够说明在mysql中的sum()函数与oracle一样也有隐形转化的特点(还需要学习)。
另外,经过测试,如果统计字段中有的值不是数字,那么也不会报错,sum()函数只统计数字行。
且当语句加上cast()函数时,统计结果依然正确:
SELECT SUM(CAST(file_size A
