一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Oracle

sysbench的安装详解

sysbench是一个压力测试工具、可以用它来测试cpu、mem、disk、thread、mysql、postgr、oracle;然而作为一个mysql dba 我当然是用它来压测mysql啦!   一、从哪里可以下载到sysbench: sysbench的源码可以在github上面下载的到,sysbench的主页

  二、sysbench的一些安装依赖:

在我的机器上已经安装上了mysql相关的所有包,如果你机器上还没有安装过这些,那你还要安装上mysql的开发包,由于系统自带mariadb 这个mysql分支,所以在安装mysql-devel时应该是安装mariadb-devel   三、安装sysbench: 1  进入到sysbench源码目录

2  执行autogen.sh用它来生成configure这个文件

3  执行configure && make && make install 来完成sysbench的安装

我这里之所以要这样写是因为我的mysql安装在/usr/local/;而不是默认的rpm的安装位置   四、测试是否安装成功:

到目前为止sysbench的安装就算是完成了!   五、sysbench的帮助内容如下:

  六、sysbench对数据库进行压力测试的过程: 1  prepare 阶段 这个阶段是用来做准备的、比较说建立好测试用的表、并向表中填充数据。 2  run       阶段 这个阶段是才是去跑压力测试的SQL 3  cleanup 阶段 这个阶段是去清除数据的、也就是prepare阶段初始化好的表要都drop掉   七、sysbench 中的测试类型大致可以分成内置的,lua脚本自定义的测试: 1、内置: fileio 、cpu 、memory 、threads 、 mutex 2、lua脚本自定义型: sysbench 自身内涵了一些测试脚本放在了安装目录下的:

  八、通过sysbench自带的lua脚本对mysql进行测试: 1、第一步 prepare

2、第二步 run

3、第三步 cleanup

  from:https://www.cnblogs.com/JiangLe/p/7059136.html

龙生   22 Mar 2019
View Details

SQL优化的一些实用方法

1、任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。因为只有该字段中有null值,即使创建了索引其实也 是没有用的,所以创建索引应该在有值的字段上创建; 2、使用该sql语句将不会使用索引:select * from employee where last_name like ‘%cliton%'; 这样的话会使用索引:     select * from employee where last_name like ‘cliton%'; 3、Order by语句 ORDER BY语句决定了Oracle如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或 者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。仔细检查order by语句以找出非索引项或者表达式,它们 会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by 子句中使用表达式。 4、 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句 中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 5、 SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 6、 减少访问数据库的次数,能使用一条sql语句查询出来的最好使用一条语句直接查询出来。  整合简单,无关联的数据库访问: 如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) 7、通过内部函数提高SQL效率.: 复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的 8、 使用表的别名(Alias): 当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起 的语法错误. 9、 用EXISTS替代IN、用NOT EXISTS替代NOT IN: 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的 效率. 在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个 全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS. 例: […]

龙生   07 Apr 2018
View Details