MyISAM

Mysql表操作

老子叫甜甜 提交于 2019-11-28 01:15:51
一、Mysql存储引擎 1.innodb MySql 5.6 版本默认的存储引擎。查询速度较myisam更慢,但是更安全InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。 2.myisam MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。 3.memory 在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失 4.blackhole 黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。 二、创建表的完整语法 #语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); #注意: 1. 在同一张表中,字段名不能相同 2. 宽度和约束条件可选,字段名和类型是必须的 3. 最后一个字段后不能加逗号! # 补充: # 1

MySQL创建数据表时设定引擎MyISAM/InnoDB

≯℡__Kan透↙ 提交于 2019-11-27 23:53:49
我在配置mysql时将配置文件中的默认存储引擎设定为了InnoDB。今天查看了MyISAM与InnoDB的区别,在该文中的第七条“MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。”作为一个地理信息系统专业的学生(其实是测绘专业)来讲,能存储空间数据的数据库才是好数据库,原谅我是数据库小白的身份。 有三种方式可以设定数据库引擎: (1)修改配置文件 将安装目录下~\MySQL\mysql-5.6.31-winx64的my.int配置文件打开,在[mysqld]的后面修改或添加(如果你之前未设置)下列语句: default-storage-engine=INNODB 而我会自己修改为MyISAM,以后在你创建数据表时默认引擎为当前设置。 mysql> create table test( -> id int(10) unsigned not null auto_increment, -> name varchar(10) character set utf8, -> age int(10), -> primary key(id) -> ) -> engine=MyISAM -> ; 上述语句为创建表格的语句,没有什么可说的。 接下来查询一下,创建的表格的引擎类别。 show create

数据库之数据类型

瘦欲@ 提交于 2019-11-27 21:56:07
一:数据库基础 【1】存储引擎:不同的数据类型对应不同的处理机制 (1)innodb:默认存储引擎 相比于myisam来说 读取速度较慢 (2)myisam:5.1之前用的版本 对数据的操控安全性不如innodb (3)memory:临时存储引擎 数据存入内存 断电数据消失 (4)blackhole:黑洞引擎 无论存放什么数据 都会立马消失 # 查看存储引擎 show engines; create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=memory; create table t4(id int)engine=blackhole; insert into t1 values(1); insert into t2 values(2); insert into t3 values(3); insert into t4 values(4); 图解一: Innodb:支持事务 行锁 外键 在安全性上比myisam更加高 图解二: t1: (1)frm:表结构 (2)ibd:真实存放的数据 t2: frm:表结构 MYD:真实存放的数据 MYI:索引 PS:因为其有索引 所以查找数据速度比较快 t3/t4: (1)frm:表结构

数据库的简单知识梗概

こ雲淡風輕ζ 提交于 2019-11-27 21:40:40
一、数据库优化 方法:    MySQL可以建分表,读写分离,建索引,一般经常更新的字段不适合建索引,建索引会降低数据非查询操作的效率。主键是一种特殊的索引。   导致索引失效的情况:1.如果条件中有or,即使其中有条件带索引也不会使用到。2.对于多列索引,不是使用的第一部分,则不会使用索引。3.like查询是以%开头,而不是以%结尾。4.如果索引列类型是字符串,一定要在条件中将数据使用引号引用起来,否则不使用索引。5.如果MySQL估计使用全表扫描要比使用索引快,则不使用索引。 二、MySQL引擎的种类和区别 ①种类:MyISAM、InnoDB、MEMORY、MERGE、Archive、Blackhole、CSV、Federate、Merge、NDB集群引擎、第三方引擎:OLTP类引擎、面向列的存储引擎、社区存储引擎。 ②区别: A、MyISAM是MySQL5.1及之前的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。MyISAM表还支持3中不同的存储格式:静态表、动态表、压缩表。 B、InnoDB存储引擎提供了具有提交、回滚、和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。InnoDB的存储方式为:使用共享表空间存储;使用多表空间。 C

【MySQL】存储引擎

浪子不回头ぞ 提交于 2019-11-27 21:29:22
原文: http://blog.gqylpy.com/gqy/245 " 目录 #. MySQL支持的存储引擎 1. InnoDB 2. MyISAM 3. NDB 4. Memory 5. Infobright 6. NTSE 7. BLACKHOLE MySQL中的库即文件夹,表即文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制.(如:处理文本用txt类型,处理表格用excel, 处理图片 用png等) 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. PS:存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库 中数据 的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据库存储管理机制都是一样的,而MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。 ![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/f065e887-be54-4608-a236-c400c1478427.png) SQL解释器

MySQL常用维护命令和操作

风格不统一 提交于 2019-11-27 20:36:47
MySQL数据库安装后,除了包括 MySQL服务器 进程管理外,还提供了大量工具用于管理和维护MySQL服务器的其它工作。下面 PHP程序员雷雪松 介绍的这些命令都是在MySQL交互界面以外的命令行中执行的。MySQL常用维护命令和操作主要包括对MySQL数据库状态的查看、性能的优化,MySQL表的检查、分析、修复、优化,MySQL数据库的导出导入、热备份等。 myisampack :压缩MySQL MyISAM表以产生更小的只读表的一个工具。 myisampack工具可以压缩MyISAM表来解决空间占用过大的问题。myisampack分别压缩表中的每一列。通常,myisampack可以将数据文件压缩到40%-70%。当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。 mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本。 mysqlaccess是为MySQL提供的一个诊断工具。它检查访问权限的主机名、用户名和数据库组合。请注意 mysqlaccess检查只使用user、db和host表的访问。它不检查在tables_priv、columns_priv或procs_priv表中指定的表、列或者程序的权限。 mysqladmin :用于管理MySQL服务器的客户端。 mysqladmin执行管理操作的客户程序

Query time result in MySQL w/ PHP

☆樱花仙子☆ 提交于 2019-11-27 19:30:47
Is there a way that I can get the time of a MySQL query (specifically with PHP)? The actual time it took to complete the query, that is. Something such as: Results 1 - 10 for brown. (0.11 seconds) I tried to look for an example, to no avail. Here is an example of my code: // prepare sql statement $stmt = $dbh->prepare("SELECT ijl, description, source, user_id, timestamp FROM Submissions WHERE MATCH (ijl, description) AGAINST (?)"); // bind parameters $stmt->bindParam(1, $search, PDO::PARAM_STR); // execute prepared statement $stmt->execute(); For my current full text search using a MyISAM

谈谈数据库中MyISAM与InnoDB区别

别来无恙 提交于 2019-11-27 19:17:52
MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具。 MyISAM表格可以被压缩,而且它们支持全文搜索。它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。 MyIASM是IASM表的新版本,有如下扩展: 二进制层次的可移植性。 NULL列索引。 对变长行比ISAM表有更少的碎片。 支持大文件。 更好的索引压缩。 更好的键吗统计分布。 更好和更快的auto_increment处理。 InnoDB:这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。InnoDB表格速度很快,具有比BDB还丰富的特性, 因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。对 于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin

Should I always prefer MySQL InnoDB over MyISAM?

北慕城南 提交于 2019-11-27 18:35:18
Someone just told me that InnoDB is much better than MyISAM. So when I create a table, should I always try to use InnoDB Engine instead of MyISAM? Or do both have it's big benefits? MyISAM is transactionless and heap-organized. The records are identified by the row offset in the table and the indexes store this offset as a row pointer. InnoDB supports transactions and is index-organized. The records are identified by the value of the PRIMARY KEY (or a hidden internal column is there is no PRIMARY KEY defined) and are stored in a B-Tree . The secondary indexes store the value of the PRIMARY KEY

Mysql changing table engine MyISAM to InnoDB

你说的曾经没有我的故事 提交于 2019-11-27 17:54:14
问题 On my site I have a visitor's table with 10 million rows. Every request to the site inserts row to the table, in case the table is locked (usually in optimize query) visitors can't get into the site The table engine is MyISAM and I want to change it to InnoDB I have few questions: How can I change the table engine without stoping my site from working There is a way to optimize InnoDB table without locking it 回答1: The easiest way is ALTER TABLE table_name ENGINE = InnoDB; If you use InnoDB