目录
一、mysqltuner.pl
工具的下载及部署
下载脚本
MySQLTuner 使用方法
二、数据库性能测试工具--sysbench
三、性能压测工具 -- mysql自带压测工具
四、ab性能压测工具
哪些东西会影响mysql的性能?
1. 硬件
2. 系统配置
3. 数据表结构
4. SQL以及索引
一、mysqltuner.pl
工具的下载及部署
解决环境依赖,因为工具是perl脚本开发的,需要perl脚本环境
yum install -y perl*
下载脚本
在http://mysqltuner.com/下载major-MySQLTuner-perl-1.6.0-142-g42593c6.zip 将下载的mysqltuner.pl文件上传到需要测试的mysql服务器中
# chmod +x mysqltuner.pl
或
git clone https://github.com/major/MySQLTuner-perl.git
MySQLTuner 下载地址:http://github.com/rackerhacker/MySQLTuner-perl
MySQLTuner 使用方法
cd MySQLTuner-perl
./mysqltuner.pl
二、数据库性能测试工具--sysbench
sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试
wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
解压后
cd sysbench-1.0
执行autogen.sh用它来生成configure这个文件
./autogen.sh
执行configure && make && make install 来完成sysbench的安装
./configure && make && make install 这个命令是用于mysql默认的安装路径
./configure --prefix=/usr/local/sysbench/ --with-mysql --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib 这个是用于指定mysql安装的路径(我的mysql是默认路径,所以我用第一种)
当然了,用上面的参数编译的话,就要确保你的 MySQL lib目录下有对应的 so 文件,如果没有,可以自己下载 devel 或者 share 包来安装。
另外,如果想要让 sysbench 支持 pgsql/oracle 的话,就需要在编译的时候加上参数
--with-pgsql
或者
--with-oracle
这2个参数默认是关闭的,只有 MySQL 是默认支持的
执行之后出现这个错误
这是缺少MySQL头文件和库文件
centos6用:
yum install MySQL-shared
yum install MySQL-devel
centos7用:
yum install -y Percona-XtraDB-Cluster-shared-56.x86_64
yum install -y Percona-XtraDB-Cluster-devel-56
重新 ./configure && make && make install
测试:sysbench cpu --cpu-max-prime=10000 run
出现这个就是成功
sysbench支持以下几种测试模式:
1、CPU运算性能
2、磁盘IO性能
3、调度程序性能
4、内存分配及传输速度
5、POSIX线程性能
6、数据库性能(OLTP基准测试)
目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。
OLTP测试前准备
初始化测试库环境(总共10个测试表,每个表 100000 条记录,填充随机生成的数据):
cd /tmp/sysbench-0.4.12-1.1/sysbench
mysqladmin create sbtest
./sysbench --mysql-host=1.2.3.4 --mysql-port=3317 --mysql-user=tpcc --mysql-password=tpcc \
--test=tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --rand-init=on prepare
prepare
关于这几个参数的解释:
--test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试
--oltp_tables_count=10 表示会生成 10 个测试表
--oltp-table-size=100000 表示每个测试表填充数据量为 100000
--rand-init=on 表示每个测试表都是用随机数据来填充的
如果在本机,也可以使用 –mysql-socket 指定 socket 文件来连接。加载测试数据时长视数据量而定,若过程比较久需要稍加耐心等待。
真实测试场景中,数据表建议不低于10个 ,单表数据量不低于500万行 ,当然了,要视服务器硬件配置而定。如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行 。
进行OLTP测试
在上面初始化数据参数的基础上,再增加一些参数,即可开始进行测试了:
./sysbench --mysql-host=1.2.3.4. --mysql-port=3306 --mysql-user=tpcc \
--mysql-password=tpcc --test=tests/db/oltp.lua --oltp_tables_count=10 \
--oltp-table-size=10000000 --num-threads=8 --oltp-read-only=off \
--report-interval=10 --rand-type=uniform --max-time=3600 \
--max-requests=0 --percentile=99 run >> ./log/sysbench_oltpX_8_20140921.log
几个选项稍微解释下
--num-threads=8 表示发起 8个并发连接
--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试
--report-interval=10 表示每10秒输出一次测试进度报告
--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
--max-time=120 表示最大执行时长为 120秒
--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值
即:模拟 对10个表并发OLTP测试,每个表1000万行记录,持续压测时间为 1小时。
真实测试场景中,建议持续压测时长不小于30分钟,否则测试数据可能不具参考意义
测试结果解读:
sysbench 0.5: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Random number generator seed is 0 and will be ignored
Threads started!
-- 每10秒钟报告一次测试结果,tps、每秒读、每秒写、99%以上的响应时长统计
[ 10s] threads: 8, tps: 1111.51, reads/s: 15568.42, writes/s: 4446.13, response time: 9.95ms (99%)
[ 20s] threads: 8, tps: 1121.90, reads/s: 15709.62, writes/s: 4487.80, response time: 9.78ms (99%)
[ 30s] threads: 8, tps: 1120.00, reads/s: 15679.10, writes/s: 4480.20, response time: 9.84ms (99%)
[ 40s] threads: 8, tps: 1114.20, reads/s: 15599.39, writes/s: 4456.30, response time: 9.90ms (99%)
[ 50s] threads: 8, tps: 1114.00, reads/s: 15593.60, writes/s: 4456.70, response time: 9.84ms (99%)
[ 60s] threads: 8, tps: 1119.30, reads/s: 15671.60, writes/s: 4476.50, response time: 9.99ms (99%)
OLTP test statistics:
queries performed:
read: 938224 -- 读总数
write: 268064 -- 写总数
other: 134032 -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
total: 1340320 -- 全部总数
transactions: 67016 (1116.83 per sec.) -- 总事务数(每秒事务数)
deadlocks: 0 (0.00 per sec.) -- 发生死锁总数
read/write requests: 1206288 (20103.01 per sec.) -- 读写总数(每秒读写次数)
other operations: 134032 (2233.67 per sec.) -- 其他操作总数(每秒其他操作次数)
General statistics: -- 一些统计结果
total time: 60.0053s -- 总耗时
total number of events: 67016 -- 共发生多少事务数
total time taken by event execution: 479.8171s -- 所有事务耗时相加(不考虑并行因素)
response time: -- 响应时长统计
min: 4.27ms -- 最小耗时
avg: 7.16ms -- 平均耗时
max: 13.80ms -- 最长耗时
approx. 99 percentile: 9.88ms -- 超过99%平均耗时
Threads fairness:
events (avg/stddev): 8377.0000/44.33
execution time (avg/stddev): 59.9771/0.00
其他信息可以参考这个连接: http://www.linuxidc.com/Linux/2017-04/142856.htm
实时操作:
/usr/local/bin/sysbench oltp_common --mysql-host=10.1.18.74 --mysql-port=3306 --table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root--mysql-password=root prepare
此命令用来生成表
oltp_common #生成库的脚本
--mysql-db=test#指定库
prepare #运行的命令
--oltp_tables_count=10 用来指定生成多少张表
/usr/local/bin/sysbench oltp_write_only --mysql-host=10.1.18.74 --mysql-port=3306 --table-size=1000 --db-driver=mysql --mysql-db=test --mysql-user=hairong.cao --mysql-password=hairong.cao --time=10 --max-requests=0 --threads=8 run
oltp_write_only #指定只写脚本
生成表:
/usr/local/bin/sysbench tests/include/oltp_legacy/oltp.lua --mysql-host=10.1.18.74 --mysql-port=3306 --oltp_tables_count=8 --table-size=10000000 --db-driver=mysql --mysql-db=test --mysql-user=hairong.cao --mysql-password=hairong.cao prepare
混合场景压测:
/usr/local/bin/sysbench tests/include/oltp_legacy/oltp.lua --mysql-host=10.1.18.74 --mysql-port=3306 --table-size=10000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=root --oltp_tables_count=8 --max-requests=0 --threads=32 --oltp-read-olny=off --report-interval=10 --percentile=99 --max-time=3600 run >> ./logs/baidu.log
cpu测试:
/usr/local/bin/sysbench --test=cpu --num-threads=40 --max-requests=10000 --cpu-max-prime=20000 run
IO测试:
生成测试文件; /usr/local/bin/sysbench --test=fileio --file-num=10 --file-total-size=5G prepare 表示生成10个5G的文件
运行测试: /usr/local/bin/sysbench --test=fileio --file-total-size=5G --file-test-mode=rndrw --max-requests=5000 --num-threads=16 --file-num=10 --file-extra-flags=direct --file-fsync-freq=0 --file-block-size=16384 run
参数说明: --max-requests=5000 表示5000请求量
--num-threads=16 16个线程
File operations: reads/s: 1791.40 表示每秒读的次数 writes/s: 1188.31 表示每秒写的次数 fsyncs/s: 5.96 表示每秒从内存向磁盘同步的次数
Throughput: read, MiB/s: 27.99 这里表示读的带宽 written, MiB/s: 18.57 这里表示写的带宽
三、性能压测工具 -- mysql自带压测工具
mysqlslap是mysql自带的基准测试工具。
优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性能优化前后提供了直观的验证依 据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户 流量上限及其抗压性等问题。
语法#
mysqlslap [options]
--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试
并发压力。
--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是
两者混合的。取值包括:read,key,write,update和mixed(默认)。
--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从
5.1.18版本开始支持。
--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
--query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测
试。
--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
--commint=N 多少条DML后提交一次。
--compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。
--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗
号或者
--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。
--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:-
-engines=myisam,innodb。
--iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。
--only-print 只打印测试语句而不实际执行。
--detach=N 执行N条语句后断开重连。
--debug-info, -T 打印内存和CPU的相关信息。
测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap 的schema,如果存在则删除。可以用--only-print来打印实际的测试过程,整个测试完成后不会在数据 库中留下痕迹。
mysqlslap --help
单线程测试。测试做了什么。
mysqlslap -a -u root -p
多线程测试。使用–concurrency来模拟并发连接。
mysqlslap -a -c 100 -u root -p
打印参数解释:
Benchmark
Average number of seconds to run all queries: 0.344 seconds ## 100个客户端(并发)
同时运行这些SQL语句平均要花0.351秒
Minimum number of seconds to run all queries: 0.344 seconds
Maximum number of seconds to run all queries: 0.344 seconds
Number of clients running queries: 100 ## 总共100个客户端(并发)运行这些sql查询
Average number of queries per client: 0 ## 每个客户端(并发)平均运行50次查询(对应--
concurrency=100
测试100个并发线程,测试次数1次,自动生成SQL测试脚本,读、写、更新混合测试,自增长字段,测试引擎
为innodb,共运行5000次查询
mysqlslap -u root -p -c 100 -i 1 -a --auto-generate-sql-load-type=mixed --autogenerate-sql-add-autoincrement -e innodb --number-of-queries=5000
mysqlslap -h 127.0.0.1 -u root -p -c 100 -i 1 --create-schema tipaskx -q "select
count(*) from ask_users" -e innodb --number-of-queries=5000
注意这里:在进行-c测试的时候容易出现
执行
mysqlslap -a -c 1000 -u root -p
出现
mysqlslap: Error when connecting to server: 1040 Too many connections
这个问题的主要是连接的超过了最大的连接次数导致的,解决办法修改MySQL的配置文件my.cnf或 my.ini 设置max_connections 的值然后重启;
-- 查看连接数
show variables like 'max_conn%';
四、ab性能压测工具
ab官网 http://httpd.apache.org/docs/2.0/programs/ab.html
apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它 Web服务器的压力。
ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服 务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上 太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。
操作
cd \xxx\xxx\xxx\Apache\bin
ab -n 800 -c 800 http://127.0.0.1/phpinfo.php
(-n发出800个请求,-c模拟800并发,相当800人同时访问,后面是测试url)
ab -t 60 -c 100 http://127.0.0.1/phpinfo.php
在60秒内发请求,一次100个请求。
-n在测试会话中所执行的请求个数。默认时,仅执行一个请求。
-c一次产生的请求个数。默认是一次一个。
-t测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以
内。默认时,没有时间限制。
-p包含了需要POST的数据的文件。
-P对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器
是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-T POST数据所使用的Content-type头信息。
-v设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大
值可以显示警告和其他信息。
-V显示版本号并退出。
-w以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i执行HEAD请求,而不是GET。
-x设置属性的字符串。
-X对请求使用代理服务器。
-y设置属性的字符串。
-z设置属性的字符串。
-C对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。
-H对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的
对(如,"Accept-Encoding:zip/zop;8bit")。
-A对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需
要(即,是否发送了401认证需求代码),此字符串都会被发送。
-h显示使用方法。
-d不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-e产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百
分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-g把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到
Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
-i执行HEAD请求,而不是GET。
-k启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
-q如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q
标记可以抑制这些信息。
在进行性能测试过程中有几个指标比较重要:
1、吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求 数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
记住:吞吐率是基于并发用户数的。
这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的
计算公式:总请求数/处理完成这些请求数所花费的时间,即 Request per second=Complete requests/Time taken for tests 必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。
2、并发连接数(The number of concurrent connections) 并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
3、并发用户数(Concurrency Level) 要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在 HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的, 我们的并发用户数就得除以这个基数。
4、用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即: editor Time per request=Time taken for tests/(Complete requests/Concurrency Level)
5、服务器平均请求等待时间(Time per request:across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间/总请求数,即: Tim taken for/testsComplete requests 可以看到,它是吞吐率的倒数。同时,它也等于用户平均请求等待时间/并发用户数,即 Time per request/Concurrency Level
你可能感兴趣的:(数据库)
CentOS下通过yum搭建完整lnmp环境(安装单版本PHP)
云计算课代表
日常运维问题合集 centos php linux 服务器 运维 nginx
lnmp即Linux+Nginx+Mysql+PHP,本文以CentOS7.x为例介绍如何通过yum的方式搭建完整的lnmp环境。实现目标1、通过yum方式安装nginx、mysql8.0、php7.42、安装php模块,部署网站,实现运行php,读取数据库安装相应软件1、安装nginx并部署网站参考下方教程选择yum方式安装nginx,并且建立一个虚拟主机站点。如何在CentOS7.x中安装ng
2024了,Neo4j能显示节点图片吗?
落叶阳光
工具篇 neo4j
经过一番调研,答案是官方的是不能的.但有一个中文版可以显示网络图片作为节点背景如通义千问说说:Neo4j图数据库本身并不直接支持在节点中存储和显示图片。但是,你可以通过几种方式间接实现这一功能:1.存储图片URL最简单的方式是在节点属性中存储指向图片的URL链接。这种方式不需要在Neo4j中存储实际的图片文件,只需要在展示数据时通过URL加载图片即可。cypher浅色版本CREATE(:Perso
使用Python 访问Neo4J 数据库
依旧阳光的老码农
知识图谱 Neo4J 数据库 python neo4j 知识图谱
前期准备工作安装Neo4jPython库要与Neo4j数据库交互,你需要安装Neo4j的Python客户端库。可以通过以下命令安装:pipinstallneo4j基本步骤以下是使用Neo4j的基本步骤,每一步都包含了详细的说明:引入库定义连接参数创建驱动实例创建会话执行Cypher查询处理查询结果关闭会话和驱动其它业务操作代码示例2.1执行单行查询语句以下是一个执行单行Cypher查询语句的示例,
向量数据库 和 关系数据库的区别
SwBack
技术研究 向量数据库 Milvus mysql
向量数据库和关系数据库在架构和数据组织方式上有明显的区别。下面将详细解释向量数据库中的数据库、集合、数据、索引、分区等概念,以及它们之间的关系,并将其与MySQL这样的关系数据库中的数据库、表、列、索引等概念进行对比。向量数据库的架构数据库(Database)定义:向量数据库中的数据库是一个逻辑容器,用于存储和组织数据集合(类似于MySQL中的数据库)。作用:主要用于组织多个集合。每个数据库可以包
Oracle常用操作
promise524
oracle 数据库 sql database
Oracle数据库中常用的操作,包括增删改查、同义词创建、合并更新、建表、建索引、聚合查询和多表查询。通过这些操作,可以有效地管理和查询Oracle数据库中的数据,日常工作中也会事半功倍。增删改查插入数据(INSERT)INSERTINTOemployees(employee_id,first_name,last_name,email,hire_date,job_id,salary)VALUES(
微服务CI/CD实践(二)服务器先决准备
lbmydream
微服务 ci/cd 服务器
微服务CI/CD实践系列:微服务CI/CD实践(一)环境准备及虚拟机创建微服务CI/CD实践(二)服务器先决准备微服务CI/CD实践(三)gitlab部署微服务CI/CD实践(四)nexus3部署微服务CI/CD实践(五)数据库,redis,nacos等基础中间件部署微服务CI/CD实践(六)Jenkins部署微服务CI/CD实践(七)Server服务器环境初始化微服务CI/CD实践(八)Jenk
java-net-php-python-ssmKTV点歌系统查重PPT计算机毕业设计程序
荣荣科技
java php 开发语言
java-net-php-python-ssmKTV点歌系统查重PPT计算机毕业设计程序java-net-php-python-ssmKTV点歌系统查重PPT计算机毕业设计程序本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5
SQL软删除:数据的优雅告别
2401_85742452
sql oracle 数据库
标题:“SQL软删除:数据的优雅告别”在数据库管理中,数据删除是一个常见操作,但直接删除数据可能会导致数据丢失和历史信息的不可追溯。为了解决这个问题,我们引入了软删除的概念。软删除是一种标记数据为已删除,但实际保留在数据库中的方法。本文将详细介绍如何使用SQL实现软删除,并提供详细的代码示例,以帮助你优雅地告别不再需要的数据。一、软删除的概念软删除,也称为逻辑删除或假删除,是一种不从数据库中真正删
如何高效记录并整理编程学习笔记
vvvae1234
学习 笔记
在编程学习的旅程中,好的笔记记录和整理方法不仅能帮助我们更有效地吸收知识,还能在复习时提供清晰的参考。下面,我将为您提供一些建立高效笔记系统的建议,以帮助您在繁忙学习中保持笔记的条理性,从而打造属于自己的编程学习“知识宝库”。方向一:笔记工具选择提示:1.Notion优点:多功能性:Notion支持笔记、数据库、任务管理和项目管理,用户可以根据自己的需求创建不同工作区和模块。灵活性:支持Markd
ora_12516:TNS:监听程序找不到符合协议堆栈要求的可用处理程序
cc_0101
oracle数据库
1、问题描述远程登录数据库时报错:出现问题后去数据库告警文件alert.log中查看,发现报错如下:2、问题原因错误信息一般在Oracle实例在创建一些辅助后台进程(如mmon的子进程m00x或者子进程W00x等)时出现进程启动失败时出现,而造成该错误的可能性有多种,包括Oracle实例资源不足、操作系统资源不足等等。其中较为常见的是数据库在实际运行过程中实例instance的process使用达
ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序“ 解决方案
D2cOneluo
pl/sql Oracle ORA-12516
报错场景:使用调度的时候出现作业一直显示在运行,数据库日志显示成功,调度数据库显示正在运行,tomcatlog日志显示ORA-125160登陆pl/sql发现登录不了,报错根本原因就是因为oracle的process和session已经达到甚至超过最大值了(不局限于pc机登陆的台数,pl/sql新增一个运行窗口也会增加),接下来就详细说明一下解决方案。查看procress&session的参数值和
数据之网:SQL在网络数据模型中的巧妙运用
2401_85761003
sql 数据库
标题:数据之网:SQL在网络数据模型中的巧妙运用在信息时代,数据之间的关系错综复杂,如同一张庞大的网络。网络数据模型以其独特的方式,模拟了现实世界中实体间的复杂联系。SQL(StructuredQueryLanguage),作为关系型数据库的核心语言,在操作网络数据模型中扮演着至关重要的角色。本文将深入探讨如何使用SQL进行网络数据模型的操作,包括数据的查询、更新、插入和删除等。1.网络数据模型概
解决 `java.sql.SQLException` 的正确方法
神码兄弟
bug修复 java oracle 开发语言
在开发过程中,java.sql.SQLException是一个常见但令人头疼的问题。这篇博客将带你一步步分析该异常的产生原因,并提供切实有效的解决方案。1.问题分析java.sql.SQLException是JDBC中的通用异常,通常在数据库操作失败时抛出。它可以由多种原因引起,包括连接失败、SQL语句错误、权限不足等。因此,分析和定位问题的根本原因是解决问题的第一步。2.出现问题的场景在某个项目
redis一文入门
鲨鱼学python
redis 数据库 python
Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。它非常高效,广泛用于需要快速读写操作的应用场景。一、redis启动1、启动Redis服务器打开命令提示符(CMD)窗口,并进入Redis安装目录下的src文件夹。然后运行以下命令来启动Redis服务器:redis-server2、启动redis客户端另打
mysql批量导出多个数据库_利用脚本批量导出数据库数据
weixin_39621235
mysql批量导出多个数据库
一环境说明:我有100多台机器,需要去每台机器上面的数据库导出对应的数据,并且需要传两个参数服务器ip和数据库id,导出来之后,再把所有的文件合成一个excle文件二实现过程:1首先自己整理一份ip对应id的文件,例如:`3070c023c4294c6faff627467a2ba8b058.116.1.1`2写一个导出数据的脚本#!/bin/baship=$1id=$2mysql-uedu_pla
使用Spring框架下的JdbcTemplate 完成对数据库的增删改查操作
试着奔跑的菜鸟
java spring spring 框架 技术 eclipse
还记得以前做的毕业设计是用的C3P0包,而当时并没有使用到三大框架。现在毕业工作了,但是感觉要学的比工作深一层,一是提高自己的能力,二是以防万一要换工作了,起码掌握的东西能支撑自己以后的工作。不过这时候感觉自己就像java萌新(不,其实就是。)现在第一篇技术相关的文章就写我第一次用Spring框架操作数据库吧,可能Spring的版本旧了,但是刚学应该之后的不会有太大影响,不过要注意当前版本最好是跟
JDBC---数据库连接
yyyyyyykk
java
一.JDBC的概述1.JDBC(JavaDateBaseConnectivity)java数据库连接。是一种用于执行SQL语句的JavaAPI,可以为多种关系型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,java开发人员就只需要写一次程序,就可以访问不同的数据库,但是不同的数据库具体的连接细节是不同的,并且这些细节不是通过java来实现的,是由数据库的开发商来实现,
多个sql文件合成一份
寂寞旅行
杂七杂八 sql 数据库
文章目录前言一、合并sql二、使用步骤1.windows2.linux总结前言导入.sql文件的时候,当然是越少约好了不过由于代码生成,或者其他原因,有时候会有多分sql文件,此时给导入数据库的工作,增加了很多重复性的工作,如何解决呢?一、合并sql可以通过命令将多个文件,合并成一个.sql文件,这样就方便多了二、使用步骤1.windows例如我有多个sql文件copy*.sqlall.sql2.
【Faiss】构建高效搜索系统 - Faiss向量数据库的搭建
何遇mirror
大数据 faiss
目录编辑1.引言2.Faiss简介3.安装与配置3.1在不同操作系统上的安装方法3.1.1Windows3.1.2macOS3.1.3Linux3.2配置开发环境3.2.1使用virtualenv3.2.2使用Anaconda1.引言在当今这个数据爆炸的时代,快速有效地处理海量数据已经成为企业和研究机构面临的重大挑战之一。特别是在计算机视觉、自然语言处理等领域,面对大量的高维向量数据,传统的数据库
向量数据库入坑:传统文本检索方式的降维打击,使用 Faiss 实现向量语义检索
soulteary
为了不折腾而去折腾的那些事 faiss 向量检索 语义检索 文本检索 搜索引擎
在上一篇文章《聊聊来自元宇宙大厂Meta的相似度检索技术Faiss》中,我们有聊到如何快速入门向量检索技术,借助MetaAI(FacebookResearch)出品的faiss实现“最基础的文本内容相似度检索工具”,初步接触到了“语义检索”这种对于传统文本检索方式具备“降维打击”的新兴技术手段。有朋友在聊天中提到,希望能够聊点更具体的,比如基于向量技术实现的语义检索到底比传统文本检索强多少,以及是
【大模型】FAISS向量数据库记录:从基础搭建到实战操作
爱python的王三金
自然语言处理 LLM RAG faiss 数据库 rag
文章目录文章简介Embedding模型BGE-M3模型亮点FAISS是什么FAISS实战安装faiss加载Embedding模型创建FAISS数据库搜索FAISS数据删除FAISS数据保存、加载FAISS索引总结本人数据分析领域的从业者,拥有专业背景和能力,可以为您的数据采集、数据挖掘和数据分析需求提供支持。期待着能够与您共同探索更多有意义的数据洞见,为您的项目和业务提供数据分析方面的帮助。文章简
情报收集技术深度解析(一):基本信息与域名信息收集技术
Alfadi联盟 萧瑶
网络安全 信息与通信
在网络安全与情报分析领域,高效的情报收集是确保网络安全、竞争对手分析、威胁狩猎等工作的基础。本文将深入探讨基本信息收集和域名信息收集的两大核心技术模块,包括但不限于GoogleHacking、网络空间搜索引擎、操作系统/中间件/源代码/数据库信息获取,以及域名收集工具的使用方法与实战技巧。一、基本信息收集技术1.GoogleHackingGoogleHacking是一种利用高级搜索语法和特定关键词
数据世界的新篇章:精通INSERT INTO数据插入艺术
2401_85439108
oracle 数据库
标题:数据世界的新篇章:精通INSERTINTO数据插入艺术在数据库管理的宏伟画卷中,INSERTINTO语句扮演着至关重要的角色。它是将新数据记录插入到表中的基石。本文将带领你深入理解INSERTINTO语句的精髓,并通过丰富的代码示例,展示如何运用这一功能将数据准确无误地嵌入到数据库中。1.INSERTINTO的基本概念INSERTINTO是SQL语言中用于向数据库表中添加新行的标准语句。每一
mvcc机制中的快照读和当前读
木小同
面试 数据库 java MVCC 快照读 当前读
什么是MVCC?MCVV(MultiversionConcurrencyControl),多版本并发控制是InnoDB引擎处理读写冲突的手段,目的是用来提高数据库并发场景下的吞吐性能。不同的事务在并发过程中,SELECT操作可以不加锁,而是通过MVCC机制来指定读取版本,通过一些手段来保证读取的数据符合事务隔离级别,从而解决并发场景下的读写冲突版本链又称事务链,每次修改数据的时候,都会记录一条un
分布式唯一id的7种方案
木小同
面试 分布式 分布式id 雪花算法
背景为什么需要使用分布式唯一id?如果我们的系统是单体的,数据库是单库,那无所谓,怎么搞都行。但是如果系统是多系统,如果id是和业务相关,由各个系统生成的情况下,那每个主机生成的主键id就是不可控的,多个主机就有可能会造成主键冲突的问题。方案1、数据库自增1024表,不是依赖每一张表的自增主键,不同的表都从1开始累加id专门搞一个库,搞一个表,专门用于生成全局唯一id,insertinto插入一条
2020-08-20
千言万语纪录点滴
一、基础1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver---创建备份数据的deviceUSEmasterEXECsp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat'---开始备份BACKUPDATABASEp
分库分表学习笔记(一)
Murphy.Wang
关系型数据库 数据库
图源(鹅厂技术架构师公众号)MySQL执行顺序:FROM:确定数据来源。JOIN:执行表之间的连接操作。WHERE:过滤记录。GROUPBY:对记录进行分组。HAVING:对分组结果进行过滤。SELECT:选择要返回的列。DISTINCT:去除重复记录(如果有)。ORDERBY:对结果排序。LIMIT:限制返回的记录数量。分表分库的演进系统随着用户量的提升,整个分库分表有以下阶段,随着数据库QPS
微信抽奖源码PHP前后台+转盘+数据库完整示例
爱分享的小佳
微信抽奖源码PHP前后台+转盘+数据库完整示例微信抽奖源码PHP前后台+转盘+数据库完整示例微信抽奖源码PHP前后台+转盘+数据库完整示例微信抽奖源码PHP前后台+转盘+数据库完整示例文件下载:n459.com/file/25127180-476422600以下内容无关:-------------------------------------------分割线------------------
oracle查看编码以及修改编码
七七仔17
oracle parameters 数据库 database character system
首先查看oracle数据库的编码SQL>select*fromnls_database_parameterswhereparameter='NLS_CHARACTERSET';PARAMETER--------------------VALUE--------------------NLS_CHARACTERSETAL32UTF8这其来源于props$,这是表示数据库的字符集。oracle客户端编
向量数据库Faiss(Facebook AI Similarity Search)
shiming8879
数据库 faiss 人工智能
向量数据库Faiss(FacebookAISimilaritySearch)是FacebookAIResearch开发的一款高效且可扩展的相似性搜索和聚类库,专门用于处理大规模向量数据的搜索和检索任务。Faiss以其出色的性能和灵活性,在图像检索、文本搜索、推荐系统等多个领域得到了广泛应用。以下将详细介绍Faiss的搭建与使用过程,包括安装、基本使用、索引类型选择、性能优化及应用场景等方面。一、F
apache ftpserver-CentOS config
gengzg
apache
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://mina.apache.o
优化MySQL数据库性能的八种方法
AILIKES
sql mysql
1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很
JeeSite 企业信息化快速开发平台
Kai_Ge
JeeSite
JeeSite 企业信息化快速开发平台
平台简介
JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。
JeeSite本身是以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流
通过Spring Mail Api发送邮件
120153216
邮件 main
原文地址:http://www.open-open.com/lib/view/open1346857871615.html
使用Java Mail API来发送邮件也很容易实现,但是最近公司一个同事封装的邮件API实在让我无法接受,于是便打算改用Spring Mail API来发送邮件,顺便记录下这篇文章。 【Spring Mail API】
Spring Mail API都在org.spri
Pysvn 程序员使用指南
2002wmj
SVN
源文件:http://ju.outofmemory.cn/entry/35762
这是一篇关于pysvn模块的指南.
完整和详细的API请参考 http://pysvn.tigris.org/docs/pysvn_prog_ref.html.
pysvn是操作Subversion版本控制的Python接口模块. 这个API接口可以管理一个工作副本, 查询档案库, 和同步两个.
该
在SQLSERVER中查找被阻塞和正在被阻塞的SQL
357029540
SQL Server
SELECT R.session_id AS BlockedSessionID ,
S.session_id AS BlockingSessionID ,
Q1.text AS Block
Intent 常用的用法备忘
7454103
.net android Google Blog F#
Intent
应该算是Android中特有的东西。你可以在Intent中指定程序 要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料 。都指定好后,只要调用startActivity(),Android系统 会自动寻找最符合你指定要求的应用 程序,并执行该程序。
下面列出几种Intent 的用法
显示网页:
Spring定时器时间配置
adminjun
spring 时间配置 定时器
红圈中的值由6个数字组成,中间用空格分隔。第一个数字表示定时任务执行时间的秒,第二个数字表示分钟,第三个数字表示小时,后面三个数字表示日,月,年,< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
测试的时候,由于是每天定时执行,所以后面三个数
POJ 2421 Constructing Roads 最小生成树
aijuans
最小生成树
来源:http://poj.org/problem?id=2421
题意:还是给你n个点,然后求最小生成树。特殊之处在于有一些点之间已经连上了边。
思路:对于已经有边的点,特殊标记一下,加边的时候把这些边的权值赋值为0即可。这样就可以既保证这些边一定存在,又保证了所求的结果正确。
代码:
#include <iostream>
#include <cstdio>
重构笔记——提取方法(Extract Method)
ayaoxinchao
java 重构 提炼函数 局部变量 提取方法
提取方法(Extract Method)是最常用的重构手法之一。当看到一个方法过长或者方法很难让人理解其意图的时候,这时候就可以用提取方法这种重构手法。
下面是我学习这个重构手法的笔记:
提取方法看起来好像仅仅是将被提取方法中的一段代码,放到目标方法中。其实,当方法足够复杂的时候,提取方法也会变得复杂。当然,如果提取方法这种重构手法无法进行时,就可能需要选择其他
为UILabel添加点击事件
bewithme
UILabel
默认情况下UILabel是不支持点击事件的,网上查了查居然没有一个是完整的答案,现在我提供一个完整的代码。
UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, listV.frame.size.width - 60, listV.frame.size.height)]
NoSQL数据库之Redis数据库管理(PHP-REDIS实例)
bijian1013
redis 数据库 NoSQL
一.redis.php
<?php
//实例化
$redis = new Redis();
//连接服务器
$redis->connect("localhost");
//授权
$redis->auth("lamplijie");
//相关操
SecureCRT使用备注
bingyingao
secureCRT 每页 行数
SecureCRT日志和卷屏行数设置
一、使用securecrt时,设置自动日志记录功能。
1、在C:\Program Files\SecureCRT\下新建一个文件夹(也就是你的CRT可执行文件的路径),命名为Logs;
2、点击Options -> Global Options -> Default Session -> Edite Default Sett
【Scala九】Scala核心三:泛型
bit1129
scala
泛型类
package spark.examples.scala.generics
class GenericClass[K, V](val k: K, val v: V) {
def print() {
println(k + "," + v)
}
}
object GenericClass {
def main(args: Arr
素数与音乐
bookjovi
素数 数学 haskell
由于一直在看haskell,不可避免的接触到了很多数学知识,其中数论最多,如素数,斐波那契数列等,很多在学生时代无法理解的数学现在似乎也能领悟到那么一点。
闲暇之余,从图书馆找了<<The music of primes>>和<<世界数学通史>>读了几遍。其中素数的音乐这本书与软件界熟知的&l
Java-Collections Framework学习与总结-IdentityHashMap
BrokenDreams
Collections
这篇总结一下java.util.IdentityHashMap。从类名上可以猜到,这个类本质应该还是一个散列表,只是前面有Identity修饰,是一种特殊的HashMap。
简单的说,IdentityHashMap和HashM
读《研磨设计模式》-代码笔记-享元模式-Flyweight
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java
PS人像润饰&调色教程集锦
cherishLC
PS
1、仿制图章沿轮廓润饰——柔化图像,凸显轮廓
http://www.howzhi.com/course/retouching/
新建一个透明图层,使用仿制图章不断Alt+鼠标左键选点,设置透明度为21%,大小为修饰区域的1/3左右(比如胳膊宽度的1/3),再沿纹理方向(比如胳膊方向)进行修饰。
所有修饰完成后,对该润饰图层添加噪声,噪声大小应该和
更新多个字段的UPDATE语句
crabdave
update
更新多个字段的UPDATE语句
update tableA a
set (a.v1, a.v2, a.v3, a.v4) = --使用括号确定更新的字段范围
hive实例讲解实现in和not in子句
daizj
hive not in in
本文转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842855.html
当前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现。
假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含
一道24点的10+种非人类解法(2,3,10,10)
dsjt
算法
这是人类算24点的方法?!!!
事件缘由:今天晚上突然看到一条24点状态,当时惊为天人,这NM叫人啊?以下是那条状态
朱明西 : 24点,算2 3 10 10,我LX炮狗等面对四张牌痛不欲生,结果跑跑同学扫了一眼说,算出来了,2的10次方减10的3次方。。我草这是人类的算24点啊。。
然后么。。。我就在深夜很得瑟的问室友求室友算
刚出完题,文哥的暴走之旅开始了
5秒后
关于YII的菜单插件 CMenu和面包末breadcrumbs路径管理插件的一些使用问题
dcj3sjt126com
yii framework
在使用 YIi的路径管理工具时,发现了一个问题。 <?php  
对象与关系之间的矛盾:“阻抗失配”效应[转]
come_for_dream
对象
概述
“阻抗失配”这一词组通常用来描述面向对象应用向传统的关系数据库(RDBMS)存放数据时所遇到的数据表述不一致问题。C++程序员已经被这个问题困扰了好多年,而现在的Java程序员和其它面向对象开发人员也对这个问题深感头痛。
“阻抗失配”产生的原因是因为对象模型与关系模型之间缺乏固有的亲合力。“阻抗失配”所带来的问题包括:类的层次关系必须绑定为关系模式(将对象
学习编程那点事
gcq511120594
编程 互联网
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
Reverse Linked List II
hcx2013
list
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,
return 
Spring4.1新特性——页面自动化测试框架Spring MVC Test HtmlUnit简介
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
Hadoop集群工具distcp
liyonghui160com
1. 环境描述
两个集群:rock 和 stone
rock无kerberos权限认证,stone有要求认证。
1. 从rock复制到stone,采用hdfs
Hadoop distcp -i hdfs://rock-nn:8020/user/cxz/input hdfs://stone-nn:8020/user/cxz/运行在rock端,即源端问题:报版本
一个备份MySQL数据库的简单Shell脚本
pda158
mysql 脚本
主脚本(用于备份mysql数据库): 该Shell脚本可以自动备份
数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。
1. 分别建立目录“backup”和“oldbackup” #mkdir /backup #mkdir /oldbackup
300个涵盖IT各方面的免费资源(中)——设计与编码篇
shoothao
IT资源 图标库 图片库 色彩板 字体
A. 免费的设计资源
Freebbble:来自于Dribbble的免费的高质量作品。
Dribbble:Dribbble上“免费”的搜索结果——这是巨大的宝藏。
Graphic Burger:每个像素点都做得很细的绝佳的设计资源。
Pixel Buddha:免费和优质资源的专业社区。
Premium Pixels:为那些有创意的人提供免费的素材。
thrift总结 - 跨语言服务开发
uule
thrift
官网
官网JAVA例子
thrift入门介绍
IBM-Apache Thrift - 可伸缩的跨语言服务开发框架
Thrift入门及Java实例演示
thrift的使用介绍
RPC
POM:
<dependency>
<groupId>org.apache.thrift</groupId>