info

MySQL 如何创建索引?怎么优化?

我们两清 提交于 2019-12-09 23:17:32
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示SQL执行的详细信息,可以进行索引的优化。 一、导致SQL执行慢的原因 1.硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。 2.没有索引或者索引失效。(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你删除某个数据的时候,索引的树结构就不完整了。所以互联网公司的数据做的是假删除.一是为了做数据分析,二是为了不破坏索引 ) 3.数据过多(分库分表) 4.服务器调优及各个参数设置(调整my.cnf) 二、分析原因时,一定要找切入点 1.先观察,开启慢查询日志,设置相应的阈值(比如超过3秒就是慢SQL),在生产环境跑上个一天过后,看看哪些SQL比较慢。 2.Explain和慢SQL分析。比如SQL语句写的烂,索引没有或失效,关联查询太多(有时候是设计缺陷或者不得以的需求)等等。 3.Show Profile是比Explain更近一步的执行细节,可以查询到执行每一个SQL都干了什么事,这些事分别花了多少秒。 4.找DBA或者运维对MySQL进行服务器的参数调优。 三、什么是索引? MySQL官方对索引的定义为:索引

maven内部运行原理解析(二)

半城伤御伤魂 提交于 2019-12-09 23:04:12
在 第一篇 里主要介绍了maven的几个核心概念,这一篇里我们就以一个简单的例子来分析整个maven运行的过程。构建所使用的项目结构如下: 项目结构 主要是一个echo项目,其包含了两个module,分别是api和biz。echo项目的pom.xml的内容如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.maven</groupId> <artifactId>echo</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <modules> <module>api</module> <module>biz</module> </modules> </project> 这里有个比较费解的地方就是<packaging>pom</packaging>。若

创建testng.xml文件

瘦欲@ 提交于 2019-12-09 22:55:16
简单介绍 运行TestNG测试脚本有两种方式:一种是直接通过IDE运行(例如使用eclipse中的“Run TestNG tests”),另一种是从命令行运行(通过使用xml配置文件)。当我们想执行某个包或者某个类中的一部分测试脚本的时候,使用xml配置文件是非常便利的。在xml配置文件里,不仅可以选择某些需要执行的测试脚本,还可以排除某些不需要运行的测试脚本。 创建testng.xml文件 创建xml文件很容易,只需要在其中填充一些内容。 1)首先要声明一个suite的名字,用于描述将要运行的测试脚本集,可以根据自己需要任意命名,最终这个名字会在testng的测试报告中看到。 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="SuiteName" verbose="1" > <test name="TestName" > 2)如果选择的测试脚本是基于组的(使用了@Test (groups={"student"})这样的注解),那么接下来需要声明如何使用这些组:包含或者排除。如果使用了include标签标注某些组,那么在选择的测试脚本中,只有属于那些组的测试脚本会被运行。那些未被选中的测试脚本,或者被选中却不属于某些组的测试脚本都不会被运行。需要注意,一个测试脚本可以属于很多个组

python使用logging进行日志配置

六月ゝ 毕业季﹏ 提交于 2019-12-09 20:30:19
1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式。 logging模块与log4j的机制是一样的,只是具体的实现细节不同。 模块提供logger,handler,filter,formatter: 1)logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。 2)handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。 3)filter:提供一种优雅的方式决定一个日志记录是否发送到handler。 4)formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串

log4j+commons-logging结合使用

痞子三分冷 提交于 2019-12-09 20:07:04
1.参考文献: Apache Commons-logging使用实例 Apache Log4j配置说明 log4j.properties配置详解 commons-logging结合Log4j的问题 Properties文件相关 Apache通用日志工具commons-logging和Log4j使用总结 2. Commons-Loggin 简介 Apache针对不同的语言平台为做了一系列日志工具包,可应用于java、.net、php、c++,这些日志包都是免费的,使用非常方便,可以极大提高编程效率。并且,Apache为了让众多的日志工具有一个相同操作方式,还实现做了一个通用日志工具包: commons-logging,也称Jakarta Commons Logging (JCL) 。commons-logging是为那些需要建立在不同环境下使用不同日志架构的组件或库的开发者创建的,其中包括Apache Log4j以及Java log的日志架构。把日志信息commons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构。现在,Apache通用日志工具commons-logging和Log4j已经成为Java日志的标准工具。 3.快速入门 JCL有两个基本的抽象类:Log(基本记录器)和LogFactory(负责创建Log实例)。当commons

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/ShimLoader

徘徊边缘 提交于 2019-12-09 19:40:09
用sqoop从MySQL把数据导到hive,报错: 19/12/09 02:06:19 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `student` AS t LIMIT 1 19/12/09 02:06:19 INFO hive.HiveImport: Loading uploaded data into Hive Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/ShimLoader at org.apache.hadoop.hive.conf.HiveConf$ConfVars.<clinit>(HiveConf.java:368) at org.apache.hadoop.hive.conf.HiveConf.<clinit>(HiveConf.java:105) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java

Flask 教程 第四章:数据库

て烟熏妆下的殇ゞ 提交于 2019-12-09 19:31:49
本文翻译自 The Flask Mega-Tutorial Part IV: Database 在Flask Mega-Tutorial系列的第四部分,我将告诉你如何使用 数据库 。 本章的主题是重中之重!大多数应用都需要持久化存储数据,并高效地执行的增删查改的操作, 数据库 为此而生。 本章的GitHub链接为: Browse , Zip , Diff . Flask中的数据库 Flask本身不支持数据库,相信你已经听说过了。 正如表单那样,这也是Flask有意为之。对使用的数据库插件自由选择,岂不是比被迫适应其中之一,更让人拥有主动权吗? 绝大多数的数据库都提供了Python客户端包,它们之中的大部分都被封装成Flask插件以便更好地和Flask应用结合。数据库被划分为两大类,遵循 关系 模型的一类是关系数据库,另外的则是非关系数据库,简称 NoSQL ,表现在它们不支持流行的关系查询语言 SQL (译者注:部分人也宣称NoSQL代表不仅仅只是SQL)。虽然两类数据库都是伟大的产品,但我认为关系数据库更适合具有结构化数据的应用程序,例如用户列表,用户动态等,而NoSQL数据库往往更适合非结构化数据。 本应用可以像大多数其他应用一样,使用任何一种类型的数据库来实现,但是出于上述原因,我将使用关系数据库。 在 第三章 中,我向你展示了第一个Flask扩展,在本章中,我还要用到两个。

neo4j企业版集群搭建

a 夏天 提交于 2019-12-09 19:30:14
一、HA高可用集群搭建 版本采用的是 neo4j-enterprise-3.5.3-unix.tar.gz 1.1、集群ip规划 192.168.56.10 neo4j-node1 192.168.56.11 neo4j-node2 192.168.56.12 neo4j-node3 192.168.56.13 neo4j-node4 192.168.56.14 neo4j-node5 1.2、免密登录配置 $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成秘钥 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #cp公钥到验证文件中 $ chmod 0600 ~/.ssh/authorized_keys 如上做免密登录,这里只做了neo4j-node1 免密登录其他节点 这里做不做免密,都可以,我做免密主要是为了方便,不需要一直输入密码,在正式环境中还是不用免密的好 1.3、修改主机名配置 /etc/hosts 配置 192.168.56.10 neo4j-node1 192.168.56.11 neo4j-node2 192.168.56.12 neo4j-node3 192.168.56.13 neo4j-node4 /etc/sysconfig/network 配置 hostname

maven创建archeType

点点圈 提交于 2019-12-09 18:55:41
一个需要创建模版的项目 1、创建archetype cd 到项目根目录下执行(pom.xml同级目录)。 mvn archetype:create-from-project 2、生成archetype模板 先 cd target/generated-sources/archetype/ 然后执行 mvn install 执行成功后,执行 crawl 命令,在本地仓库的根目录生成 archetype-catalog.xml 骨架配置文件: mvn archetype:crawl 3、模版使用 命令行使用 mvn archetype:generate -DarchetypeCatalog=local 然后会让你选择模板序号和 groupId``artifactId``version 和 package 信息: Choose archetype: 1: local -> com.fantj:my-self-defind-archtype-archetype (my-self-defind-archtype) Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1 Define value for property 'groupId': com.fantj

SpringBoot日志处理之Logback

此生再无相见时 提交于 2019-12-09 16:23:11
日志处理是一个正式项目必备的功能,日志要能够根据时间、类型等要素,根据指定格式来保存指定的日志,方便我们观察程序运行情况、定位程序bug。 SpringBoot 中推荐使用Logback日志框架。 本节示例项目在 https://github.com/laolunsi/spring-boot-examples slf4j:一个针对各类Java日志框架的统一facade抽象。 java 常见日志框架:java.util.logging, log4j, logback, commons-logging logback是log4j的作者开发的新一代日志框架,目前应用最广泛。SpringBoot默认使用logback,默认INFO级别 Logback: 日志加载顺序:logback.xml -> application.properties -> logback-spring.xml 一、日志级别 log4j定义的日志级别:debug/info/warn/error/fatal warn,潜在错误;error,错误,可能导致程序退出;fatal,严重错误,程序会退出 还有两个特殊的级别:OFF-最高级别,ALL-最低级别 log4j建议仅使用debug/info/warn/error四个级别 日志级别:ERROR -> WARN -> INFO -> DEBUG 如配置日志级别为INFO