`
victorwmh
  • 浏览: 213910 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

mysql使用过程中常见问题

阅读更多

使用mysql数据库过程中,经常需要注意的一些问题,在此稍作整理记录,以当个人备录之用。

 

查看mysql版本的几种方法:

mysql -V;

mysql> status;

mysql --help | grep Distrib;

mysql> select version();

 

1、创建数据时,字符集问题。

     创建数据库除数据库名外,一般还会有Database Charset和Database Collation设置。

     Database Charset 顾名思义,是选择数据存储时用的字符集,   

     Database Collation则主要是设置是否区分大小写,以gbk字符集为例,它包含gbk_bin和gbk_chinese_ci二个选项。

     gbk_bin是二进制存储,区分大小写的。
     gbk_chinese_ci不区分大小写。

 

2、char varchar的区别

     char是定长的,varchar是变长的。varchar2应该是varchar的升级,似乎只有ORACLE才有。

     char定长存储,速度快,但是存在一定的空间浪费,适用于字段不是很大,对速度要求高的场合。速度快是因为其在物理上是按定长存储的,这样,就可以根据偏移址一次取出固定长度的字符。

     varchar变长存储,所以效率不如char。varchar在存储时,在物理上要先存储该字段的实际长度,然后才是内容。这样读取的时候,就要读取两次,一次读它的长度,然后才是内容。所以它的访问速度会比char慢一些。但它可以节省空间。 

     由于mysql自身的特点,如果一个数据表存在varchar字段,则表中的char字段将自动转为varchar字段。在这种情况下设置的char是没有意义的。所以要想利用char的高效率,要保证该表中不存在varchar字段;否则,应该设为varchar字段。

 

3、InnoDB和MyISAM比较

     InnoDB和MyISAM是在使用MySQL最常用的两个表类型。

     MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。

     InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

     对于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。

    基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。

    MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

    MyIASM是IASM表的新版本,有如下扩展:
         二进制层次的可移植性。
         NULL列索引。
          对变长行比ISAM表有更少的碎片。
         支持大文件。
         更好的索引压缩。
         更好的键吗统计分布。
         更好和更快的auto_increment处理。



  以下是一些细节和具体实现的差别:

         1.InnoDB不支持FULLTEXT类型的索引。
         2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数
            即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
         3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
         4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
         5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的
            InnoDB特性(例如外键)的表不适用。

    另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
分享到:
评论

相关推荐

    MySQL 安装常见问题

    ### MySQL 安装常见问题详解 #### 一、卸载MySQL的彻底方法 在尝试重新安装MySQL时,可能会遇到“Could not start the...通过以上步骤,你可以有效解决MySQL安装过程中遇到的多种常见问题,确保MySQL服务的正常运行。

    mysql问题,常见的mysql面试问题

    ### MySQL常见面试问题详解 #### 1. MySQL简介与特性 ...以上内容涵盖了MySQL面试中常见的几个问题及其解答思路。希望这些知识点能够帮助你更好地理解和掌握MySQL的相关知识,并在面试中表现出色。

    MySQL常见问题及解决方法

    MySQL常见问题及解决方法 MySQL 是一种关系型数据库管理系统,它广泛应用于 web 应用程序中。...这些问题和解决方法都是 MySQL 使用过程中常见的问题,希望能够帮助用户解决问题,提高 MySQL 使用效率。

    MySQL存储过程的异常处理方法

    首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个分号(;)而不会导致命令提前结束。存储过程的定义如下: ```sql CREATE PROCEDURE ...

    MySQL数据库教学中常见问题的探讨.pdf

    ### MySQL数据库教学中常见问题及解决方案 #### 一、引言 随着信息技术的快速发展,数据库技术已成为信息时代不可或缺的一部分。MySQL作为一种开源的关系型数据库管理系统,因其简单易用、高效稳定的特点,在众多...

    mysql_refman-5.6-en.a4.pdf

    - **FAQs**:常见问题解答,提供了针对MySQL使用过程中常见问题的答案。 - **Linux/Unix Platform Guide**:Linux/Unix平台指南,介绍了在这些平台上安装和使用MySQL的最佳实践。 - **Windows Platform Guide**:...

    mysql常见问题及解决方案(自己经验和网上总结)

    主要针对MYsql常见问题的图文解释,包括安装、卸载、到BCB连接和调用BCB等。

    mySQL存储过程调用

    在IT领域,尤其是在数据库管理和Web开发中,MySQL存储过程与PHP的结合应用是十分常见且重要的技术点。根据给定的文件信息,我们将深入探讨如何在PHP中调用MySQL存储过程,这一知识点对于理解数据库自动化任务、提高...

    MySQL数据库系统中文乱码问题及解决方案.pdf

    MySQL数据库系统中文乱码问题是指在使用MySQL数据库系统时,中文字符在存储、传输和显示过程中出现乱码的问题。这种问题的出现是由于字符集和编码方式的不兼容所致。 在数据库设计和开发中,字符集和编码方式的选择...

    mysql使用中需要注意事项

    在使用MySQL时,有一些常见的注意事项和错误,初学者在使用过程中应多加注意。以下是使用MySQL时需要注意的一些关键知识点。 1. MySQL的配置 配置MySQL主要涉及几个核心参数:服务器的主机名(或IP地址)、端口、...

    MySQL存储过程编程教程.pdf

    3. 在应用程序中使用存储过程:了解如何在不同的编程语言环境中(如PHP、Java、Perl、Python和.NET等)调用和利用存储过程,实现跨语言的数据库操作。 4. 优化存储过程程序:关注存储过程的安全性,学习基本和高级...

    MySql 分页存储过程以及代码调用

    MySQL数据库在处理大数据量时,分页查询是一种非常常见的优化手段,它可以帮助用户按需加载数据,避免一次性加载大量数据导致的性能问题。本篇文章将深入探讨MySQL中的分页存储过程及其代码调用方法。 首先,理解...

    mysql存储过程实现分页

    MySQL中的存储过程是一种用户定义的过程,在其中可以封装一系列SQL语句或控制流语句,以便在需要时调用。存储过程可以在服务器端执行,从而提高性能和安全性。通过存储过程实现分页功能,可以极大地简化前端代码,并...

    mysql安装和使用

    "参考资料.txt"可能包含了安装过程中或使用MySQL时的一些附加信息,例如配置文件的修改、安全设置建议或者常见问题解答。 在实际使用中,了解SQL语言是必不可少的。SQL(结构化查询语言)用于管理关系数据库,包括...

    MySQL常见的10个典型错误

    为了避免此类问题,需要确保主从服务器的时区设置一致,并且在复制配置中使用“ROW”格式的二进制日志,这样可以复制实际值,从而对时区变化保持抵抗性。 4. 配置错误 不当的配置可能会严重影响MySQL的性能和稳定...

    mysql_mysql常见的十个问题_

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理数据。...了解并掌握这些常见问题及其解决方案,将有助于你在MySQL的使用过程中更加得心应手。持续学习和实践,将使你成为更优秀的数据库管理员。

    MYSQL常见问题总结

    在使用MySQL的过程中,用户可能会遇到各种各样的问题,尤其是在Linux系统中进行管理时。以下是一些常见的MySQL问题及其解决方案: 1. **安装与配置** - 在Linux系统中,MySQL的安装通常通过包管理器(如`apt`或`...

    Java调用Mysql存储过程

    在Java编程中,调用MySQL存储过程是一种常见的数据库交互方式,尤其在处理复杂业务逻辑或大量数据操作时。本文将详细讲解如何通过Java来执行MySQL的存储过程。 首先,了解存储过程的基本概念。存储过程是预编译在...

Global site tag (gtag.js) - Google Analytics