- MySQL 从零开始:02 MySQL 安装 07-16
- 数据库sql优化总结之百万级数据库优化方案+案例分析 07-16
- sql dao增删改查 07-16
- Windows下安装使用redis 07-15
- mysql distinct 去重、group by 07-15
- sql语句的执行顺序以及流程(详细掌握) 07-15
- Elasticsearch 6.3 发布 SQL功能 07-15
- 「每日分享」2018整理最全的50道Redis面试题 07-15
- Windows下安装使用redis 07-15
- ThinkPHP3.2使用redis保存sessio 07-15
MySQL 从零开始:02 MySQL 安装
发布者: PHPYuan | 发布时间:2018-07-161、下载 MySQL 安装程序
2、安装 MySQL
要操作 MySQL ,首先要安装 MySQL ,本文将一步步展示如何安装 MySQL,简直详细到令人发指。
环境:
操作系统:Windows10 64位
MySQL版本:社区版 8.0.11.0
1、下载 MySQL 安装程序下载MySQL数据库可以访问官方网站:https://www.mysql.com/
访问主页
数据库sql优化总结之百万级数据库优化方案+案例分析
发布者: PHPYuan | 发布时间:2018-07-16项目背景
有三张百万级数据表
知识点表(ex_subject_point)9,316条数据
试题表(ex_question_junior)2,159,519条数据 有45个字段
知识点试题关系表(ex_question_r_knowledge)3,156,155条数据
测试数据库为:mysql (5.7)
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。案例分析:
SELECT ex_question_junior.QUESTION_ID FROM ex_question_junior WHERE ex_question_junior.GRADE_ID=1执行时间:17.609s (多次执行,在17s左右徘徊)
优化后:给GRADE_ID字段添加索引后
执行时间为:11.377s(多次执行,在11s左右徘徊)
备注:我们一般在什么字段上建索引?
这是一个非常复杂的话题,需要对业务及数据充分分析后再能得出结果。主键及外键通常都要有索引,其它需要建索引的字段应满足以下条件:
a、字段出现在查询条件中,并且查询条件可以使用索引;
b、语句执行频率高,一天会有几千次以上;
sql dao增删改查
发布者: PHPYuan | 发布时间:2018-07-16sql封装在sql dao框架的架构开发中,重点需要处理的是对增删改查sql的封装,如何简化sql拼接操作,使上层应用能够很方便的接入开发并提升开发效率,下面是需要我们考虑的2个问题。
1. 对象关系映射ORM。
2. 多条件查询条件封装。
增新增add操作对应是是sql dml中的insert操作,用于向数据库插入一条新的记录,在实际使用中,基本没人愿意每次插入新写一条insert语句来支持,目前大部分框架支持的就是ORM来映射,通过一个entity对象对应数据库中的字段,然后通过反射来拼接需要的insert语句,但实际开发是复杂的,有可能我们这个entity对象包含了冗余字段或者有字段名称与数据库是不对应的,那这种我们如何解决呢?
- ## entity对象包含了冗余字段
在这种情况,orm反射拼接insert sql语句时是需要排除掉对应的字段的,可以给对应的字段加上注解@VirtualProperty,每次反射获取数据时根据发现存在此注解则表示排除此字段。
- ## entity字段名称不对应
这种与上面类似,可以加个注解,如@DataProperty,如果反射发现字段上有此注解,则表示使用DataProperty中的name去拼接。
Windows下安装使用redis
发布者: PHPYuan | 发布时间:2018-07-15注:如果搜索不到软件下载,就去"GitHub"中去寻找!
第一步:安装redis服务
下载地址:https://github.com/dmajkic/redis/downloads。
将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reids
打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf 。
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
设置键值对 set myKey abc
取出键值对 get myKey
第二步:安装php-redis
1 首先,查看所用php编译版本V6/V9 在phpinfo()中查看
即:Compiler MSVC11 (Visual C++ 2012)
2 下载扩展 地址:http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/(注意所支持的php版本)
3 将下载的php_redis.dll放在php扩展目录中(ext
mysql distinct 去重、group by 用法解析(详细)
发布者: PHPYuan | 发布时间:2018-07-15mysql distinct 去重
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而 这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案
下面先来看看例子:
table
id name
1 a
2 b
3 c
4 c
5 b
库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
select distinct name from table
得到的结果是:
name
a
b
c
好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:
<sql语句的执行顺序以及流程(详细掌握)
发布者: PHPYuan | 发布时间:2018-07-15程序员对sql语句的执行顺序的透彻掌握,是避免编程中各种bug和错误,歧义语句的不二法则。
SELECT DISTINCT <select_list>
FROM <left_table>
<join_type> JOIN <right_table>
ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>
如果你知道每个关键字的意思,作用,如果你还用过的话,那再好不过了。但是,你知道这些语句,它们的执行顺序你清楚么?如果你非常清楚,你就没有必要再浪费时间继续阅读了;如果你不清楚,非常好,你应该庆幸你阅读到了这么好的一篇文章。
准备工作
新建一个测试数据库TestDB;
create database TestDB;
创建测试表tabl
Elasticsearch 6.3 发布 SQL功能
发布者: PHPYuan | 发布时间:2018-07-15Elasticsearch 6.3 于前天正式发布,其中带来了很多新特性,详情请参见:https://www.elastic.co/blog/elasticsearch-6-3-0-released。这个版本最大的亮点莫过于内置支持 SQL 模块!我在早些时间就说过 Elasticsearch 将会内置支持 SQL,参见:ElasticSearch内置也将支持SQL特性。我们可以像操作 MySQL一样使用 Elasticsearch,这样我们就可以减少 DSL 的学习成本,这个 SQL 模块是属于 X-Pack 的一部分。Elasticsearch SQL 主要有以下几个特点:
允许我们在 Elasticsearch 使用 SQL 查询其中的数据;
支持 REST 、 JDBC 以及命令行来来下数据,任何客户端都可以使用 SQL 在 Elasticsearch 中本地搜索和聚合数据;
内部应该是将 SQL 翻译成 DSL 来查询数据的
「每日分享」2018整理最全的50道Redis面试题
发布者: PHPYuan | 发布时间:2018-07-15点击上方"java全栈技术"关注,每天学习一个java知识点
1、什么是Redis?
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
2、Redis相比memcached有哪些优势?
(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
Windows下安装使用redis
发布者: PHPYuan | 发布时间:2018-07-15注:如果搜索不到软件下载,就去"GitHub"中去寻找!
第一步:安装redis服务
下载地址:https://github.com/dmajkic/redis/downloads。
将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reids
打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf 。
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
设置键值对 set myKey abc
取出键值对 get myKey
第二步:安装php-redis
1 首先,查看所用php编译版本V6/V9 在phpinfo()中查看
即:Compiler MSVC11 (Visual C++ 2012)
2 下载扩展 地址:http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/(注意所支持的php版本)
3 将下载的php_redis.dll放在php扩展目录中(ext
ThinkPHP3.2使用redis保存session信息
发布者: PHPYuan | 发布时间:2018-07-15第一步:配置文件中添加如下内容
//SESSIONDB设置
'SESSION_TYPE' => 'Redis',
'SESSION_EXPIRE' => 60,//60秒
'REDIS_HOST' => '127.0.0.1',
'REDIS_PORT' => '6379',
'SESSION_PREFIX' => '',
第二步:将Redis.class文件存放在ThinkPHP框架根目录下的Library\Think\Session\Driver\目录下
第三步:开启redis服务器
4.测试是否实现了redis缓存?
打开redis-cli客户端:
首先清空以下redis的keys:
flushdb
注:该操作很危险,只有在测试开发阶段,才能进行该操作!
输入keys *
查看是否有刚生成的"键"?
