Connecteam is a SaaS company that provides an employee management solution for deskless teams. Over the last couple of years, we’ve been growing tremendously and we recently started to face one of the hardest technical challenges: horizontal scaling. In the era of cloud computing, provisioning new resources is a breeze, but handling those resources in an efficient manner and providing a five nines uptime while allowing a fast-paced development environment is not an easy undertaking.
Please join Percona’s Principal Support Escalation Specialist Sveta Smirnova as she presents Troubleshooting Best Practices: Monitoring the Production Database Without Killing Performance on Wednesday, June 27th at 11:00 AM PDT (UTC-7) / 2:00 PM EDT (UTC-4).
During the MySQL Troubleshooting webinar series, I covered many monitoring and logging tools such as:
- General, slow, audit, binary, error log files
- Performance Schema
- Information Schema
- System …
Join Percona’s Senior Operations Engineer, Daniel Kowalewski as he presents Deploying MySQL in Production on Thursday, June 22, 2017 at 11:00 am PDT / 2:00 pm EDT (UTC-7).
Register Now MySQL is famous for being something you can install and get going in less than five minutes in terms of development. But normally you want to run MySQL in production, and at scale. This requires some planning and knowledge. So why not learn the best practices around installation, configuration, deployment and backup?
This webinar is a soup-to-nuts talk that will have you going from zero to hero in no time. It includes discussion …
[Read more]I recently had an opportunity to migrate a customer from a physical server into Amazon’s RDS environment. In this particular case the customers’ platform makes extensive use of MySQL triggers and views. I came across two significant issues that prevented me from following Amazon’s documentation, which basically states “use mysqldump” but doesn’t call out a specific method of dealing with MySQL triggers and views.
Amazon Relational Database Service (Amazon RDS) is a great platform if you’re looking for complete hands-off management of your MySQL environment, but comes at a cost in the area of flexibility, i.e. you don’t have SUPER privilege and this brings up additional challenges.
- You need to ensure you set log_bin_trust_function_creators=1 ( by default this is off, 0).
- You need to clean up your mysqldump syntax.
#1 is easy, you simply make a configuration change …
[Read more]MySQL 5.6 has a great many new features, including, but certainly not limited to a number of performance improvements. However, besides the widely talked-about features such as InnoDB support for full text search, optimizer, performance schema improvements and …
[Read more]Two new stories have been published this week and both of them use GlassFish 3.1 in production. If you haven't seen them before, "Stories" is a blog with production use of GlassFish by small, medium, and large users with user questionnaires describing their experience with the rest of the community.
The first story is PointDebate, a "social network company that stir up, engage and give voice to most diverse opinions". They've been following pretty closely all the recent updates of GlassFish and now run the latest 3.1 version (only a month after it was released). They application is built using Java EE 6 and JSF in particular with RichFaces. The full architecture includes MySQL as well as EHCache and uses JMS to "decouple … |
Two new stories have been published this week and both of them use GlassFish 3.1 in production. If you haven't seen them before, "Stories" is a blog with production use of GlassFish by small, medium, and large users with user questionnaires describing their experience with the rest of the community.
The first story is PointDebate, a "social network company that stir up, engage and give voice to most diverse opinions". They've been following pretty closely all the recent updates of GlassFish and now run the latest 3.1 version (only a month after it was released). They application is built using Java EE 6 and JSF in particular with RichFaces. The full architecture includes MySQL as well as EHCache and uses JMS to "decouple … |
I wanted for a while to write about using MySQL Partitioning for Performance Optimization and I just got a relevant customer case to illustrate it. First you need to understand how partitions work internally. Partitions are on the low level are separate table. This means when you're doing lookup by partitioned key you will look at one (or some of) partitions, however lookups by other keys will need to perform lookup in all partitions and hence can be a lot slower. The gain from updates typically comes from having smaller BTREE on the active partition(s) which allows for a lot better fit. Having potentially fewer level in BTREE is not that significant issue.
So lets see at example:
PLAIN TEXT SQL:
- CREATE TABLE `tbl` (
- `id` bigint(20) UNSIGNED AUTO_INCREMENT NOT NULL,
- `uu` varchar(255) DEFAULT NULL, …
Understanding how well your tables and indexes fit to buffer pool are often very helpful to understand why some queries are IO bound and others not - it may be because the tables and indexes they are accessing are not in cache, for example being washed away by other queries. MySQL Server does not provide any information of this type, Percona Server however adds number of tables to Information Schema which makes this information possible. It is just few queries away:
PLAIN TEXT SQL:
- mysql> SELECT `schema` AS table_schema,innodb_sys_tables.name AS table_name,innodb_sys_indexes.name AS index_name,cnt,dirty,hashed,round(cnt*100/index_size,2) fit_pct FROM (SELECT index_id,count(*) cnt,sum(dirty=1) dirty ,sum(hashed=1) hashed FROM innodb_buffer_pool_pages_index GROUP BY …
Innodb/XtraDB tables do benefit from being reorganized often. You
can get data physically laid out in primary key order as well as
get better feel for primary key and index pages and so using less
space,
it is just OPTIMIZE TABLE might not be best way to do it.
If you're running Innodb Plugin on Percona Server with XtraDB you get benefit of a great new feature - ability to build indexes by sort instead of via insertion. This process can be a lot faster, especially for large indexes which would get inserts in very random order, such as indexes on UUID column or something similar. It also produces a lot better fill factor. The problem is.... OPTIMIZE TABLE for Innodb tables does not get advantage of it for whatever reason.
Lets take a look at little benchmark I done by running OPTIMIZE for a second time on a table which is some 10 times larger than amount of memory I allocated for buffer pool:
…
[Read more]