• mysql之存储引擎和文件配置


    (查看系统服务,在运行里输入services.msc)

    补充:将mysql做成系统服务:mysqld --install

              取消:mysqld --romove

          在服务中可以直接鼠标操作mysql服务的启动与停止
          在cmd中也可以操作
            net start mysql
            net stop mysql

    一 存储引擎

        我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等

        存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

        在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql
        数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据

     什么是存储引擎:在数据库中,表的类型是不同的,而存储引擎就是表的类型。针对不同的存储引擎,数据库也有不同的处理方法。

      show engines:查看一个存储引擎。

    mysql> show engines;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
    | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
    | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)
    

     连接池:实现并发,连接池允许多个客户端使用缓存起来的连接对象,这些对象是可以连接数据库的,他们之间是共享的,可以被重复的使用。

                     

      详情请访问:http://www.importnew.com/8179.html

     常用的存储引擎:

      innodb:支持事物,支持事物安全表,支持行锁定和外键。

               1 外键约束对子表的意义:如果在主表上找不到外键的候选键时,则不允许在字表上进行insert/update。

       2外键约束对主表的意义:在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的 on update/on delete子句

          3 innodb支持的四种方式:

            3.1.1 cascade方式,在主表上update/delete记录时,同步update/delete掉子表的匹配记录。

            3.1.2 外键的级联删除: 如果主表上的记录删除,则子表对应的记录则会自动删除。

    FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)
                                  ON DELETE CASCADE

          3.2.1 set null方式 , 在主表上update/delete记录时,将子表上匹配记录的列设为null

               3.2.2 要注意子表的外键不能为not null

         FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)
                                  ON DELETE SET NULL

            3.3 restrict方式:拒绝对主表进行删除或更新的操作

            3.4 no action方式 , 在MySQL中同restrict,如果子表中没有匹配的记录,则不允许对主表对应候选键进行update/delete操作

       什么是事务:单个逻辑单元的执行的一系列操作,要么都成功,要么都不会成功。详情访问:https://zhidao.baidu.com/question/1689625077782008388.html

    mysql> create table t1(id int)engine=innodb;
    Query OK, 0 rows affected (0.69 sec)
    
    mysql> show create table t1;
    +-------+--------------------------------------------------------------------------------------+
    | Table | Create Table                                                                         |
    +-------+--------------------------------------------------------------------------------------+
    | t1    | CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------------------------------------------------------+
    1 row in set (0.05 sec)
    

      myisam:啥都不支持,速度非常的快,将表的信息分成了3个文件来存放。

    mysql> create table t4(id int)engine=myisam;
    Query OK, 0 rows affected (0.13 sec)
    
    mysql> show create table t4;
    +-------+--------------------------------------------------------------------------------------+
    | Table | Create Table                                                                         |
    +-------+--------------------------------------------------------------------------------------+
    | t4    | CREATE TABLE `t4` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------------------------------------------------------+
    1 row in set (0.03 sec)
    

      blackhole:只有一个表结构文件,没有数据,是一个黑洞的存储引擎,存完数据查看也是没有数据

    mysql> create table t3(id int)engine=blackhole;
    Query OK, 0 rows affected (0.17 sec)
    
    mysql> show create table t3;
    +-------+-----------------------------------------------------------------------------------------+
    | Table | Create Table                                                                            |
    +-------+-----------------------------------------------------------------------------------------+
    | t3    | CREATE TABLE `t3` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=BLACKHOLE DEFAULT CHARSET=utf8 |
    +-------+-----------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

      memory:只有一个表结构文件,数据全部都存放在内存中,关机后数据就会丢失。

    mysql> create table t2(id int)engine=memory;
    Query OK, 0 rows affected (0.12 sec)
    
    mysql> show create table t2;
    +-------+--------------------------------------------------------------------------------------+
    | Table | Create Table                                                                         |
    +-------+--------------------------------------------------------------------------------------+
    | t2    | CREATE TABLE `t2` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=MEMORY DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    详情请访问:http://blog.csdn.net/zhangyuan19880606/article/details/51217952

    s:查看当前客户端和服务端的字符编码。

    foregin keys:建立表于表之间的关系。

    二 文件配置

     方法如下:

    #在mysql的解压目录下,新建my.ini,然后配置
    #1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
    [mysqld]
    ;skip-grant-tables
    port=3306
    character_set_server=utf8
    default-storage-engine=innodb
    innodb_file_per_table=1
    
    
    #解压的目录
    basedir=E:mysql-5.7.19-winx64
    #data目录
    datadir=E:my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
    
    
    
    #2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
    [client]
    port=3306
    default-character-set=utf8
    user=root
    password=123
    
    #3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
    [mysql]
    ;port=3306
    ;default-character-set=utf8
    user=egon
    password=4573
    
    
    #!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
    
  • 相关阅读:
    使用vagrant一键部署本地php开发环境(一)
    产品化机器学习的一些思考
    突破、进化,腾讯云数据库2018全年盘点
    WebGL 纹理颜色原理
    如何定制Linux外围文件系统?
    一文了解腾讯云数据库SaaS服务
    如何正确的选择云数据库?
    Node.js 进程平滑离场剖析
    Git合并不同url的项目
    mariadb 内存占用优化
  • 原文地址:https://www.cnblogs.com/fangjie0410/p/7701210.html
Copyright © 2020-2023  润新知