MyISAM

MySQL 数据库性能优化之缓存参数优化

戏子无情 提交于 2019-12-01 03:59:18
MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化。 query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache 功能,MySQL在接受到一条select语句的请求后,如果该语句满足Query Cache的要求(未显式说明不允许使用Query Cache,或者已经显式申明需要使用Query Cache),MySQL 会直接根据预先设定好的HASH算法将接受到的select语句以字符串方式进行hash,然后到Query Cache 中直接查找是否已经缓存。也就是说,如果已经在缓存中,该select请求就会直接将数据返回,从而省略了后面所有的步骤(如 SQL语句的解析

MySQL insert语句慢查询的优化

自作多情 提交于 2019-12-01 03:09:59
近期发现MySQL slow log 里面有很多慢查询,而分析慢查询日志发现大量的慢查询是insert语句的。在高峰期(早上10点左右)半小时的慢查询量可以到28G左右。遂决定优化 优化方法: 1、 一个客户端在一个时候要插多条数据,那么用多个values insert into t1 values(...),(...),(...) 如果是往一个非空的表里插数据,可调节bulk_insert_buffer_size(缺省为8388608字节=8M) 2、 如果多个客户端在同时插许多条数据,那么用insert delayed语句 利:客户端马上返回,数据排成一队;数据整齐的写到一个块里,而不是分散。 弊:如果这个表被查获删数据,那么插入会变慢,另外,为这个表起一个handler线程来处理这些数据也要耗费一些额外资源 待插的数据放在内存里,一旦数据库被意外终止(如kill -9),那么数据会丢失。 这个方法只适用于myisam,memory,archive,blackhole引擎类表。 可调节delayed_insert_limit(缺省为一次100条) delayed_insert_timeout(缺省为300)秒内,若无新的insert delayed语句,则handler线程退出。 delayed_queue_size(缺省为1000条)一旦满了,客户端的insert

MySQL table is marked as crashed

两盒软妹~` 提交于 2019-12-01 03:01:25
问题 I fairly new to MySQL database. I am repeatedly seeing an error from MySQL saying the table is marked as crashed and should be repaired. However I am able to repair the crashed table by using the command myisamchk. By the way, I am using MYISAM database engine in MySQL. I just wanted to know under what circumstances would a DB table crash and how I can prevent it from happening again? I am connecting to MySQL(5.0) database from Tcl (8.5) script using mysqltcl library (3.0). 回答1: MyISAM tables

mysql 中的索引

怎甘沉沦 提交于 2019-12-01 01:59:38
转载于: https://www.cnblogs.com/songwenjie/p/9410009.html 什么是索引 索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构 ——《高性能MySQL》 我们需要知道索引其实是一种数据结构,其功能是帮助我们快速匹配查找到需要的数据行,是数据库性能优化最常用的工具之一。其作用相当于超市里的导购员、书本里的目录。 索引类型 可以使用 SHOW INDEX FROM table_name; 查看索引详情 主键索引 PRIMARY KEY 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。 注意:一个表只能有一个主键 唯一索引 UNIQUE 唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引 可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引 普通索引 INDEX 最基本的索引,它没有任何限制。 可以通过 ALTER TABLE table_name ADD INDEX index_name (column); 创建普通索引 组合索引 INDEX 组合索引,即一个索引包含多个列

表操作——存储引擎介绍

泪湿孤枕 提交于 2019-12-01 01:55:19
表操作——存储引擎介绍 一、什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用excel,处理图片用png等。 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方 法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和 操作此表的类型) 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql 数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据 自己的需要编写自己的存储引擎。 SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每个数据库都有这么多存储引擎。MySQL的插件式存储引擎可以让存储引擎层的开发人员设计他们希望的存储层,例如,有的应用需要满足事务的要求;有的应用则不需要对事务有这么强的要求;有的希望数据能持久存储,有的只希望放在内存中,临时并快速地提供对数据的查询。 二、mysql支持的存储引擎 MariaDB [(none)]>

my.cnf参数说明

試著忘記壹切 提交于 2019-12-01 01:32:21
MySQL 5.7数据库参数优化 连接相关参数 max_connections: 允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000 max_connect_errors: 如果客户端尝试连接的错误数量超过这个参数设置的值,则服务器不再接受新的客户端连接。可以通过清空主机的缓存来解除服务器的这种阻止新连接的状态,通过FLUSH HOSTS或mysqladmin flush-hosts命令来清空缓存。这个参数的默认值是100,一般将该参数设置为100000。 interactive_timeout: Mysql关闭交互连接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400 wait_timeout: Mysql关闭非交互连接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400 skip_name_resolve: 如果这个参数设为OFF,则MySQL服务在检查客户端连接的时候会解析主机名;如果这个参数设为ON,则MySQL服务只会使用IP,在这种情况下,授权表中的Host字段必须是IP地址或localhost。 这个参数默认是关闭的 back_log: MySQL服务器连接请求队列所能处理的最大连接请求数,如果队列放满了,后续的连接才会拒绝

[MySQL] 5.索引(三)——聚簇索引

与世无争的帅哥 提交于 2019-11-30 22:35:21
聚簇索引 聚簇索引是一种数据存储方式,InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。当表有聚簇索引时,它的数据行实际上存放在索引的叶子页中(叶子页包含了行的全部数据,节点页只包含了索引列)。“聚簇”表示数据行和相邻的键值紧凑的存储在一起。一个表只能有一个聚簇索引。 InnoDB会选择主键列进行聚簇索引,如果没有定义主键,InnoDB会选择唯一的非空索引代替。如果还是没有,InnoDB会隐式定义一个主键来作为聚簇索引。InnoDB只聚集在同一个页面中的记录。 InnoDb的普通索引(二级索引)的叶子结点中存放的是主键的值,所以需要先查询普通索引(二级索引)的叶子节点找到对应的主键值,然后再根据主键值去聚集索引中查询到对应的数据。 非聚集索引的索引与数据是存在不同文件的。 聚簇索引优点: 可以把相关的数据保存在一起,例如实现电子邮箱时,可以根据用户ID来聚集数据,这样只需要从磁盘读取少数数据页就能获取某个用户的全部邮件,减少磁盘I/O次数。 数据访问更快:聚簇索引同时将索引和数据保存在同一个B-Tree中,因此从聚簇索引中获取数据要比非聚簇索引更快。 使用覆盖索引扫描的查询可以直接使用节点中的主键值。 聚簇索引缺点: 聚簇索引最大限度地提高了I/O密集型应用的性能。如果数据全放放在内存中,那么聚簇索引就没了优势。 插入速度严重依赖于插入顺序

[MySQL] 5.索引(三)——聚簇索引

旧巷老猫 提交于 2019-11-30 22:07:15
聚簇索引 聚簇索引是一种数据存储方式,InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。当表有聚簇索引时,它的数据行实际上存放在索引的叶子页中(叶子页包含了行的全部数据,节点页只包含了索引列)。“聚簇”表示数据行和相邻的键值紧凑的存储在一起。一个表只能有一个聚簇索引。 InnoDB会选择主键列进行聚簇索引,如果没有定义主键,InnoDB会选择唯一的非空索引代替。如果还是没有,InnoDB会隐式定义一个主键来作为聚簇索引。InnoDB只聚集在同一个页面中的记录。 InnoDb的普通索引(二级索引)的叶子结点中存放的是主键的值,所以需要先查询普通索引(二级索引)的叶子节点找到对应的主键值,然后再根据主键值去聚集索引中查询到对应的数据。 非聚集索引的索引与数据是存在不同文件的。 聚簇索引优点: 可以把相关的数据保存在一起,例如实现电子邮箱时,可以根据用户ID来聚集数据,这样只需要从磁盘读取少数数据页就能获取某个用户的全部邮件,减少磁盘I/O次数。 数据访问更快:聚簇索引同时将索引和数据保存在同一个B-Tree中,因此从聚簇索引中获取数据要比非聚簇索引更快。 使用覆盖索引扫描的查询可以直接使用节点中的主键值。 聚簇索引缺点: 聚簇索引最大限度地提高了I/O密集型应用的性能。如果数据全放放在内存中,那么聚簇索引就没了优势。 插入速度严重依赖于插入顺序

mysql引擎区别

天涯浪子 提交于 2019-11-30 21:51:19
数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。 MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具

mysql引擎区别

家住魔仙堡 提交于 2019-11-30 21:42:23
数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。 MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具