MySQL高性能学习笔记 (mysql高可用方案)

教程大全 2025-07-21 03:22:25 浏览

一、Ubuntu 安装mysql

我们在Ubuntu环境下装一个测试用的MySQL来学习。

1.更新包

2.安装MySQL的服务端和客户端

在安装的过程中,需要输入数据库密码。

3.启动Mysql

4.登录mysql

二、sysbench基准测试

sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。当前功能允许测试的系统参数有:

file I/O performance (文件I / O性能)

scheduler performance (调度性能)

memory allocation and transfer speed (内存分配和传输速度)

POSIX threads implementation performance (POSIX线程执行绩效)

database server performance (OLTP benchmark) (数据库 服务器 性能)

1.安装

Ubuntu系统可以直接apt,如:

在安装的时候出现了这样的错误:Could not get lock /var/lib/dpkg/lock

出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现此状况,解决的办法其实很简单:

在终端中敲入以下两句

再试着安装,问题解决。

2.通用选项说明

Usage: #使用方法

General options: #通用选项

–num-threads=N number of threads to use [1] #创建测试线程的数目。默认为1.

–max-requests=N limit for total number of requests [10000] #请求的最大数目。默认为10000,0代表不限制。

–max-time=N limit for total execution time in seconds [0] #最大执行时间,单位是s。默认是0,不限制。

–forced-shutdown=STRING amount of time to wait after –max-time before forcing shutdown [off] #超过max-time强制中断。默认是off。

–thread-stack-size=SIZE size of stack per thread [32K] #每个线程的堆栈大小。默认是32K。

–init-rng=[on|off] initialize random number generator [off] #在测试开始时是否初始化随机数发生器。默认是off。

–test=STRING test to run #指定测试项目名称。

–debug=[on|off] print more debugging info [off] #是否显示更多的调试信息。默认是off。

–validate=[on|off] perform validation checks where possible [off] #在可能情况下执行验证检查。默认是off。

–help=[on|off] print help and exit #帮助信息。

–version=[on|off] print version and exit #版本信息。

Compiled-in tests: #测试项目

fileio – File I/O test #IO

cpu – CPU performance test #CPU

memory – Memory functions speed test #内存

threads – Threads subsystem performance test #线程

mutex – Mutex performance test #互斥性能测试

oltp – OLTP test # 数据库,事务处理

Commands: prepare:测试前准备工作; run:正式测试 cleanup:测试后删掉测试数据 help version

See ‘sysbench –test= help’ for a list of options for each test. #查看每个测试项目的更多选项列表

更多选项:

1):sysbench –test=fileio help

fileio options:

–file-num=N 创建测试文件的数量。默认是128

–file-block-size=N 测试时文件块的大小。默认是16384(16K)

–file-total-size=SIZE 测试文件的总大小。默认是2G

–file-test-mode=STRING 文件测试模式{seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)}

–file-io-mode=STRING 文件操作模式{sync(同步),async(异步),fastmmap(快速map映射),slowmmap(慢map映射)}。默认是sync

–file-extra-flags=STRING 使用额外的标志来打开文件{sync,dsync,direct} 。默认为空

–file-fsync-freq=N 执行fsync()的频率。(0 – 不使用fsync())。默认是100

–file-fsync-all=[on|off] 每执行完一次写操作就执行一次fsync。默认是off

–file-fsync-end=[on|off] 在测试结束时才执行fsync。默认是on

–file-fsync-mode=STRING 使用哪种方法进行同步{fsync, fdatasync}。默认是fsync

–file-merged-requests=N 如果可以,合并最多的IO请求数(0 – 表示不合并)。默认是0

–file-rw-ratio=N 测试时的读写比例。默认是1.5

2):sysbench –test=cpu help

–cpu-max-prime=N 最大质数发生器数量。默认是10000

3):sysbench –test=memory help

memory options:

–memory-block-size=SIZE 测试时内存块大小。默认是1K

–memory-total-size=SIZE 传输数据的总大小。默认是100G

–memory-scope=STRING 内存访问范围{global,local}。默认是global

–memory-hugetlb=[on|off] 从HugeTLB池内存分配。默认是off

–memory-oper=STRING 内存操作类型。{read, write, none} 默认是write

–memory-access-mode=STRING存储器存取方式{seq,rnd} 默认是seq

4):sysbench –test=threads help

sysbench 0.4.12: multi-threaded system evaluation benchmark

threads options:

–thread-yields=N 每个请求产生多少个线程。默认是1000

–thread-locks=N 每个线程的锁的数量。默认是8

5):sysbench –test=mutex help

mutex options:

–mutex-num=N 数组互斥的总大小。默认是4096

–mutex-locks=N 每个线程互斥锁的数量。默认是50000

–mutex-Loops=N 内部互斥锁的空循环数量。默认是10000

6): sysbench –test=oltp help

oltp options:

–oltp-test-mode=STRING 执行模式{simple,complex(advanced transactional),nontrx(non-transactional),sp}。默认是complex

–oltp-reconnect-mode=STRING 重新连接模式{session(不使用重新连接。每个线程断开只在测试结束),transaction(在每次事务结束后重新连接),query(在每个SQL语句执行完重新连接),random(对于每个事务随机选择以上重新连接模式)}。默认是session

–oltp-sp-name=STRING 存储过程的名称。默认为空

–oltp-read-only=[on|off] 只读模式。Update,delete,insert语句不可执行。默认是off

–oltp-skip-trx=[on|off] 省略begin/commit语句。默认是off

–oltp-range-size=N 查询范围。默认是100

–oltp-point-selects=N number of point selects [10]

–oltp-simple-ranges=N number of simple ranges [1]

–oltp-sum-ranges=N number of sum ranges [1]

–oltp-ORDER-ranges=N number of ordered ranges [1]

–oltp-distinct-ranges=N number of distinct ranges [1]

–oltp-index-updates=N number of index update [1]

–oltp-non-index-updates=N number of non-index updates [1]

–oltp-nontrx-mode=STRING 查询类型对于非事务执行模式{select, update_key, update_nokey, insert, delete} [select]

–oltp-auto-inc=[on|off] AUTO_INCREMENT是否开启。默认是on

–oltp-connect-delay=N 在多少微秒后连接数据库。默认是10000

–oltp-user-delay-min=N 每个请求最短等待时间。单位是ms。默认是0

–oltp-user-delay-max=N 每个请求最长等待时间。单位是ms。默认是0

–oltp-table-name=STRING 测试时使用到的表名。默认是sbtest

–oltp-table-size=N 测试表的记录数。默认是10000

–oltp-dist-type=STRING 分布的随机数{uniform(均匀分布),Gaussian(高斯分布),special(空间分布)}。默认是special

–oltp-dist-iter=N 产生数的迭代次数。默认是12

–oltp-dist-pct=N 值的百分比被视为’special’ (for special distribution)。默认是1

–oltp-dist-res=N ‘special’的百分比值。默认是75

执行结果:

输出结果分析:

每秒请求数是:233.33 Requests/sec

吞吐量是:3.6458Mb/sec

清除运行文件:

5.清理测试时生成的文件

6.测试内存

7.测试mutex

8.测试OLTP

1,prepare阶段,生成需要的测试表

2,run阶段

3,清理测试时生成的测试表

三、服务器性能剖析

我们实际开发中,最常碰到三个性能相关的服务器请求:

1、如何确认服务器是否达到了性能最佳的状态;

2、找出某条语句为什么执行不够快

3、诊断被用户描述成“停顿”、“堆积”或“卡死”的某些间歇性疑难故障

找到慢的原因,我们才能够对症下药。

1、何为性能?

我们将性能定义为完成某件任务所需要的时间度量,换句话说,性能即响应时间。

完成一项任务所需要的时间可以分成两部分:执行时间和等待时间。

2、测量PHP应用程序

这里我们用一个PHP性能剖析工具,名叫ifP(instrumentation-for-php),代码托管在Google Code上(…),该工具可以更好的关注数据库的调用。所以当无法在数据库层面进行测试的时候,Ifp可以很好的帮助应用剖析数据库的利用率。Ifp是一个提供了计数器和计时器的单例类,很容易部署到生产环境中,因为不需要访问PHP的配置权限(因为对于很多开发人员来说,都没有访问PHP的配置的权限。)


mysql 支持的表类型有哪些

Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助,需要的朋友可以了解下学习Mysql数据库,Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助。 MySQL作为当前最为流行的免费数据库服务引擎,已经风靡了很长一段时间,不过也许也有人对于MySQL的内部环境不很了解,尤其那些针对并发性处理的机制。 今天,我们先了解一下Mysql表类型,以及它们的一些简单性质。 截至目前,MySQL一共向用户提供了包括DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni这7种Mysql表类型。 其中DBD、InnoDB属于事务安全类表,而其他属于事务非安全类表。 DBDBerkeley DB(DBD)表是支持事务处理的表,由Sleepycat软件公司开发。 它提供MySQL用户期待已久的功能--事务控制。 事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行或回滚。 HEAPHEAP表是MySQL中存取数据最快的表。 这是因为他们使用存储在动态内存中的一个散列索引,不过如果MySQL或服务器崩溃,这些内存数据将会丢失。 ISAMISAM表是早期MySQL版本的缺省表类型,直到MyIASM开发出来。 建议不要再使用它。 MERGEMERGE是一个有趣的新类型,在3.23.25之后出现。 一个MERGE表实际上是又一个MyISAM表的集合,合并而成的一个表,主要是为了效率的考虑,因为这样不仅仅可以提高速度、搜索效率、修复效率而且还节省了磁盘空间。 MyIASMMyIASM基于了IASM代码,应该可以说是IASM的衍生品,不过增加了不少有用的扩展。 它是MySQL的默认数据表类型,基于了传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问方法)的缩写,一般来说,它是存储记录和文件的标准方法。 与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具。 ISAM表格可以被压缩,而且它们支持全文搜索,不过它们是事务不安全的,而且也不支持外键。 如果事务回滚将会造成不完全回滚,从而不具备原子性。 所以假如忽略事务以及访问并发性的话,并且需要执行大量的SELECT检索语句的话,MyISAM将是最好的选择。 InnoDBInnoDB是MySQL 4.0之后推出的一种比较新的数据表类型,这种类型是事务安全的。 它与BDB类型具有相同的特性,它们还支持外键。 InnoDB表格速度很快具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,同样应该使用InnoDB表。 对于支持事务的InnoDB类型的表来说,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动提交,严重影响了速度。 可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。 GemeniGemeni表,据听说也是在MySQL 4.0之后推出的,不过截至当前,很少有针对它的介绍,同样应用也就更少了,我们暂时不作介绍。 MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种。 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型。 下面做个简单的对比:MyISAM表类型是一种比较成熟稳定的表类型,但是MyISAM对一些功能不支持。

哪些是常用的sql语句

--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表altER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域

如何在MYSQL数据库中设置密码

use mysql insert into user (host,user,password) values (’%’,’user_name’,’your password’); flush privileges; 相信结果不会让你满意.因为服务器比较的是加密的值,所以服务器连接一定失败.这里需要说明的是flush privileges;这条 命令起到了重新加载授权表.你也可以在shell下直接用mysqladmin -u root reload或者mysqladmin -u root flush-privileges来 实现重载授权表. 在MySQL环境下,你可以使用以下语句进行设置密码:  into user(host,user,password) values(’%’,’user_name’,password(your password);  password for user_name = password(your password) 以上两种方法都必须进行重载授权表. 3.当然你也可以在创建一个用户时直接设置密码,grant语句将为你自动加密口令. 示例:grant all on *.* to@ identified by your password; 另外大家也可以在shell环境下用mysqladmin程序来设置密码。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐