三种东西永远不要放到mysql数据库里
图片,文件,二进制数据永远不要放到mysql数据库里。
很多人会觉得既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的! 别的先不提,在很多数据库语言里,处理大字段都不是很容易。
把文件存放在数据库里有很多问题:
1.对数据库的读/写的速度永远都赶不上文件系统处理的速度
2.数据库备份变的巨大,越来越耗时间
3.对文件的访问需要穿越你的应用层和数据库层
这后两个是真正的杀手。
那么把图片缩略图存到数据库里?结果是,你不能使用nginx或其它类型的轻量级服务器来处理它们了。
给自己行个方便吧,在数据库里只简单的存放一个磁盘上你的文件的相对路径,或者使用S3或CDN之类的服务。
短生命期数据不要放到mysql数据库里
使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。 如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据, 那说明你没有找对正确的做事情的方法。 使用redis,statsd/graphite, Riak,它们都是干这种事情更合适的工具。 这建议也适用于对于收集那些短生命期的数据。
当然,用挖土机在后花园里种土豆也是可行的,但相比起从储物间里拿出一把铲子, 你预约一台挖土机、等它赶到你的园子里挖坑,这显然更慢。 你要选择合适的工具来处理手头上的事。
日志文件不要放到mysql数据库里
把日志数据存放到数据库里,表面上看起来似乎不错,而且“将来也许我需要对这些数据进行复杂的查询”, 这样的话很得人心。这样做并不是一个特别差的做法, 但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。
也许你的日志记录做的很保守,每次web请求只产生一条日志。 对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作, 争夺你用户需要的数据库资源。 如果你的日志级别设置为verbose或debug,那等着看你的数据库着火吧。
你应该使用一些比如Splunk Loggly或纯文本文件来存放你的日志数据。 这样去查看它们也许会不方便,但这样的时候不多,甚至有时候你需要写出一些代码来分析出你想要的答案, 但总的来说是值得的。
相关推荐
-
MySQL数据库防止人为误操作的实例讲解
有不少开发人员在操作MySQL数据库的时候都遇到过误操作的情况,例如更新数据库的时候update语句忘记加上where条件,就会造成极为悲剧的结果.本文就针对防止MySQL数据库误操作的方法做出如下详解: 1.mysql帮助说明 # mysql --help|grep dummy -U, --i-am-a-dummy Synonym for option --safe-updates, -U. i-am-a-dummy FALSE 在mysql命令加上选项-U后,当发出没有WHERE或LIMIT
-
Mysql数据库安装完成后需要进行的6个后续操作
在服务器上安装好mysql之后,一般都需要做下面几件事情: 1. 启动mysql server 2. 设置root用户和添加一些访问用户 3. 设置用户权限 4. 配置非本地连接访问 5. 备份数据或者迁移数据 6. 一些注意事项(不断更新) 一.启动mysql server 通常情况下,我们使用的启动命令是: 复制代码 代码如下: service mysqld start 常见的一个问题就是抛:Timeout error occurred trying to start MySQL Daemo
-
MySQL数据库MyISAM存储引擎转为Innodb的方法
mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Innodb.步骤如下: 1.导出CentOS数据库的表结构 复制代码 代码如下: mysqldump -d -uxxx -p centos > centos_table.sql 其中-d参数表示不导出数据,只导出表结构 2.替换centos_table.sql里的MyISAM为INNODB 复制代码 代码如下:
-
三种东西永远不要放到mysql数据库里
图片,文件,二进制数据永远不要放到mysql数据库里. 很多人会觉得既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的! 别的先不提,在很多数据库语言里,处理大字段都不是很容易.把文件存放在数据库里有很多问题: 1.对数据库的读/写的速度永远都赶不上文件系统处理的速度2.数据库备份变的巨大,越来越耗时间3.对文件的访问需要穿越你的应用层和数据库层这后两个是真正的杀手.那么把图片缩略图存到数据库里?结果是,你不能使用nginx或其它类型的轻量级服务器来处理它们
-
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # See documentation in: # https://docs.scrapy.org/en/latest/topics/items.html import scrapy class NbaprojectItem(scrapy.Item): # define the fields for yo
-
8种手动和自动备份MySQL数据库的方法
作为流行的开源数据库管理系统,MySQL的使用者众多,为了维护数据安全性,数据备份是必不可少的.本文就为大家介绍几种适用于企业的数据备份方法. 使用MySQLDump进行MySQL备份 mysqldump是MySQL内置的工具,允许用户将数据库指定不同的选项备份到文件.服务器,甚至是压缩gzip文件中.mysqldump实用程序灵活,快速,可执行高级备份,并接受各种命令行参数,用户可通过这些参数来更改备份数据库的方式. Windows操作系统中的c:mysqlbin和Unix / Linux系统
-
在Mysql数据库里通过存储过程实现树形的遍历
关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过存储过程来实现. 1,建立测试表和数据: DROP TABLE IF EXISTS csdn.channel; CREATE TABLE csdn.channel ( id INT(11) NOT NULL AUTO_INCREMENT, cname VARCHAR(200) DEFAULT NULL, pare
-
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
本文实例讲述了PHP连接MySQL数据库的三种方式.分享给大家供大家参考,具体如下: PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展.MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的.因此这个扩展虽然可以与MySQL4.1.3或更
-
PHP 获取MySQL数据库里所有表的实现代码
复制代码 代码如下: function list_tables($database) { $rs = mysql_list_tables($database); $tables = array(); while ($row = mysql_fetch_row($rs)) { $tables[] = $row[0]; } mysql_free_result($rs); return $tables; } 但由于mysql_list_tables方法已经过时,运行以上程序时会给出方法过时的提示信息,
-
Python写入MySQL数据库的三种方式详解
目录 场景一:数据不需要频繁的写入mysql 场景二:数据是增量的,需要自动化并频繁写入mysql 方式一 方式二 总结 大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可. 本篇文章会给大家分享数据如何写入到 mysql,分为两个场景,三种方式. 场景一:数据不需要频繁的写入mysql 使用 navicat 工
-
MySQL数据库设计概念及多表查询和事物操作
目录 数据库设计概念 数据库设计简介 表关系(多对多) 表关系(一对多) 表关系之一对一 多表查询 笛卡尔积现象 内连接查询 嵌套查询(子查询) 事务操作 事务的概念 手动提交事务 自动提交事务 事务原理和四大特征 事务原理 事务的四大特征 事务的并发访问引发的三个问题(面试) 事务的隔离级别 数据库设计概念 数据库设计简介 1.数据库设计概念 数据库设计就是根据业务系统具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型. 建立数据库中的表结构以及表与表之间的关联关系的过
-
Python 读取千万级数据自动写入 MySQL 数据库
目录 前言 场景一:数据不需要频繁的写入mysql 场景二:数据是增量的,需要自动化并频繁写入mysql 总结 前言 Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可.本篇文章会给大家系统的分享千万级数据如何写入到 mysql,分为两个场景,两种方式. 场景一:数据不需要频繁的写入mysql 使用 navicat 工具
-
PHP连接MYSQL数据库的3种常用方法
对于PHP入门用户来说,我们只要掌握基本的数据库写入.读取.编辑.删除等基本的操作就算入门,也可以写出简单的程序出来,比如留言本.新闻文章系统等等.在整个过程中,MySQL数据库的连接也是比较重要的,可以使用多种方法进行连接,对于新手来说我们就不要去分析哪种方式对于系统资源的优化程度,我们先能连接上就行. 这里,整理几种常用的PHP连接MYSQL数据库的方法. 第一.常用普通方法 $mysql_server="localhost"; $mysql_username="数据库用
随机推荐
- HTML Component(HTC) 小应用
- Ext GridPanel加载完数据后进行操作示例代码
- 简单的Html转换UBB的程序
- Erlang中的函数与流程控制介绍
- 实现一个完整的Node.js RESTful API的示例
- js arguments.callee的应用代码
- Windows longhorn长牛角4074英文测试版光盘安装过程详细图解
- 分享一个iOS下实现基本绘画板功能的简单方法
- Laravel学习教程之广播模块详解
- python黑魔法之参数传递
- 比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法
- BootStrap实现手机端轮播图左右滑动事件
- 批处理倒计时(全屏)
- SQL Server多表查询优化方案集锦
- C#在MySQL大量数据下的高效读取、写入详解
- JQUBar 基于JQUERY的柱状图插件
- JavaScript操作HTML元素和样式的方法详解
- js中键盘事件实例简析
- php 获取客户端的真实ip
- 浅谈C# winForm 窗体闪烁的问题