数据库服务器

大型网站系统架构分析

谁说我不能喝 提交于 2019-12-30 23:30:56
千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理 :负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁 :平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题 :大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者海南的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构,来有效的解决上述问题。 毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。 下面

MongoDB 4.2新特性:分布式事务、字段级加密、通配符索引、物化视图

徘徊边缘 提交于 2019-12-29 21:58:04
MongoDB 4.2已经发布,我们来看看它增加了哪些新特性?分布式事务?数据库加密?通配符索引? 在2019年MongoDB World大会上,CTO Eliot Horowitz介绍了MongoDB 4.2中的一些功能,这些功能扩展了其在数据库技术方面的领先地位:分布式事务(Distributed Transactions),字段级加密(Client Side Field Level Encryption),通配符索引(Wildcard Indexing)、按需物化视图(Materialized Views)。 这些都是重大的改进,表明MongoDB在企业级功能方便更加完善。 MongoDB 4.2提升了事务和分析技术水平。它提供大规模的分布式事务的ACID担保和复杂的数据处理流程,还有最先进的加密控制保护机制。我们可以在任何地方运行MongoDB4.2:在本地数据中心,云上、混合云、Atlas云上。我们可以获得阿里云、AWS,Azure和GCP可用的完全托管,云原生的MongoDB服务。阿里云全球第一个实现了MongoDB异地多活架构。可以支持互联网跨国公司的大规模出海业务。 现在使用MongoDB的公司越来越多了,技术架构方案也越来越成熟。MongoDB新特性也是为了满足更多的企业级业务场景需求。 1. MongoDB 4.2 新特性 先来大体上看看有哪些改进,作为4

优化杭州某著名电子商务网站高并发千万级大型数据库经验之- 内存性能

孤人 提交于 2019-12-29 05:18:00
好久没写博客了,一方面是日常工作繁忙,另外一方面是想更多的时间陪陪家里人,享受春天的美好时光,同时还在写一本 《程序员,你伤不起》 的一本书要由人民邮电出版社出版;我的性格可能也跟大多数程序员类似吧,没什么兴趣爱好、不擅长与人交流,平时话也少,也不够幽默,就是一个实实在在的人。很多漂亮的女人都无法理解我们干程序员的,大多都嫁给了做业务啊或者做销售的,只有很朴实的、想是实实在在过日子的女人才能理解我们这些技术码工出身的程序员。 其实事实证明你当个优秀的码工比很多做业务的日子过得都滋润。人死了后几乎留不下什么东东,所以我趁着活着的时候把生活工作的点点滴滴都写在网上,给需要的人分享经验、同时也能得到高人的指点。写文章一方面证明的实力、另一方面也给社会分享,而不只是索取也讲分享。将来可以看到自己每一年的提高升华的点滴足迹。 下图命名为:孤独的程序员 由于服务器是超级强大,所以内存也非常强大,我们的核心数据库大小是100G不到,所以几乎把所有的数据库都能装到内存里也可以了,真是强筋的服务器,有钱真好,可以购买最最强大的服务器玩玩。 在侦测服务器性能时,内存总是停留在165G的一个直线上,从来不会突破,也不会变好,经过3天的思索,感觉是数据库分配的内存更没没有用光,就分配了165G后,一直是够用了,所以内存表现出一条直线,也没什么波动;刚开始以为是内存不够

不同服务器数据库之间的数据操作

淺唱寂寞╮ 提交于 2019-12-28 20:02:09
版本1 --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 '

mysql 主从单库单表同步 binlog-do-db replicate-do-db

限于喜欢 提交于 2019-12-27 17:38:59
方案一:两边做主从。 SELECT SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) FROM information_schema.tables WHERE TABLE_SCHEMA='(数据库名大小为K除去1048576为M)';查看库容量 SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='' AND TABLE_NAME=''; lqc_msg = 16651450340 =15,880M 导出来13G 16708081764 SHOW TABLE STATUS; 查看自增IP 导出数据库: mysqldump -uroot -p'' --single-transaction --events --triggers --routines --flush-logs --master-data=2 --databases | gzip > /mnt/l.sql.gz 复制数据 rsync -a /mnt/lqc_msg.sql.gz root@:/data/ 导入数据库: mysqldump -uroot -p data < /data/lqc.sql & SELECT SUM(DATA_LENGTH)

sql语句

情到浓时终转凉″ 提交于 2019-12-27 08:29:50
一、基础 1 、说明:创建数据库 CREATE DATABASE database-name 2 、说明:删除数据库 drop database dbname 3 、说明:备份 sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4 、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B :create table tab_new as select col1,col2… from tab_old definition only 5 、说明:删除新表 drop table tabname 6 、说明:增加一个列 Alter table tabname add column col type 注 : 列增加后将不能删除。DB2中列加上后数据类型也不能改变

Redis和其数据类型操作手册

橙三吉。 提交于 2019-12-27 07:36:17
《“Java技术员”成长手册》,包含框架、存储、搜索、优化、分布式等必备知识,都收集在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis简介 Redis: REmote DIctionary Server (远程字典服务器)。 Redis 是一个全开源免费(BSD许可)的,内存中的数据结构存储系统,它可以用作 数据库、缓存和消息中间件 。一般作为一个高性能的(key/value)分布式内存数据库,基于 内存 运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为 数据结构服务器 Redis 介绍 ​ redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 ​ redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型) 。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中

Redis之AOF重写及其实现原理

a 夏天 提交于 2019-12-26 23:52:22
Reference: https://blog.csdn.net/hezhiqiang1314/article/details/69396887 AOF 重写 AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数据库状态的时间增加; 为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个文件所保存的数据库状态是相同的,但是新的AOF文件不会包含任何浪费空间的冗余命令,通常体积会较旧AOF文件小很多。 AOF 文件重写的实现 AOF重写并不需要对原有AOF文件进行任何的读取,写入,分析等操作,这个功能是通过读取服务器当前的数据库状态来实现的。 # 假设服务器对键list执行了以下命令s; 127.0.0.1:6379> RPUSH list "A" "B" (integer) 2 127.0.0.1:6379> RPUSH list "C" (integer) 3 127.0.0.1:6379> RPUSH list "D" "E" (integer) 5 127.0.0.1:6379> LPOP list "A" 127.0.0.1:6379> LPOP list "B"

redis主从复制

拈花ヽ惹草 提交于 2019-12-26 23:42:57
前言 前两篇文章分别梳理了redis的键过期策略和redis的持久化技术,今天接着来梳理redis的相关知识,今天梳理的内容是主从复制。梳理之前,我们首先来思考一个问题,主从复制的意义在哪里?其实redis的主从和我们数据库的主从是一样的,我个人的理解主从的目的是读写分离,而读写分离的目的可以提高系统的TPS。无论对于mysql数据库还是redis来说,读的操作都会比写的操作多,而写的操作又常常会阻塞进程,所以读写分离可以提高系统的TPS的。 redis复制 在redis中,用户可以通过执行SLAVEOF命令或者通过slaveof选项让一个服务器去复制另一个服务器,被复制的服务器我们称为主服务器,复制的服务器我们称为从服务器,而这种复制行为我们也称为主从复制。 // 端口号12345的从服务器复制6379的主服务器 127.0 .0 .1 : 12345 > SLAVEOF 127.0 .0 .1 6379 从服务器通过复制主服务器来实现主从服务器的数据库状态一致,也即是说在主服务器里写入的数据在从服务器里可以读取到,所以从服务器就可以实现只读的目的。 复制功能的实现 redis的复制功能的实现分为两个版本的不同,2.8版本以前是一种实现,2.8版本以后的是优化后的新实现,在此我们称2.8版本以前的为旧复制功能,2.8版本以后的为新复制

经典SQL语句大全

旧巷老猫 提交于 2019-12-26 15:26:00
一、基础 1 、说明:创建数据库 CREATE DATABASE database-name 2 、说明:删除数据库 drop database dbname 3 、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4 、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],.. ) 根据已有的表创建新表: A :create table tab_new like tab_old (使用旧表创建新表) B :create table tab_new as select col1,col2… from tab_old definition only 5 、说明:删除新表 drop table tabname 6 、说明:增加一个列 Alter table tabname add column col type 注 : 列增加后将不能删除。DB2中列加上后数据类型也不能改变