`
qiujiayu
  • 浏览: 174080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL表类型及常见问题总结

阅读更多

MySQL支持6种不同的表类型:BDB、InnoDB、HEAP、ISAM、MERGE以及MyISAM。其中 BDB,InnoDB单独属于一类,称为“事务安全型”(transaction-safe),其余的表类型属于第二类,称为“非事务安全型”(non- transaction-safe)。

事务安全型
BDB
   BDB全称是“Berkeley DB”,它是MySQL具有事务能力的表类型,由Sleepycat Software (http://www.sleepycat.com )开发。BDB表类型提供 了MySQL用户长久期盼的功能,即事务控制能力。在任何RDBMS中,事 务控制能力都是一种极其重要和宝贵的功能。事务控制能力使得我们能够确保一组命令确实已经全部执行成功,或者确保当任何一个命令出现错误时所有命令的执行 结果均被回退。可以想象,在电子银行这类应用中事务控制能力是极其重要的。

InnoDB
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特 性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的 INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。对于支持事物的InnoDB类 型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事务(即使autocommit打 开也可以),将大大提高性能。

非事务安全型
HEAP
   HEAP表是访问数据速度最快的MySQL表,这是因为这类表使用保存在内存中的散列索引。但有极其重要的一点必须注意,如果MySQL或者服务器崩 溃,HEAP表中的数据将会丢失!

ISAM
   ISAM表类型是MyISAM出现之前MySQL的默认表类型,所以现在这种表类型是不推荐使用的,建议改用MyISAM表。

MERGE
   MERGE是一种值得关注的新式表类型,在3.23.25版中提供。MERGE表实际上由一组同样的MyISAM表合并而成。之所以要把多个同样的表合并 成一个,主要是出于性能上的考虑,因为它能够提高搜索速度、提高修复效率、节省磁盘空间。

MyISAM
   MyISAM表类型是MySQL默认的表类型。MyISAM表类型以ISAM为基础,MyISAM表比ISAM表要小,因而占用资源更少。但增加了许多有 用的扩展。 它是存储记录和文件的标准方法.与其他存储引擎比较, MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量 的SELECT,MyISAM是更好的选择。另外,MyISAM类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从Windows系统拷贝 到linux系统中使用。

注意点:
* 4.0以上mysqld都支持事务,包括非max版本。3.23的需要max版本mysqld才能支持事务。

* 创建表时如果不指定type则默认为myisam,不支持事务。可以用 show create table tablename 命令看表的类型。

* 对不支持事务的表做start/commit操作没有任何效果,在执行commit前已经提交

可以执行以下命令来切换非事务表到事务(数据不会丢失),innodb表比myisam表更安全: alter table tablename type=innodb;

*  innodb表不能用repair table命令和myisamchk -r table_name但可以用check table,以及mysqlcheck [OPTIONS] database [tables]

* 启动mysql数据库的命令行中添加了以下参数可以使新发布的mysql数据表都默认为使用事务(只影响到create语句)--default- table-type=InnoDB

*  临时改变默认表类型可以用:

set table_type=InnoDB;

show variables like 'table_type';

或:

c:\mysql\bin\mysqld-max-nt --standalone --default-table-type=InnoDB

*  设置mysql用户密码应该采用如下方式(注意密码的输入方式):

       update user set password=password(‘password’) where user=’root’

*  解决Host 'xxx.xxx.xxx.xxx'  is not allowed to connect to this MySQL server异常

解决方法:

1、 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

 

mysql -u root –p vmware mysql>use mysql; mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;

 

2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;

* 解决JPA自动建表没有生成外键的问题

解决办法:

1、可能是数据库表的默认类型不是InnoDB,所以修改数据库表的默认类型为InnoDB。

2、数据连接的dialect如下设置

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>

分享到:
评论

相关推荐

    mysql常见问题总结

    MySQL常见问题总结 MySQL 是一个广泛使用的关系型数据库管理系统,随着其广泛应用,许多开发者和DBA都需要掌握 MySQL 的相关知识。本资源总结了 MySQL 中常见的问题,涵盖了数据库层面的负载均衡、主从复制、备份、...

    MYSQL常见问题及解答

    ### MySQL常见问题及解答 #### 1. MySQL 数据类型简介 - **`CHAR`、`VARCHAR`、`TEXT`:** 这些都是用来存储文本数据的数据类型。 - `CHAR`:固定长度字符串,适合存储长度固定的字符串,如电话号码。 - `...

    MySQL常见问题总结

    MySQL常见问题总结知识点如下: 1. 数据库应用系统设计 数据库设计遵循一系列步骤,包括:规划、需求分析、概念模型设计、逻辑设计、物理设计、程序编制及调试、运行及维护。这一过程从一开始的需求理解,到最终...

    常见mysql命令总结

    ### 常见MySQL命令总结 #### 数据库备份与恢复 **导出整个数据库** - **命令**: `mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 &gt; 导出的文件名` - **示例**: `mysqldump -u wcnc -p smgp_...

    0.9 MySQL表查询之常见函数

    MySQL表查询之常见函数 MySQL表查询中有多种常见函数,包括单行函数、字符函数、数学函数、日期函数等。这些函数可以对数据库中的数据进行各种操作和处理,实现数据的提取、处理和分析。 单行函数是指对单行数据...

    mysql数据类型转换

    MySQL支持多种数据类型之间的转换,常见的包括: - **二进制类型** (`BINARY`):表示固定长度的二进制字符串。 - **字符类型** (`CHAR()`):表示定长的字符串。 - **日期类型** (`DATE`):表示日期值。 - **时间...

    大牛总结 MySql常见错误集锦

    本篇文章将深入探讨由大牛总结的MySQL常见错误,并提供解决策略。 1. 错误1045: Access denied for user 'username'@'localhost' (using password: YES/NO) 这个错误通常表示用户名或密码不正确,或者是用户没有...

    linux安装mysql与安装后常见的问题总结

    MySQL是一个强大的关系型数据库管理系统,广泛用于存储和处理各种类型的数据。这篇文章将详细介绍在Linux上安装MySQL的过程,并讨论一些安装后可能出现的问题及其解决方案。 首先,让我们从源码安装开始。源码安装...

    MYSQL常见故障分析

    本文将深入探讨MySQL线上常见的一些故障类型及其分析方法。 首先,应用无法获取到连接池的情况,这可能是由于配置不当、连接池设置过小或数据库连接耗尽导致。当数据库响应慢时,通常需要检查SQL执行时间,尤其是慢...

    excel表转换为mysql数据库

    - 创建MySQL数据库和表:在MySQL环境中,创建一个新的数据库并定义一个表结构,确保字段类型与Excel中的数据类型相匹配。 - 导入CSV数据:使用MySQL的`LOAD DATA INFILE`命令,将CSV文件导入到已创建的表中。这一...

    MySQL数据库常见问题分析与研究.pdf

    本资源总结了 MySQL 数据库中 8 大常见问题,并对每个问题进行了深入的研究和分析,提供了具体的解决方案。 问题 1:MySQL 数据库的安装和配置 在安装 MySQL 数据库时,初学者可能会遇到一些问题,例如版本选择...

    java代码将mysql表数据导入HBase表

    在IT行业中,数据库之间的数据迁移是一项常见的任务,特别是在大数据领域,如从传统的SQL数据库(如MySQL)迁移到分布式NoSQL数据库(如HBase)。本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和...

    MySQL常见面试题汇总

    在面试中,MySQL 相关的问题是非常常见的。下面是 MySQL 常见面试题汇总,涵盖索引相关、事务处理、锁机制、SQL 优化等多方面的知识点。 索引相关 索引是一种数据结构,可以帮助我们快速地进行数据的查找。索引的...

    MySQL最新面试题及答案整理汇总版,MySQL常见面试题及答案汇总

    - 常见的数据类型包括`INT`、`VARCHAR`、`DATE`、`TEXT`、`BLOB`等,它们用于存储不同类型的数据,如整数、字符串、日期、文本和二进制大对象。 2. **SQL基本操作** - `SELECT`语句用于查询数据,`FROM`指定表名...

    china_surname[中国姓氏mysql表].7z

    总结来说,“china_surname[中国姓氏mysql表].7z”中的“china_surname.sql”文件揭示了如何在MySQL数据库中有效地管理和组织中国姓氏数据,这对于研究中华姓氏文化、开发相关应用或进行数据分析都具有重要意义。...

    mysql常见错误汇总

    ### MySQL常见错误汇总 在日常使用MySQL的过程中,我们经常会遇到各种各样的错误。这些错误不仅影响数据处理的效率,也可能导致程序逻辑出错。本文旨在总结一些常见的MySQL错误及其解决方案,帮助开发者更好地理解...

    常见MySQL面试题汇总

    MySQL是世界上最受欢迎的关系型数据库管理...这些知识点涵盖了MySQL的基础概念、特性、存储引擎、事务处理、性能优化等多个方面,是MySQL面试中常见的问题。理解并掌握这些内容对于数据库管理员和开发者来说至关重要。

    MySQL学习笔记常见问题以及解决方法

    以下是一些常见的问题及其解决方法。 1. **安装与配置**: - 问题:安装过程中出现错误或无法启动MySQL服务。 - 解决方法:检查系统环境,确保安装路径无中文字符,配置文件(my.ini或my.cnf)设置正确,如端口号...

    MySQL常见面试题答案及总结

    - 垂直分割:根据列的访问频率和数据类型,将表拆分为多个更小的表。 - 水平分割(分片):将数据分布到多个物理表上,通过负载均衡查询。 11. **数据库范式** 范式是数据库设计的基础原则,包括第一范式(1NF)...

Global site tag (gtag.js) - Google Analytics