数据库服务器

mysql数据库优化概述详解

十年热恋 提交于 2019-11-29 18:05:09
mysql查询的过程图 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计数据库时:数据库表、字段的设计,存储引擎 利用好MySQL自身提供的功能,如索引等 横向扩展:MySQL集群、负载均衡、读写分离 SQL语句的优化(收效甚微) 一、字段设计阶段 选取最适用的字段属性 1. 字段的宽度设得尽可能小 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 2. 尽量把字段设置为NOTNULL 在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 3. 确定数据定义为ENUM类型 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 4. 单表字段不宜过多,可以预留字段 满足业务需求的前提下二三是个字段就是极限了,可以预留字段便于扩展。 遵循数据表的设计规范 1. 第一范式(1NF) 字段值具有原子性

mysql与sqlalchemy ORM

人盡茶涼 提交于 2019-11-29 16:57:33
ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。 orm的优点: 隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。 ORM使我们构造固化数据结构变得简单易行。 缺点: 无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。 2. sqlalchemy安装 在Python中,最有名的ORM框架是SQLAlchemy。用户包括openstack\Dropbox等知名公司或应用,主要用户列表http://www.sqlalchemy.org/organizations.html

MYSQL四种备份方法概述

寵の児 提交于 2019-11-29 15:13:50
Mysql 数据库 备份 主要有4种方法: 1、mysqldump 2、直接拷贝(cp、tar,gzip,cpio) 3、sqlhotcopy 4、同步复制 1、mysqldump备份: mysqldump生成能够移植到其它机器的文本文件,缺省地,文件内容包含创建正在倾倒的表的CREATE语句和包含表中行数据的INSERT语句。也就是说,mysqldump产生的输出可在以后用作mysql的输入来重建 数据库 。mysqldump比直接拷贝要慢些。 使用直接拷贝,如果正在备份的表正被读写就容易导致表损坏,而且不建议对isam表使用直接拷贝的方法来备份,因为ISAM表只能在相似的硬件结构的机器上拷贝。 使用方法:mysqldump [OPTIONS] database [tables] 输出文件的开头看起来象这样: # MySQL Dump 6.0 # # Host: localhost Database: samp_db #--------------------------------------- # Server version 3.23.2-alpha-log # # Table structure for table 'absence' # CREATE TABLE absence( student_id int(10) unsigned DEFAULT '0' NOT

NoSql和Redis

谁说胖子不能爱 提交于 2019-11-29 15:06:52
1.NoSQL a) 指一些非关系型的数据库.读写性能高,存储会有过期,数据存放于内存中 b) 分类 i. 键值数据库 ii. 列存储数据库 iii. 文档型数据库 redis和memcached是key-value的Nosql,主要用来做缓存的 2.Redis a) 高性能的开源的菲关系型数据库,数据保存在内存里面或者磁盘里面 b) Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合。数据结构:数组,list,set,map等redis提供了一下操作方法,我们使用这些方法就可以对存入字符串,组织成各种类型数据库结构(string,list,set,map等). c) Redis数据库的优势 i. 数据存储:存放在内存,还支持持久化.-存取速度快,并发能力强,数据安全性高 还支持集群(主从同步) (支持高并发,海量数据), 数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。 ii. 它支持的存储值的类型 String,list,set,sorted set,hash 支持集群(支持主从同步) 支持持久化 d) 使用场景 i. 缓存: 对于经常查询的数据,将其放到Redis里面

部署 asp.net 网站到 Azure

五迷三道 提交于 2019-11-29 14:12:21
部署asp.net网站到Azure 前言 前些天一直在写一个单页面web应用程序,终于完成了,于是考虑发布到云服务器。本人没有AWS账号,遂本打算使用谷歌云。参考文档后发现官方文档给出的方式为 在visual studio上使用 Cloud Tools for Visual Studio 插件,然而该插件似乎只支持vs2017,无奈只能改用Azure。后续我也会继续探索在Google上部署ASP.NET应用,毕竟Azure只给一个月的免费时间,只有升级账户后才能享受一年的免费时间。 我们开始吧 这是小白的第一次使用,所以只是我自己的方法和顺序,仅供参考。如果有大佬有更方便快捷的方法欢迎提供,如有疏漏错误也烦请指出。谢谢! 建立数据库 首先我们需要在Azure上新建一个数据库。这个过程参考了 这篇文章 。 打开Azure首页后搜索 sql 数据库,选择 sql 数据库并转到。 然后我们添加一个数据库。我的里面已经有了一个数据库实例,如果没有的话界面可能会和我的不太一样。 打开以后大概长这个样子: 从上到下依次填入信息。 * 订阅:如果是免费账户似乎只有这一个选项,原谅我没有见识过付费账户长啥样。 * 资源组:如果你之前有建立过,可以选择之前建立的资源组或新建资源组。如果没有那只能新建一个了。新建时可以起一个自己喜欢的名字。 * 数据库名称:可以起一个自己喜欢的名字,不能是之前有过的。

1.分布式架构的来源演进

让人想犯罪 __ 提交于 2019-11-29 13:24:47
架构的本质 一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最 终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。 架构的本质就是对系统进行有序化重构,使系统不断进化 那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合。 分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定 位问题,然后才能划分彼此的边界,实现合理的拆分。合就是根据最终要求,把各个分离的 组件有机整合在一起,相对来说,第一步的拆分更难。 拆分的结果使开发人员能够做到业务聚焦、技能聚焦,实现开发敏捷,合的结果是系统变得 柔性,可以因需而变,实现业务敏捷 架构的分类 架构一般可分业务架构、应用架构、技术架构 1. 业务架构从概念层面帮助开发人员更好的理解系统,比如业务流程、业务模块、输入输出、 业务域 2. 应用架构从逻辑层面帮助开发落地系统,如数据交互关系、应用形式、交互方式,是的整 个系统逻辑上更容易理解,步入大家熟知的 SOA 就属于应用架构的范畴 3. 技术架构主要解决技术平台选型、如操作系统、中间件、设备、多机房、水平扩展、高可 用等问题 需要注意的是,系统或者架构首先都是为人服务的,系统的有序度高,用用逻辑合理,业务 概念清晰是第一位。现在大家讨论更多的是技术架构,如高并发设计

C/S结构网络开发与B/S结构网络开发认识

吃可爱长大的小学妹 提交于 2019-11-29 11:41:38
C/S结构网络开发与B/S结构网络开发认识 C/S结构网络开发:如QQ客户端的登录界面 B/S结构网络开发:网页的客户端登录界面 2.C/S结构与B/S的差别 第一、什么是C/S结构。 C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。 第二、什么是B/S结构。 B/S(Browser/Server)结构即浏览器和服务器结构

缓存在分布式系统中的应用

余生颓废 提交于 2019-11-29 11:27:19
一、缓存概述 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 1.1缓存的原理 (1) 将数据写入/读取速度更快的存储(设备); (2) 将数据缓存到离应用最近的位置; (3) 将数据缓存到离用户最近的位置。 1.2缓存分类 在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用。 (1) CDN缓存; (2) 反向代理缓存; (3) 分布式Cache; (4) 本地应用缓存; 1.3缓存媒介 常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等; 缓存的内容:文件,数据,对象; 缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式) 1.3缓存设计 缓存设计需要解决以下几个问题: (1) 缓存什么? 哪些数据需要缓存:1.热点数据;2.静态资源; (2) 缓存的位置? CDN,反向代理,分布式缓存服务器,本机(内存,硬盘) (3) 如何缓存的问题? 过期策略 1.固定时间:比如指定缓存的时间是30分钟; 2.相对时间:比如最近10分钟内没有访问的数据; 同步机制 实时写入;(推) 异步刷新;(推拉) 二、CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂

电商那些年,我摸爬打滚出的高并发架构实战精髓

自闭症网瘾萝莉.ら 提交于 2019-11-29 08:40:17
一、关于高并发 高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11、双12,就会产生高并发。又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩LOL被ADC暴击了一样,那伤害你懂的。 来源:SFLYQ的博客 原文:http://blog.thankbabe.com/2016/09/14/high-concurrency-scheme/ 1、 高并发会来带的后果 服务端: 导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:出现重复的数据记录,多次添加了用户积分等。 用户角度: 尼玛,这么卡,老子来参加活动的,刷新了还是这样,垃圾网站,再也不来了! 我的经历: 在做公司产品网站的过程中,经常会有这样的需求,比如搞个活动专题、抽奖、签到、积分竞拍等等,如果没有考虑到高并发下的数据处理,那就Game Over了,很容易导致抽奖被多抽走,签到发现一个用户有多条记录等等,各种超出正常逻辑的现象,这就是做产品网站必须考虑的问题,因为这些都是面向大量用户的,而不是像做ERP管理系统、OA系统那样,只是面向员工。 下面我进行实例分析,简单粗暴,动态分析,纯属本人经验分享,如有说错或者更好的建议,请留言,大家一起成长。 2、 并发下的数据处理 通过表设计,如:记录表添加唯一约束

MySQL主从同步配置

浪尽此生 提交于 2019-11-29 08:31:31
MySQL主从同步配置 1. 主从同步的定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。 使用主从同步的好处: 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能 2. 主从同步的机制 Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。 在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。 每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句