// 最近稍微有点时间 测试下nosql(reids,mongdb)和mysql性能问题
// 现在用的最普遍的redis非关系型数据库
// 循环十万次和一百万次消耗时间(最简单的数据插入):
$redis=new Redis();
$redis->connect('127.0.0.1',6379); // 本机IP等(先安装redis服务及dll拓展)
$redis->auth('123456'); // 密码
$StartTime = microtime(true);
for($i=1;$i<= 1000001;$i++){
$redis->set($i,$i);
}
$StopTime = microtime(true);
$TimeSpent=$StopTime-$StartTime;
echo number_format($TimeSpent*1000, 4).'毫秒';
// 十万次 100001 8,050.7162毫秒
// 一百万次 1000001 78,719.3971毫秒
// mysql批量插入的效率如下:
$link = mysql_connect('127.0.0.1','root','');
if (!$link) {
die('Could not connect to MySQL: ' . mysql_error());
}
mysql_select_db('test');
$StartTime = microtime(true);
$str = '';
for($i=1;$i<=100000;$i++){
$str .= '('.$i.'),';
}
$sql1 ="insert into test(val) values".$str;
$sql2 = rtrim($sql1, ",").';'; // 拼接sql字符串太长可能不太好
mysql_query($sql2,$link);
/*
for($i=1;$i<=1000000;$i++){
$sql1 ="insert into test(val) values($i)";
mysql_query($sql1,$link);
}*/
$StopTime = microtime(true);
$TimeSpent=$StopTime-$StartTime;
echo number_format($TimeSpent*1000, 4).'毫秒';
exit;
// sql值拼接的情况下
// 100000 => 1,960.1121毫秒/1,662.9341毫秒
// 10000000 => Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 98888926 bytes) in D:\wamp_php\wamp\www\testmysql.php on line 14
// 5000000 => Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 48888924 bytes) in D:\wamp_php\wamp\www\testmysql.php on line 15
// 3000000 => Warning: Error while sending QUERY packet. PID=2928 in D:\wamp_php\wamp\www\testmysql.php on line 16
// 1000000 =>
//Warning: mysql_query(): MySQL server has gone away in D:\wamp_php\wamp\www\testmysql.php on line 16
//Warning: mysql_query(): Error reading result set's header in D:\wamp_php\wamp\www\testmysql.php on line 16
// 循环
// 1000000 实际插入表 1627条 耗时122秒03毫秒
由此可见:mysql大数据量的插入数据拼接形式的效率远大于循环插入的效率,不过我自己的笔记本可能配置久和低,实际在服务器的效率应该会高很多的。
mongdb批量插入效率:在3月份的时候在公司电脑用mongdb插入1000万条记录(含ID,name,age三个字段),用时43分钟不到一小时,这个效率应该和redis相差不大;
总结:非关系型数据库效率要比关系型数据库效率 高很多。。。
相关推荐
数据库性能问题是许多IT系统面临的常见挑战,特别是在大数据量和高并发环境下。性能问题可能导致系统响应时间变慢,用户体验下降,甚至可能影响业务的正常运行。本文将深入探讨如何有效地定位数据库性能问题,以便...
"基于TPCH基准的内存数据库性能测试方案研究" 本文主要研究TPC-H基准测试方案在内存数据库性能测试中的应用和改进。TPC-H基准测试主要用于大数据量的复杂查询,但是在内存数据库性能测试中发现其测试效果不理想。...
"MySQL数据库性能优化分析" MySQL数据库性能优化分析是数据库优化的重要环节,对于提高数据库的运行效率和工作能力具有重要的意义。本文将从数据库运行语句、数据库索引以及构造设计等层面对MySQL数据库进行深入的...
- 文件"不要让临时表空间影响数据库性能 - Oracle - 1.mht"可能包含对临时表空间性能问题的初步分析和解决建议。 - 文件"不要让临时表空间影响数据库性能 - Oracle - 2.mht"可能详细讨论了临时表空间对数据库性能...
### 海光X86与鲲鹏ARM平台数据库性能分析 #### 一、引言 随着信息技术的发展,数据库系统作为信息系统的重要组成部分,在企业信息化建设中扮演着至关重要的角色。为了更好地适应不同应用场景的需求,市场上出现了...
数据库应用系统的初步开发是一个将理论知识与实践相结合的过程,它涉及到多个关键领域,包括数据库设计、用户界面构建以及数据管理。在这个实验报告中,我们将深入探讨如何使用VC(Visual C++)作为开发工具来创建一...
最后,文档还强调了主动避免问题及诊断信息收集的最佳实践,包括通过常规监控、分析和优化数据库性能来主动避免问题,以及在问题发生时能够收集准确的问题信息,以便进行后续的问题分析和解决。这些最佳实践不仅能够...
《BOSS数据库系统性能瓶颈分析和定位》 BOSS数据库系统在月结销账工作中扮演着至关重要的角色,需要在限定时间内处理全省2000多万用户的账单费用计算。然而,近期系统出现了性能下降的问题,原本2到3小时的运行时间...
3. **性能监控与优化**:数据库管理员需要监控数据库的性能,分析查询效率,找出瓶颈并采取相应的调整措施,如索引优化、查询改写等,以提升系统的响应速度和吞吐量。 4. **数据库的重组织与重构造**:随着业务的...
【MySQL数据库基础】 MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由MySQL AB公司创建,现归Oracle公司所有。它的设计目标是提供高效、可靠且易于管理的数据存储解决方案。MySQL以其简单易用、高性能...
数据库编程初步学习主要涵盖以下几个核心知识点: 1. **数据库编程基础**:这涉及到对数据库服务的理解,特别是如何通过编程与数据库交互。学习者需要理解数据库的基本结构、数据模型(如关系型数据库)以及数据库...
在安装过程中,理解不同选项的含义和选择的重要性是至关重要的,因为这会直接影响到后续的数据库性能和管理。 接下来,我们进入数据库服务的管理入门。在Oracle数据库中,服务(Service)是连接客户端与数据库实例...
9. **数据库设计过程**:第13讲讨论了数据库设计的完整流程,从需求分析到逻辑设计,再到物理设计,强调了数据完整性和数据库性能的重要性。 这些讲义内容全面且深入,适合对数据库感兴趣的初学者或希望巩固数据库...
“数据库系统基础讲义第17讲数据库物理存储.pdf”将介绍数据库的存储结构,包括数据页、索引、缓冲池等,以及如何通过存储过程和触发器优化数据库性能。 “数据库系统基础讲义第18讲数据库索引技术.pdf”可能是关键...
在可行性研究阶段,数据库设计的初步概念可能已经开始形成。这个阶段主要是评估技术、经济和市场等因素,以判断软件项目是否值得开发。在需求分析阶段,数据库设计的依据逐渐明确,因为需要确定软件系统所需的功能、...
21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用...
总的来说,MySQL数据库提供了一种强大且灵活的方式来存储和管理数据,它的易用性和高性能使其成为许多企业和开发者的首选。通过掌握SQL语言和MySQL的基础操作,开发者可以构建高效、稳定的数据驱动应用程序。