MySQL的随笔
数据库引擎
MySQL5.0支持的存储引擎包括MyISAM,InnoDB、MEMORY、MERGE、BDB等等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
MyISAM
MyISAM不支持事务,也不支持外键,优势是访问速度快。对事务完整性没有要求,并且查询插入较多的应用基本上都可以使用这个引擎来建表。锁机制方面,MyISAM支持表锁。
InnoDB
InnoDB则提供了具有提交,回滚和崩溃恢复能力的事务安全。相比MyISAM,InnoDB的写的处理效率较差并且会占用更多的磁盘空间来保留数据和索引。MySQL支持外键的只有InnoDB。InnoDB支持行锁。
数据类型的选择
char和varchar
char长度固定而varchar可变,因此char处理速度快,但是浪费存储空间,varchar则相反。但是随着版本的更新varchar的性能也在改变。
对于MyISAM存储引擎,建议使用固定长度的数据列代替可变长度的数据列。
对于InnoDB存储引擎:建议使用varchar。由于InnoDB的数据表里的数据行都使用指向数据列值的头指针,并没有区分固定长度和可变长度,因此性能没多大差别,但是存储的总量有差,因此选择varchar。
设置索引的原则
搜索的索引列不一定是所有选择的列。最适合索引的列是出现在where子句中的列,或连接子句中指定的列,而不是出现在select关键字后选择列表的列。
使用索引。索引列的基数越大,索引的效果越好。如果只用来记录性别只含有F和M只能得出一半的行,效果并不好。
使用短索引。较小索引涉及的磁盘IO较少,并且对于较短的键值,索引高速缓存能够容纳更多。
最左前缀原则。
不要过度使用索引。 索引需要维护。
优化SQL语句的一般步骤
1.通过show status命令了解SQL的执行频率
Com_xxx表示 每个xxx语句的执行频率 例如:Com_select Com_insert
Connections :试图连接MySQL服务器的次数等等
2.定位执行效率较低的SQL语句
通过慢查询日志定位 使用show processlist命令查看当前线程,对一些锁表操作进行优化。
3.通过explain分析低效SQL的执行计划
4.确定问题并采取相应的优化措施。
以上仅仅是大概的流程...详细流程有空再写。
MySQL的随笔的更多相关文章
- MySQL使用随笔
001 查看版本 mysql --version mysql > select version(); mysql > status; 002 新建MySQL用户.授权 insert int ...
- Mysql查询优化随笔记录
select SQL_CALC_FOUND_ROWS * from (select * from oses_vehdata201606 union all select * from oses_ ...
- 深入浅出mysql全文随笔
进入mysql :mysql -uroot -p 1.DDL(Data Definition Languages)语句:数据定义语言 2.DML(Data Manipulation Language) ...
- MySQL学习随笔记录
安装选custmer自定义安装.默认安装全部在c盘.自定义安装的时候有个advance port选项用来选择安装目录. -----------------------MySQL常见的一些操作命令--- ...
- MYSQL练习随笔
解法练习 案例1.子查询练习 字段 说明film_id 电影idtitle 电影名称description 电影描述信息category_id 电影分类idname 电影分类名称last_update ...
- MySQL -2- 体系结构--随笔小记
简介与安装NoSQLRDBMS版本安装方式二进制安装,源码安装体系结构CS模型TCP/IPsocketmysql master thread 实例mysqld 的程序构成连接层 协议.验证.链接线程S ...
- MySQL/MariaDB随笔二
mariaDB的二进制安装:系统版本和MariaDB版本 [root@ ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@ ~ ...
- MySQL/MariaDB随笔一
1.yum 安装后先跑一下系统自带的安全脚本,否则数据库很不安全,任何人都可以登录 [root@xixi ~]# mysql_secure_installation NOTE: RUNNING ALL ...
- mysql时间随笔
SELECT FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') FROM `order`; select date_add(FROM_UNIXTIME(cr ...
随机推荐
- rt-thread是如何做到通过menuconfig配置将相应文件加入工程和从工程中除去
@2019-01-25 [小记] 添加与删除文件的机制是: menuconifg 所显示的菜单是由一系列 Kconfig 文件构成的,这些菜单实际就是一系列的宏控制,而这些宏又控制着一系列的 SCon ...
- Qt Creator 编译测试 MQTT-C
@2018-12-21 [小记] 创建工程步骤: a. File ---> New File or Project ---> Non-Qt Project ---> Plain C ...
- 2018"百度之星"程序设计大赛 - 资格赛hdu6349三原色(最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6349 题目: 三原色图 Time Limit: 1500/1000 MS (Java/Others) ...
- C# winfrom 递归(城市名)
递归的定以:递归在运行过程中,自己调用自己的过程: List<ChinaStates> list = new ChinaData().SelectAll();//查询所有中国的城市的方法: ...
- MariaDB安装及基本配置
MariaDB安装及基本配置(CentOS6.9) 数据库基础概念 数据库(Database, DB)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. DBMS: Database ...
- SpringBoot文件上传
先建工程 只勾选web和freemarker模板 最后 先看一下最终目录结构 先修改pom文件,加入common-io依赖 然后修改Application.yml文件 spring: freemark ...
- DK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME
根据提示,我们可以新建一个项目或者以前自己使用过没问题的工程,从中把local.properties文件copy到我们从github中想要导入的工程中,我自己就是这样的,然后这个问题就解决了. ndk ...
- 解析:为什么程序员应该有一台Mac个人电脑?
对于开发来讲,使用Mac电脑的好处,下面简单列举几个: 首先,macOS很安全和稳定,Mac 系统的底层是最原始的unix操作系统,很多大型的银行和军工企业都是这个操作系统,安全性很高,基本不需要安装 ...
- 新买苹果电脑,mac系统中小白应该了解哪些东西?
本文旨在分享新买了mac电脑,应该做哪些设置,帮助苹果电脑小白轻松上手使用mac电脑,当然,新电脑肯定是需要安装各种软件,这里,小编推荐一下可以看看小编写的mac软件装机必备Mac 装机必备软件推荐, ...
- Centos 配置eth0 提示Device does not seem to be present
Centos 配置eth0 提示Device does not seem to be present 参考资料: http://www.cnblogs.com/fbwfbi/archive/2013/ ...