MyISAM

mysql 错误1067:进程意外终止

好久不见. 提交于 2020-07-28 08:40:07
Bug现场 : mysql 1067 问题描述:mysql在启动时,出现1067异常 查看报错: 首先,去查看你mysql出现了什么问题,找到报错, 再去解决,步骤如下 先去你安装mysql的存放位置进入bin, 点击路径,输入cmd,跳出命令窗口 然后输入命令,就会显示报错 mysqld --console 正常是如图显示: 原因 :可能误删除mysql的数据库 确认步骤: 1) 确定数据库文件位置 2)确定数据库文件是否存在 解决方案 只要找有安装此软件的人, 把对应的缺失的文件复制一份即可 然后再打开服务, 点击启动。mysql服务正常启动。 或者还有一种情况没有误删,就是报错 进入MySql的安装目录中的 my.ini ,进行利用编辑器进行修改-> : default-storage-engine=INNODB 改成 MYISAM 就可以了。 马上再去开启MySql服务就可以顺利开启了。 看完恭喜你,又知道了一点点!!! 你知道的越多,不知道的越多! ~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!! 来源: oschina 链接: https://my.oschina.net/ithuang/blog/4276223

理解MySQL——索引与优化

非 Y 不嫁゛ 提交于 2020-07-27 22:26:15
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-Tree索引,则只需要进行log100(10^6)=3次页面读取,最坏情况下耗时30ms。这就是索引带来的效果,很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引。进入正题: 第二章、索引与优化 1、选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则: (1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。 (2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。 (3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL

Mysql锁与事务隔离级别

纵饮孤独 提交于 2020-07-27 10:07:09
1.1 锁的分类 从性能上分为乐观锁和悲观锁 1.1.1 乐观锁 通过版本控制来实现:在表中加个字段,每次操作完成之后对版本进行更新。解决了多个线程同时操作时数据覆盖的问题,在性能上稍快 1.1.2 悲观锁 多个线程同时执行时,实际上是有个等待的过程,后面到的线程需要等待前面的资源执行完成,在性能上稍差 从对数据库操作的类型分:读锁和写锁 从粒度:表锁和行锁 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响 写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁 1.2 三把锁 1.2.1 表锁(偏度) 表锁偏向myIsam存储引擎,开销小,加锁快,发生锁冲突的概率高 Myisam:支持表锁 innodb:支持行锁 1.2.1.1 基本操作 建表并插入数据 DROP TABLE IF EXISTS ` locktest ` ; CREATE TABLE ` locktest ` ( ` id ` int ( 11 ) NOT NULL , ` name ` varchar ( 255 ) DEFAULT NULL , PRIMARY KEY ( ` id ` ) ) ENGINE = MyISAM DEFAULT CHARSET = utf8 ; INSERT INTO ` locktest ` VALUES ( '1' , 'zhangsan' ) ;

用了这么多年MySql,这些好习惯你用过哪些

三世轮回 提交于 2020-07-27 07:07:39
一:新建表和字段建议: 1.所有数据表和字段要有清晰的注释,字段说明   说明:不管是创建者还是其他开发或者后续维护者都能清楚知道数据表和字段定义的含义 2.表名、字段名使用小写字母或数字,禁止出现数字开头   说明:MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写,为了避免出现不必要的麻烦,统一使用小写 3.每个列都设置为not null(如果列为BLOB/TEXT类型的,则这个列不能设置为NOT NULL),且定义默认值   说明:3.1:NOT IN、!= 等负向条件查询在有 NULL 值的情况下返回非空行的结果集   3.2:使用 concat 函数拼接时,首先要对各个字段进行非 NULL 判断,否则只要任何一个字段为空都会造成拼接的结果为 NULL   3.3:当用count函数进行统计时,NULL 列不会计入统计   3.4:因为NULL的列使得索引,索引统计和值比较都更复杂,可为NULL的列会使用更多的存储空间,在mysql里也需要特殊处理,当可为NULL的列被索引时,每个索引记录需要一个额外的字节,如果计划在列上建索引,应该避免将列设计为NULL。 4.每个表有自增列id且为主键,使用无符号类型unsigned,不作业务逻辑使用   说明:4.1:避免存储负值,且扩大了表示范围   4.2:如果使用非自增主键(如果身份证号或学号等)

MySQL学习笔记(16):命令行工具

谁说胖子不能爱 提交于 2020-07-27 06:00:19
本文更新于2020-06-14,使用MySQL 5.7,操作系统为Deepin 15.4。 目录 myisamchk——MyISAM表维护工具 myisampack——MyISAM表压缩工具 mysql——客户端连接工具 mysqladmin——MySQL管理工具 mysqlbinlog——日志管理工具 mysqlcheck——表维护工具 mysqldump——数据导出工具 mysqldumpslow——慢查询日志汇总工具 mysqlhotcopy——MyISAM热备份工具 mysqlimport——数据导入工具 mysqlshow——数据库对象查看工具 perror——错误代码查看工具 replace——文本替换工具 在指定参数选项时有两种方式: “-”+单个缩写字符+值,值前可加上空白符(“-p”选项例外,若加上则认为稍后输入密码,空白后面的值并不被认作密码)。 “--”+完整单词+“=”+值 所有工具会使用一些通用选项,通用选项可查看“mysql”小节。 myisamchk——MyISAM表维护工具 myisamchk [options] tablename options选项如下: -r, --repair:修复表。 -o, --safe-recover:更安全的修复表。 myisampack——MyISAM表压缩工具 使用很高的压缩率对MyISAM存储引擎的表进行压缩

一文带你了解 MySQL 中的各种锁机制!

橙三吉。 提交于 2020-07-27 00:02:26
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。 行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁. 特点 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 用法 共享锁(s 锁 读锁) 表级锁 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。 最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为共享锁和排他锁. 特点 开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。 用法 共享锁(s 锁 读锁) 页级锁 页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。 表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。BDB支持页级锁 特点 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 乐观锁和悲观锁的思想 在数据库的锁机制中介绍过,数据库管理系统(DBMS

MySQL 压力测试工具

早过忘川 提交于 2020-07-26 03:38:55
一、MySQL自带的压力测试工具——Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据,系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。 1、更改其默认的最大连接数 在对MySQL进行压力测试之前,需要更改其默认的最大连接数,如下: [root@mysql ~]# vim /etc/my.cnf ................ [mysqld] max_connections=1024 [root@mysql ~]# systemctl restart mysqld #查看最大连接数 mysql> show variables like 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 1024 | +-----------------+-------+ 1 row in set (0.00 sec)

热乎乎的蚂蚁金服面经分享,offer已到手建议收藏(Java岗、附答案解析)

岁酱吖の 提交于 2020-07-25 14:02:05
1.幸运而匆忙的一面 一面完等了差不多半个月才突然接到二面面试官的电话。 一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别? ArrayList 是一个可改变大小的数组。 当更多的元素加入到ArrayList中时,其大小将会动态地增长。内部的元素可以直接通过get与 set方法进行访问,因为ArrayList本质上就是一个数组. LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方 面弱于ArrayList。 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那 么对比将失去意义。 什么情况会造成内存泄漏? 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连; 其次,这些对象是无用的,即程序以后不会再使用这些对象。 如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC 回收,然而它却占用内存。 什么是线程死锁,如何解决? 产生死锁的条件有四个: 互斥条件 :所谓互斥就是进程在某一时间内独占资源。 请求与保持条件 :一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件 :进程已获得资源,在末使用完之前,不能强行剥夺。 循环等待条件

面试必问之mysql基础

北战南征 提交于 2020-07-25 10:04:35
mysql存储引擎 如何选择mysql存储引擎 先得了解下各个存储引擎区别 功能 MylSAM MEMORY InnoDB Archive 功能 MylSAM MEMORY InnoDB Archive 存储限制 256TB RAM 64TB None 支持事务 No No Yes No 支持全文索引 Yes No No No 支持树索引 Yes Yes Yes No 支持哈希索引 No Yes No No 支持数据缓存 No N/A Yes No 支持外键 No No Yes No 可以根据以下的原则来选择 MySQL 存储引擎: 如果要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择。 如果数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的 MEMORY 引擎中,MySQL 中使用该引擎作为临时表,存放查询的中间结果。 如果只有 INSERT 和 SELECT 操作,可以选择Archive 引擎,Archive 存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive 存储引擎非常适合存储归档数据,如记录日志信息可以使用 Archive 引擎。 提示:使用哪一种引擎要根据需要灵活选择

MYSQL-innodb性能优化几个点

南楼画角 提交于 2020-07-25 09:47:44
MYSQL-innodb 性能优化 几个点 数据库 常用 参数 MYSQL 数据库的参数配置一般在 my.ini 配置(部分参数也可以用 set global 参数名 = 值 做临时调整,重启后失效),配置完后需要重启数据库才生效。 参数 1 : slow_query_log = 0|1 说明 : 开关慢查询日志。 slow_query_log_file = 为存放路径; long_query_time = 记录超过的时间,默认为 10s 。 参数 2 : join_buffer_size = MB 说明: join buffer 存放基于每 thread 的连接表信息,连接时,只需访问 join buffer , 不需要再去有并发机制保护的 cache. 参数 3 : Sort_Buffer_Size = MB 说明 : Sort_Buffer_Size 是一个 connection 级参数,每个 connection 第一次需要使用这个 buffer 的时候,一次性分配设置的内存。 Sort_Buffer_Size 并不是越大越好,由于是 connection 级的参数,过大的设置 + 高并发可能会耗尽系统内存资源。 官网 文档说 “On Linux, there are thresholds of 256KB and 2MB where larger values may