mysql数据库总结_MySQL数据库优化-总结
面试时遇到的问题:千万级的mysql数据库如何优化?
作为一个刚入门的phper,遇到这个问题时,我还是压力山大的.还好有一个周末的时间来学习.本文就是这周末三天的整理总结.
方案一:缓存
通过redis或memcache,添加缓存服务器.
原理:将经常查询的内容自动添加到缓存,访问量低的通过正常查询获得,可以让绝大多数的内容从内存中自动访问.
ridis和memcache的区别:
1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
2 Redis支持数据的备份,即master-slave模式的数据备份。
3 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
方案二:添加索引
通过对常用字段添加索引的办法可以极大的提高查询的效率.
注意事项:
1.首先应考虑在 where 及 order by 涉及的列上建立索引。///禁用排名,oder by null
2.可以在 num 上设置默认值 0,确保表中 num 列没有 null 值。
3.不要写一些没有意义的查询.
4.用 exists 代替 in 是一个好的选择.如:select num from a where num in(select num from b);可以用select num from a where exists(select 1 from b where num=a.num);来代替.
5.索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
6.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并 会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言 只需要比较一次就够了。
7.尽可能的使用 varchar/nvarchar代替 char/nchar, 因为首先变长字段存储空间小, 可以节省存储空间, 其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。
8.不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
避免全表扫描:
1.避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。
2.select id from t where name like '%c%';也将导致全表扫描。
3.如果在 where 子句中使用参数,也会导致全表扫描.如:select id from t where num=@num ;可以改为强制查询使用索引:select id from t with(index(索引名)) where num=@num ;
4.在 where 子句中对字段进行表达式操作, 这将导致引擎放弃使用索引而进行全表扫描。如:select id from t where num/2=100;
5.在 where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:select id from t where substring(name,1,3)='abc';#name 以 abc 开头的 id
方案三:水平分库/分表
原理:一个1000多万条记录的用户表user,查询起来非常之慢,分表的做法是将其散列到100个表中,分别从user_0到user_99,然后根据userId分发记录到这些表中.
方案四:Sphinx等索引工具
原理:Sphinx工具是一个基于SQL的索引检索引擎.原理是将SQL中的数据建立索引,php通过API的方式从Sphinx中获得检索的值.php不直接通过mysql取值.
Sphinx的原理图
Sphinx的特性(优、缺点)
优点:
高速索引 (在新款CPU上,近10 MB/秒);
高速搜索 (2-4G的文本量中平均查询速度不到0.1秒);
高可用性 (单CPU上最大可支持100 GB的文本,100M文档);
提供良好的相关性排名
支持分布式搜索;
提供文档摘要生成;
提供从MySQL内部的插件式存储引擎上搜索
支持布尔,短语, 和近义词查询;
支持每个文档多个全文检索域(默认最大32个);
支持每个文档多属性;
支持断词;
支持单字节编码与UTF-8编码;
支持多字段的检索域
支持MySQL(MYISAM和INNODB)和Postgres数据库
支持windows, linux, unix, mac等平台
缺点:
必须要有主键
主键必须为整型
不负责数据存储
配置不灵活
方案五:读写分离
原理,通过物理的方式来提升mysql的性能.
...未完待续
mysql数据库总结_MySQL数据库优化-总结相关推荐
- mysql断网_mysql数据库断网链接
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql 关闭锁_mysql数据库取消锁
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql数据库应用_MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库 查看所有数据库:SHOW DATABASES 创建数据库:CREATE DA ...
- mysql 表上限_mysql 数据库表的上限
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql 关联查询_mysql数据库调优(二)
第五.查询优化 1.查询慢的原因:网络因素.CPU.IO.上下文切换.系统调用.生成统计信息.锁等待时间等 2.优化数据库访问:查询性能地下的原因是访问的数据太多,某些查询不可避免的需要筛选大量的数据 ...
- mysql数据库语言_mysql数据库sql语句基础知识
1.数据库操作 查看当前数据库 SELECT DATABASE(); 显示用户名,数据库版本 SELECT user(), version(); 创建库 CREATE DATABASE[ IF NOT ...
- mysql数据库监控程序_mysql数据库监控利器lepus天兔工具安装和部署
需要的核心包如下: 以下软件包只需要部署在监控机即可.被监控机无需部署. 1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据) 2.Apache 2.2及以上 (必须,WEB服务器运行服务 ...
- 数据库 mysql详解_MySQL数据库详解
一.数据库概述 1.数据库与文件系统文件系统对比. 数据冗余和不一致性 数据访问 数据格式相对独立 数据完整性和原子性 数据的并发访问 数据的安全性问题 2.数据库概念 1.DBMS:数据库管理系统 ...
- mysql数据库语法_MySQL数据库基本语法
SQL WHAT(SQL是什么?) Structured Query Language:结构化查询语⾔ WHY(为何要使用SQL?) 难道仅仅使用SQL Server Management Studi ...
- Mysql常用词汇_mysql 数据库常用单词
说明:以下单词可能有多种含义,此文档只针对编程做解释.单词不多,熟能生巧,每日认真读读写写,效果不错.如有错误,请谅解并指出,谢谢大家! 黄金超 2017-4-7 连接MySQL数据库: mysql ...
最新文章
- 第九次作业-测试报告和用户使用手册
- 十万浙企上云 阿里云崛起的最大征候?
- FPGA的设计艺术(2)FPGA开发流程
- iphone开发如何测试?
- SMW0 HTML模版的形式上传文件 维护MIME类型
- 张帅用赢球庆生 搭档斯托瑟晋级澳网女双八强
- 转:json与map互转
- CM3计算板I/O编程
- 一个SQL更新多条字段
- 多线程与NSTimer
- 计算机信息安全工程师教材,第二级 系统审计保护级-信息安全工程师教材
- python解题工程力学_工程力学学习与解题指导
- S3 api 断点下载
- SVN commit的时候报错conflicted state
- 金山云2018年Q4财报里的“去小米化”
- 网易im即时通讯 移动端嵌入web
- ★ 我的世界各类奇葩武器实现!(命令方块1.13+)
- ClearCase 介绍 1
- 【BSP视频教程】STM32H7视频教程第2期:STM32H7四通八达的总线矩阵,从系统框架整体把控H7
- Java核心技术 卷1-总结-18
热门文章
- 日期,时间相关R代码
- oracle中sqldrunl结尾符号,oracle笔记(韩顺平oracle视频教学整理)
- 联想笔记本电脑键盘灯怎么开启_【普通背光键盘灯怎么开】联想键盘背光灯怎么开_背光键盘怎么开...
- vue导入音乐_苹果vue怎么导入音乐
- protel99se中文版
- LabVIEW编程LabVIEW开发Memmert oven温箱例程与相关资料
- Unity读取TXT文本文件
- 屏幕画笔工具Pointofix,期货/股票复盘分析画线好工具
- linux下blast设计引物,下面是我设计的引物的BLAST结果,请大虾帮我解释一下。谢谢...
- SPC软件:全程监控食品质量