201812-03 SQL优化指南 慢查询日志开启撒网模式 开启了MySQL慢查询日志之后,MySQL会自动将执行时间超过指定秒数的SQL统统记录下来,这对于搜罗线上慢SQL有很大的帮助。SHOWVARIABLESLIKE'slow%'以我刚安装的mysql5.7为例查询结果是这样子的:slow_launch_time:表示如果建立线程花费了比这个值更长的时间,slow_launch_threads计数器将增加slow_query_log:是否开启慢查询日志ON开启,OFF关闭默认没有开启... 继续阅读 >
201711-20 MyFlash——美团点评的开源MySQL闪回工具 由于运维、DBA的误操作或是业务bug,我们在操作中时不时会出现误删除数据情况。早期要想恢复数据,只能让业务人员根据线上操作日志,构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管那种,都非常费时费力,而且容易出错。直到彭立勋首次在MySQL社区为mysqlbinlog扩展了闪回功能。在美团点评,我们也遇到过研发人员误删主站的配置信息,从而导致主站长达2个小时不可用的情况。DBA同学当时使用了技术团队自研... 继续阅读 >
201710-22 为什么说SQL正在击败NoSQL,这对数据的未来意味着什么? 随着计算机的日益普及,各种应用每天产生的数据量呈指数级增长。如何存储这些数据,有效处理分析这些数据,并从中提取有价值的信息,是当下迫切需要解决的问题。在过去的十年里,NoSQL在软件工程师阵营里越来越受欢迎,其中最重要的实现是MapReduce,Bigtable,Cassandra,MongoDB,等产品。它主要用于解决SQL的可扩展性问题。然而今天SQL开始回归。几乎所有的云计算服务提供商都在提供备受青睐的关系型数据库管理服务:例如A... 继续阅读 >
201708-05 从技巧、案例和工具入手,详解性能优化怎么做 作者介绍颜圣杰,.NET平台软件工程师,对DDD领域驱动设计感兴趣,目前在研究ABP框架,热爱写作与分享。最近一段时间系统新版本要发布,在beta客户测试期间,暴露了很多问题,除了一些业务和异常问题外,其它都集中在性能上。有幸接触到这些性能调优的机会,这里跟大家归纳交流一下。性能优化是一个老生常谈的问题了,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。而造成性能... 继续阅读 >
201702-28 踩坑CBO,解决那些坑爹的SQL优化问题 本次分享大纲:CBO优化器存在哪些坑CBO优化器坑的解决之道加强SQL审核,将性能问题扼杀于襁褓之中分享现场FAQCBO(CostBasedOptimizer)优化器是目前Oracle广泛使用的优化器,其使用统计信息、查询转换等计算各种可能的访问路径成本,并生成多种备选执行计划,最终Oracle会选择成本最低的作为最优执行计划。与“远古”时代的RBO(RuleBasedOptimizer)相比,显然更加符合数据库实际情... 继续阅读 >
201701-03 秒杀抢购思路以及高并发下数据安全 我们通常衡量一个Web系统的吞吐率的指标是QPS(QueryPerSecond,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。那么,我们的Web系统的理论峰值QPS为(理想化的计算方式):20*500/0.1=100000(10万QPS)咦?我们的系统似乎很强大,1秒... 继续阅读 >
201612-15 如何写出高性能SQL语句 1、首先要搞明白什么叫执行计划?执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式。可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两... 继续阅读 >
201612-13 Mysql 常用 SQL 语句大全 基础篇//查询时间,友好提示$sql="selectdate_format(create_time,'%Y-%m-%d')asdayfromtable_name";//int时间戳类型$sql="selectfrom_unixtime(create_time,'%Y-%m-%d')asdayfromtable_name";//一个sql返回多个总数$sql="selectcount(*)all,";$sql.="count(casewhenstatus=1thenstatusend)status_1_num,";$sql.="count(casewhenstatus=2thenstatusend)status_2_num";$sql... 继续阅读 >
201603-14 SQL查询注意细节大全 一.SQL基础:SELECT 列名 FROM 表名或者SELECT*from 表名。SELECTLastName,FirstNameFROMPersons* 所有的字段!SQL对大小写不敏感!3.分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句!4.SQLdistinct:在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词DISTINCT用于返回唯一... 继续阅读 >
201603-12 PHP安全-SQL 注入 SQL注入 SQL注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞,一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者... 继续阅读 >
201601-07 数据库性能优化之SQL语句优化 温馨提示:本篇内容均来自网上,本人只做了稍微处理,未进行细致研究,仅当做以后不备之需,如若你喜欢可尽情转走。一、问题的提出在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQ... 继续阅读 >
201509-17 PHP防XSS 防SQL注入的代码 functiongjj($str){$farr=array("/\\s+/","/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU","/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",);$str=preg_replace($farr,"",$str);returnaddslashes($str);}functionhg_input_bb($array){if(is_array($array)){foreach($arrayAS$k=>$v){$array[$k]=h... 继续阅读 >
201509-10 程序员必掌握的 SQL 指南 介绍SQL 已经应用到了我们周围的各个角落,不管你信不信。操纵任何种类数据的每个应用程序都需要将数据存放在某处。无论它是大数据,还是只有简单数行的数据包;无论是政府、还是创业公司;无论是横跨多台服务器的大型数据库、还是运行着自己小型数据库的手机,SQL无处不在。但是,SQL是什么呢?SQL代表结构化查询语言,通常,其发音为“ess-que-el”。SQL是数据库语言,专门为了和数据库通信而建立的。SQL是一门简单... 继续阅读 >
201506-29 有意思的 SQL语句优化经历 我用的数据库是mysql5.6,下面简单的介绍下场景课程表createtableCourse(c_idintPRIMARYKEY,namevarchar(10))数据100条学生表:createtableStudent(idintPRIMARYKEY,namevarchar(10))数据70000条学生成绩表SCCREATEtableSC(sc_idintPRIMARYKEY,s_idint,c_idint,scoreint)数据70w条查询目的:查找语文考100分的考生查询语句:selects.*fromStudentswheres.s_idin(selects_idfromSCscwhere... 继续阅读 >
201506-29 优化 SQL SELECT 语句性能的 6 个简单技巧 SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则。20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间。除非你在金星工作,那里的每一天都等于地球上的243天,否则交付期限很有可能使你没有足够的时间来调优SQL查询。根据我多年编写和运行SQL语句的经验,我开始开发一个检查列表,当我试图提高查询性能时供我参考。在进行查询计划和阅读我使用的数据库文档... 继续阅读 >
201504-26 SQL Server 中的跨库视图 在一个SQL中,有多个数据库,A、B、C,在使用C为连接库中,现在要查询A中的表T1。那么,在C中建创视图(A_T1)。 SELECT*FROMA.dbo.T1这样就当本地表使用了。 继续阅读 >