数据库系统

[转帖]TPC-C解析系列01_TPC-C benchmark测试介绍

ぃ、小莉子 提交于 2019-12-01 21:32:50
TPC-C解析系列01_TPC-C benchmark测试介绍 http://www.itpub.net/2019/10/08/3334/学习一下. 自从蚂蚁金服自研数据库OceanBase获得TPC-C测试第一名后,引起了行业内外大量关注,我们衷心的感谢大家对OceanBase的支持与厚爱,也虚心听取外界的意见和建议。为了让大家更好的了解测试的技术细节,我们特意邀请了OceanBase的核心研发人员对本次测试做专业的技术解读,本文为第一篇,后续文章也将于近日对外发布。 OceanBase于2010年立项,九年来,研发人员一步一个脚印,不断的对OceanBase做出改进以及增加新的功能。OceanBase也从服务于支付宝开始,逐渐对外开放,为广大的各行业客户提供服务。在这个过程中,我们希望外界对OceanBase的实力有更直观的了解,让客户对我们的产品更有信心,TPC-C测试为我们提供了一个绝佳的舞台。 通过本次测试,我们发现了OceanBase的一些不足之处,比如,之前的单机数据库只能通过增加CPU、内存等来提高处理能力,OceanBase通过分布式架构,可以让大量的普通硬件设备像一台电脑一样处理数据,想提高性能只需增加设备即可,但是,OceanBase在每台设备上的性能还有不少提升空间;另外,OceanBase支持的功能、易用性、数据库生态相比业界标杆还有一些差距。 接下来

[转帖]TPC-C解析系列03_TPC-C基准测试之SQL优化

霸气de小男生 提交于 2019-12-01 21:32:48
TPC-C解析系列03_TPC-C基准测试之SQL优化 http://www.itpub.net/2019/10/08/3330/ TPC-C是一个非常严苛的基准测试模型,考验的是一个完备的关系数据库系统全链路的能力。这也是为什么在TPC-C的榜单前列,出现的永远只是大家熟知的那几家在业界有着几十年积累、从关系数据库理论开始发展就差不多同步出现的数据库公司。接下来我们通过这篇文章为您分析在TPC-C测试中OceanBase数据库的SQL模块具体遇到了哪些挑战、做出了哪些优化。 背景 对TPC-C有所了解人都知道,TPC-C是一个典型的OLTP (On-Line Transaction Processing) 场景测试,考察的是数据库在高并发压力场景下的事务处理能力,最终的性能指标以tpmC(transaction per minute,也即每分钟系统处理TPC-C模型中的new order事务的数量)和平均到每tpmC的系统成本作为衡量标准。在OLTP场景中,每条请求的响应时间都是极短的。因此,各个数据库厂商在进行TPC-C测试时,都会尽一切可能将每一个操作时间压缩到最短,不夸张的说,在TPC-C的测试中,一些关键操作的优化往往需要细化到CPU指令级。 在进入我们的主题前,我们先来谈谈TPC-C中的事务模型,主要分为五种事务,订单创建、订单支付、订单查询、订单发货以及库存查询

10.21SQL注入

时光总嘲笑我的痴心妄想 提交于 2019-12-01 19:35:40
SQL 注入 1、万能密码:自己写的网站,找到登录窗口(必须和数据库交互)往里面插入构造的恶意代码,最后可以直接登陆进去,不需要帐号和密码。输入的恶意代码就称为万能密码。 注释符号: # -- %25 %2d%2d --+ ,符号后的语句不识别 后端拼接的 sql 语句: SELECT * FROM `users` WHERE user = '$user' AND password = '$pass'; 用户名的地方没有处理,密码输入: admin ' or 1=1# 这样语句就拼接成了:SELECT * FROM `users` WHERE user = 'admin ' or 1=1#' AND password = '$pass'; 由于 # 被注释,则实际执行 SELECT * FROM `users` WHERE user = 'admin ' or 1=1 由于 1=1 永真,则会搜索出所有用户,根据后端代码 数量为 1 时执行成功登陆,那么把上面的 or 改为 and ,则会搜索出账户为 admin 的账户只有一个,那么就能执行成功登陆 其他语句: pentest’ or 1=1# (注意 需不需要加 ’ 需要根据后端代码提交的数据类型来判定,如果是字符串类型,则需要加单引号,如果是整型,则不需要加) 语句若为 “真 or 真 and 假”,则判定为真。

10038数据路连接是失败;

瘦欲@ 提交于 2019-12-01 18:34:44
使用navicat登录ubuntu系统上的mysql数据库失败,10038连接失败 1、登录mysql数据库: mysql -u 登录名 -p 输入密码: 2、放开授权 use mysql GRANT ALL PRIVILEGES ON *.* TO '登录账号t'@'%' IDENTIFIED BY '登录密码' WITH GRANT OPTION; flus privileges; 3、退出登录 quit 来源: https://www.cnblogs.com/SpringFull/p/11712412.html

Hadoop、Hive、Spark 之间关系

做~自己de王妃 提交于 2019-12-01 18:14:09
Hadoop、Hive、Spark 之间关系 https://www.cnblogs.com/jins-note/p/9513426.html 很的很诙谐有趣. 作者:Xiaoyu Ma ,大数据工程师 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。 大数据,首先你要能存的下大数据 传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。 存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比如整个东京热有史以来所有高清电影的大小甚至更大)

MySQL数据库分库分表策略

不打扰是莪最后的温柔 提交于 2019-12-01 16:40:18
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失; 负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性; 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题; 读写分离策略:最大限度了提高了应用中读取数据的速度和并发量; 第2章 基本原理和概念 什么是数据切分 "Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏中。"Sharding" 姑且称之为"分片"。Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案, 其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。 通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由或者table路由规则找到需要查询的具体的DB或者table,以进行Query操作。“sharding”通常是指“水平切分”

云计算openstack共享组件-Memcache缓存系统(2)

让人想犯罪 __ 提交于 2019-12-01 16:18:31
一、缓存系统 一、静态web页面: 1、在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。 2、为了让静态web页面显示更加好看,使用javascript/VBScript/ajax(AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。)但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。 3、静态web无法连接数据库; 4、静态web资源开发技术:HTML; 5、由于现在的web页面中,大量使用JS,导致浏览器打开页面,就会占用大量的内存,服务端的压力是减轻了,但压力转移到了客户端。 二、动态web页面: 1、动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request)

MongoDB

為{幸葍}努か 提交于 2019-12-01 13:42:14
MongoDB简介 MongoDB是一个基于分布式文件存储的数据库。在高负载的情况下,添加更多的节点,可以保证服务器性能。由C++语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系型和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 MongoDB主要特点 一个面向文档存储的数据库,操作起来比较简单和容易 在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。 支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。 Map和Reduce。Map函数调用emit(key,value

数据库分库分表思路

时光怂恿深爱的人放手 提交于 2019-12-01 13:17:39
转自: https://www.cnblogs.com/butterfly100/p/9034281.html 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。 数据切分根据其切分类型,可以分为两种方式:垂直(纵向)切分和水平(横向)切分 1、垂直(纵向)切分 垂直切分常见有垂直分库和垂直分表两种。 垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。做法与大系统拆分为多个小系统类似,按业务分类进行独立划分。与"微服务治理"的做法相似,每个微服务使用单独的一个数据库。如图: 垂直分表是基于数据库中的"列"进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中。在字段很多的情况下(例如一个大表有100多个字段),通过"大表拆小表",更便于开发与维护,也能避免跨页问题

(转)MySQL日志系统

☆樱花仙子☆ 提交于 2019-12-01 13:09:39
原文: https://www.cnblogs.com/roverliang/p/6414457.html MySQL 日志系统 做过大型系统的都知道,日志的作用不用小觑,往往到了项目中后期,对项目进行优化升级都是依据日志做出升级优化的决策的。那么学习MySQL,日志部分当然不能错过。我们面试中实际应用的所谈到的优化都是要从日志中得出来的。系统的学习mysql的日志,有助于我们准确的定位问题,提高自己的工作水平。此外,后面的一系列日志会重点从DBA的运维方面进行着手,系统的去理解MySQL各方面的配置,做到知己知彼,让MySQL成为自己得心应手的数据仓库。 一、MySQL的日志类型 默认情况下,所有的MySQL日志以文件的方式存放在数据库根目录下: [root@roverliang data]# pwd /usr/local/webserver/extend_lib/mysql/data [root@roverliang data]# ls auto.cnf ibdata1 ib_logfile0 ib_logfile1 mysql mytest performance_schema roverliang roverliang.err roverliang.pid test MySQL的日志类型有以下几种: 1. 错误日志(error),MySQL服务实例启动